配置中心Config Center思路

最近在研究配置中心的框架,总结一下优缺点.

需要解决的问题

  1. 减少与ZooKeeper服务端的连接数
  2. 本地缓存.减少每次获取配置项时与Server端交互的网络消耗,仅在Serverd端数据更新时通知Client端
  3. 保证2中的数据一致性.相同的client端需要保证数据一致(import)
  4. 容错性.当Server端出现问题时,不影响client的运行
  5. 性能

特点

  1. 多读写少
  2. 更新频繁
  3. 数据量小
  4. 数目较多

问题

  1. 共享内存的分布式部署如何保证唯一
  2. 共享内存宕机会怎么样
  3. 如何保证多个client之间数据的一致性
  4. 性能
  5. 如何防止请求量暴增,增加缓存队列

360的QConf

优势

  1. 使用请求队列,防止打爆内存
  2. 使用Agent代理,近实时同步更新数据
  3. 保证数据一致性,client每次获取数据都从共享内存中获取
  4. 维护一份落盘数据,应对断网同时共享内存被清空的情况
  5. 使用PULL的方式主动取共享内存数据

不足

  1. 如果共享内存宕机,则client无法启动
  2. 缺少对client存活状态的监听管理

疑问

  1. 共享内存如何保证数据一致性

    建议使用ZooKeeper直接与共享内存直连,使用ZooKeeper保证共享内存的数据一致性

  2. 如何做到获取更新内容后,保存到本地

    针对不足第1点

  3. 如何保证一组数据的完整性,比如一个client依赖一组数据,在写的过程中,只写了一部分的时候,client发起读请求,会出现部分读

    加上写开关,只有全部写成功时才会修改成功