• 微服务架构:动态配置中心搭建


    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习!

           在微服务架构中,服务之间有着错综复杂的依赖关系,每个服务都有自己的依赖配置,在运行期间很多配置会根据访问流量等因素进行调整,传统的配置信息处理方式是将配置信息写入xml、.properties等配置文件中,和应用一起打包,每次修改配置信息,都需要重新进行打包,效率极低,动态配置中心就是为了解决这一问题。动态配置中心也是一个微服务,我们把微服务中需要动态配置的配置文件存放在远程git私有仓库上,微服务会去服务器读取配置信息,当我们在本地修改完代码push到git服务器,git服务器端hooks自动检测是否有配置文件更新,如果有,git服务端通过消息队列给配置中心发消息,通知配置中心刷新配置文件。因此微服务读取到的就是最新的配置信息,实现了运行期动态配置。理解了配置中心的原理,下面来介绍应用Spring Cloud框架的configserver搭建动态配置中心的整个过程。

           1、Git私有仓库搭建

           由于所有配置文件放在Git远程私有仓库上,我们需要搭建Git私有仓库。

           1)安装git

           # cd /etc/yum.repos.d/

           # wget http://geekery.altervista.org/geekery-el5-x86_64.repo

           # cd /data/soft/

           # wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

           # rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

           # yum -y install git

           # git --version

           2)搭建git仓库

           a、创建一个git用户,用来运行git服务

           命令:$ sudo adduser git

           b、创建证书登录

           收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥加入到/home/git/.ssh/authorized_keys文件里,一行一个。

           c、初始化git仓库

           选定或创建一个目录作为Git仓库,如/home/git/microservice.git,将此目录初始化为git仓库

             命令:$ sudo git init --bare microservice.git

                     $ sudo chown -R git:git microservice.git

           d、克隆远程仓库

           命令:$ git clone git@192.168.0.136:microservice.git

           3)在本地安装git客户端

           以上操作完成Git服务端私有仓库搭建后,需要在本地安装Git客户端,并且把公钥加入到服务端的/.ssh/authorized_keys配置文件中,这样就可以在本地克隆服务端代码并向服务端进行推送了。本地Git客户端的安装可参照Git教程。

           2、安装消息队列

           在远程机器上安装消息队列(rabbitmq)并启动

           

           3、配置中心相关配置文件

           配置中心(配置服务,例如:sample-config)的配置文件application.yml,添加如下配置:

           

           1)configserver的git配置

           configserver根据配置的Git服务器地址,去服务器上读取相应的配置文件信息。

           uri: 用户名、远程Git服务器地址、私有仓库地址

           username: Git服务器用户名(搭建仓库时创建的用户)

           password: 用户密码

           2)消息队列配置

           当Git服务端检测到配置文件有更新时,会通过消息队列通知configserver刷新配置文件。

           rabbitmq配置:

           host: 消息队列的地址

           port: 消息队列端口

           username: 用户名

           password: 密码 

           3)Dockerfile配置

           由于采用ssh协议访问Git服务器时,需要手动输入确认连接信息,因此在这里我们需要屏蔽此检查。我们需要新建一个配置文件config(无后缀名)跟Dockerfile一起放在容器中,并在Dockerfile中进行配置(新建/.ssh目录,将config文件添加到此目录下)。

           部署在容器中的文件:

           

           config文件配置:

           

           Dockerfile配置:

           

           4、在服务中添加消息总线依赖配置

           在需要将配置文件放到配置中心进行动态配置的服务中,添加消息总线的配置。

           在服务的pom.xml文件中添加依赖:

           <dependency>

                <groupId>org.springframework.cloud</groupId>

                <artifactId>spring-cloud-starter-bus-amqp</artifactId>

            </dependency>

           

           5、在Git服务端编写服务端hook

           当本地Git客户端向服务端仓库推送更新时,Git服务端需要检测配置文件是否有更新,如果有,则需要向configserver发请求通知它刷新配置文件。这就需要用到服务端hook。在Git服务端的/.git/hooks/目录下,创建post-receive文件(无后缀名),并添加相应的脚本,当Git客户端推送更新,服务端更新完文件后会自动执行此post-receive文件脚本。

            

           6、在本地Git客户端提交修改并推送到Git服务端

           在本地更新配置文件后,提交到本地Git仓库,然后将本地更新push到Git服务端。

           相关Git命令:

           $ git add xxx.xml xx.yml -------将修改的配置文件xxx.xml、xx.yml添加到暂存区

           $ git commit -m “xxxxxx”-----将暂存区文件提交到本地Git仓库

           $ git push origin master ------将本地更新推送到服务端

           以上就是利用configserver实现动态配置中心的整个过程,整个配置完成后就可以在本地修改配置文件push到Git服务器,我们的微服务就可以动态读取到最新的配置了。

  • 相关阅读:
    关于document.body.scrollTop用法
    set回顾
    用户登录与注册
    编写通讯录2
    利用字典的特性编写一个通讯录
    shelve模块
    shutil模块
    列表的拓展
    随机生成验证码2
    递归与欧几里得算法结合求最大公约数
  • 原文地址:https://www.cnblogs.com/fangfuhai/p/7071502.html
Copyright © 2020-2023  润新知