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

在微服务架构中,服务之间有着错综复杂的依赖关系,每个服务都有自己的依赖配置,在运行期间很多配置会根据访问流量等因素进行调整,传统的配置信息处理方式是将配置信息写入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/

# 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文件中添加依赖:

org.springframework.cloud

spring-cloud-starter-bus-amqp

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服务器,我们的微服务就可以动态读取到最新的配置了。

合沟微服务怎么添加_微服务架构:动态配置中心搭建相关推荐

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

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 在微服务架构中,服务之间有着错综复杂的依赖关系,每个服务都有自己的依赖配置,在运行期间很多配置会根据访问流量等因素进行调整,传统的配置信息 ...

  2. 微服务-Nacos动态配置中心

    前言 回想之前的项目,尤其是项目分多模块的时候,一般就会有一个公共包大多是相关工具类,因为比较独立使得其他模块调用方便,现在出来个需求为工具类参数进行动态控制,比如Redis工具类动态设定过期时间,除 ...

  3. spring cloud+dotnet core搭建微服务架构:配置中心续(五)

    前言 上一章最后讲了,更新配置以后需要重启客户端才能生效,这在实际的场景中是不可取的.由于目前Steeltoe配置的重载只能由客户端发起,没有实现处理程序侦听服务器更改事件,所以还没办法实现彻底实现这 ...

  4. 最新版Spring Cloud Alibaba微服务架构-Config配置中心篇

    文章目录 前言 一.Config引入背景 1.文件相对分散 2.无法区分环境 3.无法实时更新 4.安全无法保证 二.Config引入配置 1.配置文件格式 1.1 命名空间(Namespace) 1 ...

  5. 微服务可靠性测试_微服务可靠性设计

    1.背景 微服务化之后,系统分布式部署,传统单个流程的本地API调用被拆分成多个微服务之间的跨网络调用,由于引入了网络通信.序列化和反序列化等操作,系统发生故障的概率提高了很多.微服务故障,有些是由于 ...

  6. golang微服务框架对比_微服务里程碑,Golang与Spring Cloud Alibaba完美结合

    目前微服务架构仍是软件架构中最新的热门话题,虽然Golang是一门新的语言,但Golang的性能比python和java高出不少.既能承受程序使用运行的服务构建的繁重负载,又容易与GitHub集成,管 ...

  7. 微服务升级优点_微服务–——定义, 原则 和 优点

    微服务是业界最新的流行语,似乎每个人都在以这样或那样的方式谈论它.让我们理解一下什么是微服务?通过这篇教程我们将理解微服务的定义,概念以及微服务的原理. 微服务的定义 如今,微服务是SOA(面向服务的 ...

  8. 微服务启动顺序_微服务框架Demo.MicroServer运行手册

    一.背景说明: 之前分享过一个微服务开发框架, "享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionle ...

  9. 微服务认证模式_微服务之“网关模式”

    定义 API网关是一个服务器,它是系统中的单个入口点,用户对API网关进行单一呼叫,然后API网关调用每个相关的微服务器.它类似于面向对象设计的Facade模式.API网关封装内部系统架构,并提供针对 ...

最新文章

  1. 2019 Multi-University Training Contest 1 - 1004 - Vacation - 二分 - 思维
  2. lower_bound
  3. java 需要class interface 或enum_阿里P8教你Java注解与反射
  4. 图神经网络可解释性Slide:GNNExplainer: Generating Explanations for Graph Neural Networks
  5. 牙齿间隙变大怎么办_牙齿缝隙大怎么办 5个方法解决牙齿缝隙大
  6. 年回报60%!孙正义如何经营“沉迷AI”的愿景基金?
  7. 软中断网卡处理Linux高性能外部设备处理机制SMP
  8. web SQL注入漏洞
  9. CMMI5认证必备条件
  10. 有MIMIC数据却不知道从何开始?从DIAGNOSES_ICD表开始(五)
  11. 【Scratch】《零基础入门学习Scratch》(小甲鱼)笔记一
  12. 极化码 串并行译码的辨别(SC BP SCAN)硬判决和软输出
  13. 浏览器引擎系列:Webkit
  14. 何凯明深度残差网络翻译
  15. api 接口简单调用
  16. ni visa pci_VISA/MASTER信用卡在线缴费友邦、保诚步骤!
  17. 基于canvas+uniapp的9宫格拼图游戏组件
  18. AppCompatActivity透明化处理
  19. 2048小游戏项目总结
  20. 关于php中laravel框架的学习--适合菜鸟初学者

热门文章

  1. Android Studio 完美解决 “Android SDK Manager 无法更新“、 ”connection error” 的问题...
  2. 接口可以继承多个接口总结
  3. Spring Tool Suite插件的安装
  4. GIT基本概念和用法总结
  5. 第一个spring冲刺团队贡献分(80分满分)
  6. 【理论】【转】Android项目重构之路:架构篇
  7. OpenCV学习(13) 细化算法(1)(转)
  8. 只能建立两个虚拟服务器,创建两个虚拟主机
  9. mysql workbench企业_甲骨文发布MySQL Workbench 6.0版本
  10. java通道 硬件通道 如何联系_Java NIO5:通道和文件通道