分布式监控中心设计方案

要求:作为各个应用的配置中心,提供持久化存储和配置变更推送的服务。持久化意味着应用的配置数据不能丢失,配置变更推送是指配置变更后能后通知到客户端。

方案1:Zookeeper作为配置中心

  原理: Znode节点数据会被持久化到磁盘文件,不存在数据丢失情况;Wather机制,Znode节点变更时会发出通知。

读写能力无法水平扩展的方案:

分布式监控中心设计方案

读能力水平扩展,写能力不变的方案:

分布式监控中心设计方案
局限性:

  1. 配置数据总量不能超过机器内存。 ZK会将配置数据加载到内存,配置数据过大会导致OOM;
  2. 应用间相互影响。存储上,各应用是竞争内存的;写数据上,各应用需要竞争Leader的写能力;
  3. 写能力无法水平扩展。核心集群的扩展(参与投票机器)会让写性能下降,observer的扩展只能提升读性能。

方案2:去中心化的配置中心

分布式监控中心设计方案
初始化:服务器启动时从数据库拉取全量数据(分页查询)持久化到磁盘文件,然后启动定时器,定时从数据库拉取增量数据到磁盘文件(防止网络异常或者写磁盘文件异常导致的数据不一致);客户端启动时先从地址中心获取配置中心集群的服务器地址列表,然后按照一定规则选择一台机器建立连接。
读数据:客户端发送请求,服务器接受到请求后使用zero-copy技术传输配置文件即可。
写数据:

  1. 控制台变更配置,并通知配置中心;
  2. 服务器A收到变更控制台的变更通知后,直接接新数据持久化到数据库;
  3. 服务器A从地址中心获取集群所有机器IP列表,然后异步通知集群中所有机器,包括自己;
  4. 服务器接受到异步通知后更新磁盘文件;
  5. 与监听变更配置的客户端相连的服务器B通知客户端发生配置变更;
  6. 客户端发送请求获取最新的配置数据;

优点:

  1. 读写能力可以水平扩展;
  2. 配置数据的总量没有限制;

缺点:
  1. 存在外部依赖,地址中心和数据库;
 2. 开发量大;