0
点赞
收藏
分享

微信扫一扫

配置中心 实现02

非持久配置中心 ConfigServer,用于非持久数据的发布和订阅。

   产品架构基于发布订阅模型,去中心无master设计,保证了系统的可扩展性、高可用。在集团内部主要场景为分布式消息系统Notify、分布式RPC框架HSF提供地址发现服务。

ConfigServer产品特性


无Master架构

ConfigServer基于无Master架构ConfigServer是无中心化的架构,不存在单点问题,通过特定的算法进行数据增量同步。

自动聚合

ConfigServer支持数据的自动聚合配置数据的聚合功能。每台机器向ConfigServer注册自己的服务元信息,ConfigServer会根据服务名和分组自动聚合所有元数据,提供给服务订阅方使用。

实时

ConfigServer是推数据的模型ConfigServer的服务端与客户端是基于长连接的方式进行通信,在客户端订阅关系确定后,配置信息一旦发生变化,会主动推送配置数据到客户端,并回调客户端的业务监听器.


配置中心 实现02_推送

集群版本V3

配置中心 实现02_数据_02

架构设计:

Session集群负责与客户端的交互,可动态扩容

DataServer集群解决数据的容灾,数量固定

实现原理:

  1. 客户端将地址注册到session,session异步复写到DataServer
  2. ConfigServer以1s为周期压缩后推送到所有session上
  3. session缓存dataServer推送的数据,只保存本地数据和推送的压缩数据

好处:

  1. session集群可根据业务规模水平扩容,而DataServer集群数量固定不会影响集群性能

    2.单一职责,方便运维


如何保证数据一致性(最终一致性):

1.问题:client写session的时候,session挂了,怎么办

          解决:client选择其他session重新写入

       2.问题:session写入DataServer失败了怎么办

          解决:对于每一个写任务,session通过重试确保最终写成功

       3.问题:DataServer挂了怎么办

          解决:机器恢复后,在有写入操作时,session会自动将本地全量数据写入到DataServer中.

       4.问题:session复写DataServer的时候数据冲突了,怎么办?

          解决:  固定顺序复写,不会冲突?

       5.问题:DataServer在推送数据给session的时候失败了,怎么办

          解决:重试

       6.问题:session挂了,怎么办?

          解决:client和session有心跳机制,会连接其他session并获取最新的数据    


异步非阻塞

配置中心 实现02_数据_03


好处

1.更低的延时,更高的吞吐量

2.方便扩展,可以有针对性的设置线程数量,分配资源

3.系统设计之初,很难考虑到瓶颈所在,当要求高性能时,能做的就是尽量设计成异步非阻塞


观察者模式-事件机制

配置中心 实现02_客户端_04

好处

1.解耦:各模块和Configwork线程彼此不感知

2.可扩展性好,如果需要扩展模块,只需监听相应事件,对其他模块无影响



ConfigServer

Eureka

ZK

架构

无中心

无中心

主从

数据获取方式

push

pull

push+pull注册watcher,数据变更后发送通知,client再pull数据

CAP

AP

AP

CP

适合场景

服务发现

服务发现

数据存储


举报

相关推荐

0 条评论