Apollo配置中心如何实现配置热发布

标签: apollo 中心 | 发表时间:2021-05-07 13:39 | 作者:慕枫技术笔记
出处:https://juejin.cn/tag/%E6%9E%B6%E6%9E%84

引言

配置中心在微服务架构体系中是非常重要的基础设施服务,承担着分布式配置集中管理、配置热发布以及审计等重要的职责。本文主要探讨Apollo配置中心的配置热发布特性如何实现。

配置热发布如何实现

1、配置发布主流程

截屏2021-05-07 下午9.23.18.png

如上图所示,配置发布的主流程如下:

(1)用户通过 PortalAdminService发布配置信息;

(2) AdminService在配置发布后会往 ReleaseMessage表插入一条消息记录;

(3) ConfigService中包含了一个定时线程,该定时线程每秒扫描一次 ReleaseMessage表,检查表中是否有新的消息记录;

(4)如果存在配置更新, ConfigService就会通知所有的消息监听器;

(5)通知 Controller会根据发布的配置信息通知对应的客户端;

客户端与配置中心的大致交互如下所示:

676975-20190120180959367-885516894.png

这里的配置更新推送其实并不是真正进行信息推送,而是通过长轮询来实现配置的更新。实际上并不是配置的更新推送,而是配置更新通知的推送,客户端拿到通知后需要进一步获取具体的变化的配置信息。

2、长轮询

(1)如果使用Push方式推送数据会有什么问题?

截屏2021-05-07 下午9.28.17.png

服务端需要与客户端建立长连接,服务端有数据更新的时候可以进行数据推送,数据更新比较及时。但是服务端无法感知客户端的处理能力,可能会造成数据积压。另外集群情况下部分节点不在线会通知失败,等客户端又在线后需要进行补偿推送,节点还有可能存在扩容等各种情况。对于配置中心这种业务场景来说,通过Push方式实现数据推动显得复杂了。

(2)如果使用Pull方式拉取数据会有什么问题?

截屏2021-05-07 下午9.29.17.png Pull模式主要是通过客户端主动向配置中心进行数据请求,拉取对应的配置信息。由于是客户端主动拉取,因此不会出现数据堆积的问题。但是数据如何去拉,什么时间去拉,拉的频率如何控制,这些都是问题。如果频率过高,而配置并未更新,那么就会对服务端造成不必要的连接压力。如果频率过低,那么配置更新就会存在延时的问题。因此同样不适合配置中心的业务场景。

(3)长轮询

客户端向配置中心进行请求,配置中心不会立即返回响应,而是会 hold住这个请求直到指定时间超时后进行返回。如果没有配置变更,则返回 Http状态码 304给客户端。超时返回后,客户端将再次发起请求。

如果存在配置变更,将返回对应的 namespace信息,客户端根据 namespace信息获取对应的配置信息。 另外为了保证配置的有效性,客户端也会定时请求配置信息,防止配置更新可能出现的异常情况,是一种数据保证的兜底 fallback机制。另外当获取到配置后,会同步到本地配置文件中 。这样即便客户端与配置中心无法通信,客户端也可以从本地配置文件中获取配置信息。

那么问题来了,为什么不直接在长轮询的响应中直接回复配置信息呢?主要是由于本身已经存在了定时拉取配置的步骤,那么为了保证单一原则以及代码上的简洁以及复用。所以通过这种获取配置更新后再进行数据拉取的方式。

3、客户端获取配置信息

我们一起看下客户端如何工作流程,如下图:

未命名文件.png

(1)C onfigServiceLocator:主要负责向 Eruka注册中心获取 ConfigService地址列表信息;

(2) RemoteConfigLongPollService:从 ConfigServiceLocator获取到地址列表信息后,通过长轮询的方式获取配置变更信息;

(3) RemoteConfigReposity:从 ConfigService获取变更的配置数据;

(4) LocalFileConfigReposity:把配置数据固化到本地,同时作为本地配置数据的来源;

(5) DefaultConfig:主要和业务方进行交互,提供配置获取方法,同时可以注册配置变更事件。

总结

本文主要探讨了 Apollo配置中心配置热发布的相关内容,分析了为什么长轮询是比较适合配置中心的数据交互方式。在今后的架构设计中我们也可以以此来作为参考。另外客户端的设计中,也体现了了分层以及职责单一的代码风格,我们自己在实际项目开发中也比较有借鉴的意义。

相关 [apollo 中心] 推荐:

Apollo配置中心如何实现配置热发布

- - 掘金 架构
配置中心在微服务架构体系中是非常重要的基础设施服务,承担着分布式配置集中管理、配置热发布以及审计等重要的职责. 本文主要探讨Apollo配置中心的配置热发布特性如何实现. 如上图所示,配置发布的主流程如下:. (1)用户通过 Portal向 AdminService发布配置信息;. (2) AdminService在配置发布后会往 ReleaseMessage表插入一条消息记录;.

代号「Apollo」的下一代 Windows Phone 预计「明年中」推出

- ArmadilloCommander - Engadget 中国版
Nokia 的一位高层主管,Location 与 Commerce 部门的执行副总 Michael Halbherr 稍早前确认了代号为 Apollo 的下一代 Windows Phone 将在 2012 年中推出,并且和 Mango「相差甚远」,暗示着这应该是 Windows Phone 8 而不是另一个 WP7.X.

Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则

- - 程序猿DD
上一篇我们介绍了如何通过Nacos的配置功能来存储限流规则. Apollo是国内用户非常多的配置中心,所以,今天我们继续说说Spring Cloud Alibaba Sentinel中如何将流控规则存储在Apollo中. 使用Apollo存储限流规则. Sentinel自身就支持了多种不同的数据源来持久化规则配置,目前包括以下几种方式:.

Windows Phone Apollo 将支持用语音撰写电邮,低端的 Tango 将一分为二?

- Woooon - Engadget 中国版
大家没有看错,在 Mango 还没推出的这个时候,下一个 Windows Phone 升级的消息就溜出来了 -- 如果这个半官方的消息是正确的话,大家可以开始期待了. 因为下一代的 Windows Phone,也就是 Apollo,将会有更进一部的语音输入支持. 美国 Nokia 的 CEO Chris Weber 早在 8 月初的一个访问中,就已经提到这支持将会是下一代 Windows Phone 的最强杀着之一.

(附完整视频)Apollo 2.0 CES 发布前,我们试乘了百度最新的L3、L4级别自动驾驶汽车

- - 雷锋网
去年 4 月,在陆奇的带领下,百度宣布对外开放自家的自动驾驶能力,“阿波罗平台”(Apollo)就此诞生. 不过那时,没有人知道 Apollo 平台是何走向. 3 个月后,在百度 AI 开发者大会上,陆奇再次站台,对外公布了 Apollo 1.0 的具体细节,1.0 主要发布的是完整的封闭场地循迹自动驾驶.

谈谈通知中心

- tossking - 爱范儿 · Beats of Bits
目前 Window Phone 7 上还没有一个称之为:通知中心 的地方,iOS 5 也才刚刚开始提供这个功能. 从 Android 用户的反馈来看,一个统一收取各种通知信息的地方,对于智能手机来说非常重要. 因为我们收到越来越多的待处理信息,而他们的数量已经多到需要集中整治的地步了. 借着 iOS 5 发布,不妨让我们一同来关注如何掌控通知中心.

呼叫中心的组件

- - 行业应用 - ITeye博客
呼叫中心一般均包括这样一些设备:. 自动呼叫分配系统(ACD). 交互式语音应答子系统(IVR) . 计算机电话集成子系统(CTI). 业务数据库系统(DATABASE). 电话(耳机)和座席软件(AGENT) . 局域网(LAN)或广域网( WAN)系统. 辅助功能模块(如VoIP、自动传真、语音信箱、电话会议、邮件服务器、Web服务器等)和开发接口等.

数据中心设计

- - 企业架构 - ITeye博客
内容:网易公司因互联网业务发展迅速,急需建设支持自己业务的数据中心. 目前,IT部门根据业务部门提出的需求,计划在数据中心内部署1000台机柜,每台机柜的功率密度为10KW,PUE=1.3. 你作为数据中心技术总监,需要根据上述要求,完成数据中心总体规划(简要描述数据中心总面积大小,描述都需要配套哪些功能房间,每个功能房间的作用是什么, 主机房承重要求, UPS室及电池室承重要求),并计算、推导出以下核心数据:.

Facebook新数据中心揭秘

- T.C - cnBeta全文版
Facebook刚刚在俄勒冈州Prineville新建了一座数据中心,号称是全球能效最高的数据中心. 硅谷知名博客作者Scoble有幸受到参观邀请,并拍摄了一些照片. 下面我们就一起去看看Facebook数据中心到底长什么样. 下面这张照片的建筑物体积很大,前面有很多太阳能电池板,连在一起有三个沃尔玛那么大.

寻找汉语网络的中心:“的”

- 佳佳 - Solidot
语言系统是一种复杂的网络结构体. 浙江大学的研究人员在《科学通报》上发表了一篇论文,探寻汉语网络结构的中心节点. 有意思的是,研究人员选择《实话实说》和《新闻联播》作为研究资料. 结果表明3个虚词均是网络的中心节点,但地位各有不同,它们对网络整体结构的影响也有较大区别. 其中“的”是整的网络最“中心”节点,“了”和“在”是局部中心节点.