spring cloud config-bus-kafka应用原理

部分内容摘自:https://www.jianshu.com/p/8343a8485112;
配置中心的选择可参考:https://www.jianshu.com/p/d78fa8412cbf

Spring Cloud Config基本概念
Spring Cloud Config用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持。
服务端:分布式配置中心,独立的微服务应用,用来连接配置仓库(GIT/DB)并为客户端提供获取配置信息、加密/解密等访问接口。
客户端:微服务架构中各个微服务应用和基础设施,通过指定配置中心管理应用资源与业务相关的配置内容,启动时从配置中心获取和加载配置信息。
基于git的架构图:
在这里插入图片描述
基于DB的架构图:
在这里插入图片描述
远程git仓库:

用于存储配置文件的地方

本地git仓库/DB数据库:

在Config Server文件系统中,客户单每次请求获取配置信息时,Config Server从GIT仓库获取最新配置到本地,然后在本地GIT仓库读取并返回。当远程仓库无法获取时,直接将本地仓库内容返回。或者从db读取配置返回给客户端。

config server:

分布式配置中心,微服务中指定了连接仓库的位置以及账号密码等信息。

service*:

具体的微服务应用,他们指定了Config Server地址,从而实现外部化获取应用自己想要的配置信息。
应用启动时会向Config Server发起请求获取配置信息进行加载。

消息中心,kafka等:

上述架构图均是基于消息总线的方式,依赖的外部的MQ组件,目前支持kafka、rabbitmq。
通过Config Server配置中心提供的/bus/refresh endpoint作为生产者发送消息,客户端接受到消息通过http接口形式从Config Server拉取配置。

消息总线,spring cloud bus:

可理解为管理和传播所有分布式项目中的消息既可,其实本质是利用了MQ的广播机制在分布式的系统中传播消息,目前常用的有Kafka和RabbitMQ。
提供事件机制,结合kafka等,实现消息生产和订阅,或者叫事件触发和事件监听。

注册中心:

可以将Config Server注册到服务注册中心上比如Eureka,然后客户端通过服务注册中心发现Config Server服务列表,选择其中一台Config Server来完成健康检查以及获取远端配置信息。

git存储配置形式下,客户端加载流程:

1、应用启动时,根据bootstrap.yml中配置的应用名{application}、环境名{profile}、分支名{label},向Config Server请求获取配置信息。
2、Config Server根据自己维护的GIT仓库信息与客户端传过来的配置定位去查找配置信息。
3、通过git clone命令将找到的配置下载到Config Server的文件系统(本地GIT仓库)
4、Config Server创建Spring的ApplicationContext实例,并从GIT本地仓库中加载配置文件,最后读取这些配置内容返回给客户端应用。
5、客户端应用在获取外部配置内容后加载到客户端的ApplicationContext实例,该配置内容优先级高于客户端Jar包内部的配置内容,所以在Jar包中重复的内容将不再被加载。

kafka基本概念:
kafka是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统。
简单理解可为:消息队列。

kafka基础概念,详细可参考:https://www.jianshu.com/p/734cf729d77b

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章