需要解决的问题
- 减少与ZooKeeper服务端的连接数
- 本地缓存.减少每次获取配置项时与Server端交互的网络消耗,仅在Serverd端数据更新时通知Client端
- 保证2中的数据一致性.相同的client端需要保证数据一致(import)
- 容错性.当Server端出现问题时,不影响client的运行
- 性能
特点
- 多读写少
- 更新频繁
- 数据量小
- 数目较多
问题
- 共享内存的分布式部署如何保证唯一
- 共享内存宕机会怎么样
- 如何保证多个client之间数据的一致性
- 性能
- 如何防止请求量暴增,增加缓存队列
360的QConf
优势
- 使用请求队列,防止打爆内存
- 使用Agent代理,近实时同步更新数据
- 保证数据一致性,client每次获取数据都从共享内存中获取
- 维护一份落盘数据,应对断网同时共享内存被清空的情况
- 使用PULL的方式主动取共享内存数据
不足
- 如果共享内存宕机,则client无法启动
- 缺少对client存活状态的监听管理
疑问
共享内存如何保证数据一致性
建议使用ZooKeeper直接与共享内存直连,使用ZooKeeper保证共享内存的数据一致性
如何做到获取更新内容后,保存到本地
针对不足第1点
如何保证一组数据的完整性,比如一个client依赖一组数据,在写的过程中,只写了一部分的时候,client发起读请求,会出现部分读
加上写开关,只有全部写成功时才会修改成功