论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
Apollo配置中心-配置热发布如何实现
Apollo配置中心-配置热发布如何实现
用多少眼泪才能让你相信
金牌会员
|
2024-8-18 13:23:51
|
显示全部楼层
|
阅读模式
楼主
主题
864
|
帖子
864
|
积分
2594
引言
配置中心在微服务架构体系中黑白常紧张的底子设施服务,承担着分布式配置集中管理、配置热发布以及审计等紧张的职责。本文重要探究Apollo配置中心的配置热发布特性如何实现。
配置热发布如何实现
1、配置发布主流程
如上图所示,配置发布的主流程如下:
(1)用户通过Portal向AdminService发布配置信息;
(2)AdminService在配置发布后会往ReleaseMessage表插入一条消息记录;
(3)ConfigService中包含了一个定时线程,该定时线程每秒扫描一次ReleaseMessage表,查抄表中是否有新的消息记录;
(4)假如存在配置更新,ConfigService就会关照全部的消息监听器;
(5)关照Controller会根据发布的配置信息关照对应的客户端;
客户端与配置中心的大致交互如下所示:
这里的配置更新推送其实并不是真正进行信息推送,而是通过长轮询来实现配置的更新。实际上并不是配置的更新推送,而是配置更新关照的推送,客户端拿到关照后必要进一步获取具体的变化的配置信息。
2、长轮询
(1)假如利用Push方式推送数据会有什么问题?
服务端必要与客户端创建长连接,服务端有数据更新的时候可以进行数据推送,数据更新比较实时。但是服务端无法感知客户端的处理能力,可能会造成数据积压。另外集群环境下部分节点不在线会关照失败,等客户端又在线后必要进行补偿推送,节点还有可能存在扩容等各种环境。对于配置中心这种业务场景来说,通过Push方式实现数据推动显得复杂了。
(2)假如利用Pull方式拉取数据会有什么问题?
Pull模式重要是通过客户端主动向配置中心进行数据哀求,拉取对应的配置信息。由于是客户端主动拉取,因此不会出现数据堆积的问题。但是数据如何去拉,什么时间去拉,拉的频率如何控制,这些都是问题。假如频率过高,而配置并未更新,那么就会对服务端造成不须要的连接压力。假如频率过低,那么配置更新就会存在延时的问题。因此同样不适合配置中心的业务场景。
(3)长轮询
客户端向配置中心进行哀求,配置中心不会立即返回响应,而是会hold住这个哀求直到指定时间超时后进行返回。假如没有配置变更,则返回Http状态码304给客户端。超时返回后,客户端将再次发起哀求。
假如存在配置变更,将返回对应的namespace信息,客户端根据namespace信息获取对应的配置信息。
另外为了保证配置的有效性,客户端也会定时哀求配置信息,防止配置更新可能出现的异常环境,是一种数据保证的兜底fallback机制。另外当获取到配置后,会同步到本地配置文件中 。如许即便客户端与配置中心无法通讯,客户端也可以从本地配置文件中获取配置信息。
那么问题来了,为什么不直接在长轮询的响应中直接回复配置信息呢?重要是由于自己已经存在了定时拉取配置的步骤,那么为了保证单一原则以及代码上的简洁以及复用。所以通过这种获取配置更新后再进行数据拉取的方式。
3、客户端获取配置信息
我们一起看下客户端如何工作流程,如下图:
(1)ConfigServiceLocator:重要负责向Eruka注册中心获取ConfigService地址列表信息;
(2)RemoteConfigLongPollService:从ConfigServiceLocator获取到地址列表信息后,通过长轮询的方式获取配置变更信息;
(3)RemoteConfigReposity:从ConfigService获取变更的配置数据;
(4)LocalFileConfigReposity:把配置数据固化到本地,同时作为本地配置数据的泉源;
(5)DefaultConfig:重要和业务方进行交互,提供配置获取方法,同时可以注册配置变更事件。
总结
本文重要探究了Apollo配置中心配置热发布的相干内容,分析了为什么长轮询是比较适合配置中心的数据交互方式。在今后的架构设计中我们也可以以此来作为参考。另外客户端的设计中,也体现了了分层以及职责单一的代码风格,我们自己在实际项目开发中也比较有借鉴的意义
————————————————————————————————————————————————
©著作权归作者全部:来自51CTO博客作者慕枫技术笔记的原创作品,请接洽作者获取转载授权,否则将追究法律责任
Apollo配置中心如何实现配置热发布
https://blog.51cto.com/u_15474618/4905554
————————————————————————————————————————————————
可参考:
微服务架构~携程Apollo配置中心架构剖析
官方文档
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
用多少眼泪才能让你相信
金牌会员
这个人很懒什么都没写!
楼主热帖
iNeuOS工业互联网操作系统,增加搜索应 ...
安卓期末大作业——单词本APP(源码+任 ...
杭州联合银行 x 袋鼠云:打造智能标签 ...
【Java开源数据库语言】基于SPL如何提 ...
vue3+Element采用递归调用封装导航栏 ...
个人博客系统(附源码)
真正在大厂干了几年,我学会了反内卷[ ...
ssrf实战
内网安全 - 简单域环境搭建
攻防世界 new_easypwn 题解
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表