springboot整合Apollo配置中心(二)

这篇文章主要讲项目和Apollo配置中心的整合。

本地拉取Apollo配置中心

Apollo配置中心是开源在github上面的,本地要想修改,打包需要先拉取到本地:
Apollo配置中心代码
项目拉取到本地之后,使用idea打开,项目结构特别简单,我们要用的东西都在scripts目录下面。重点来看一下:
scripts

  • apollo-kubernetes:apollo在kubernetes容器部署使用的,我们用不到;
  • db/migration: db数据库文件,这就是我们要用来建库的数据库文件;
  • docker-quick-start:在docker容器快速部署使用的, 我们暂时也用不到;
  • sql/delta:用来做版本升级使用的sql,我们直接使用db/migration里面的建表语句来建表,这里的使用不到;
  • build.bat:windows下面的打包脚本;
  • build.sh:linux/Mac下面的打包脚本;

创建config库和portal库

将db/migration里面的sql文件在Navicat执行导入,创建对应的ApolloConfigDB,ApolloPortalDB。
这里注意数据库名称为大写。

打包推送

创建好库之后,如果是在windows环境下打包,首先需要先在idea里面修改build.bat里面关于数据库链接的部分,只需要将原本默认的链接改为你的数据库链接即可。接着就进入到相应项目的目录下,打开命令行窗口,执行build.bat打包,如图:
db.setting

打包完成之后,至 apollo-adminService ,apollo-configService,apollo-portal目录下的/target目录下,将各个目录下生成的 .zip 文件传输到服务器上去,也可以解压之后传输。

启动Apollo

项目放入服务器之后,会有几个问题:

  1. 对应的文件名比较长,每次输入特别烦;
  2. 不知道怎么启动;
    先解决第一个问题,文件名长,使用mv命令修改,如下:
    mv xxx.xxx.xxxx-原名 xxxx-修改后
    第二个问题,启动,在每个项目目录下面都有一个scripts文件夹,里面有startup.sh和shutdown.sh两个shell命令,默认没有执行权限,使用如下命令给予执行权限:
    chmod u+x *.sh
    三个文件夹下可重复同样操作,赋予对应的shell脚本执行权限。然后使用startup.sh分别启动,这里要注意有严格的启动顺序:
    config-serviceadmin-serviceportal-service。每次启动一个,都会有如下提示:

直到看到3个服务都启动成功,然后使用http://x.x.x.x:8070访问Apollo的web页面,访问成功。
至此,Apollo配置中心启动成功。

Apollo配置appid

进入portal控制页面之后,接下来就是要配置项目的appid了,在上一篇体验Apollo的demo的时候,想必都已经很熟悉了,这里就不再赘述。
直接建立自己项目的对应的配置就可以了。

项目引入apoll客户端

服务端配置好之后,接下来要在项目里面引入Apollo的客户端了。
springboot项目直接在pom.xml文件里面引入:
<dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.4.0</version> </dependency>
引入Apollo客户端之后,建立application.properties文件,在文件里面配置如下内容:

#项目的appid,在Apollo里面配置好的
app.id=YOUR-APP-ID
#项目配置中心的地址,比如:x.x.x.x:8080
apollo.meta=http://config-service-url

当然以上内容按照官方文档也可以在其他地方配置,这里我们就暂且按照这种方式来配置。

关于yml文件的处理

接下来是将原来项目里面的配置文件转移到Apollo配置中心去,特别简单,只需要先在Apollo里面新建一个后缀名为.yml的私有的namespace,然后把项目的配置文件直接复制到Apollo中,发布即可。

关于指定namespace

Apollo默认的namespace就是application.properties,如果是自己新建的namespace,则需要启动时指定。

关于启动项目

springboot启动项目时,在项目启动的Application类,加上注解@EnableApolloConfig,该注解的value属性为一个string数组,可以放入你自己写的namespace。比如{“application.yml”,“test.yml”}。

启动项目

以上操作完成之后,启动项目,项目能够正常启动,Apollo和项目的整合就算完成了。当然以上也会有很多的坑,在后续的总结篇中,会对碰到的问题做一个总结。

发布了43 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u013243938/article/details/103246134