在生产环境,我们常常要存储一些像服务参数、功能开关之类的键值。传统的做法是...
在生产环境,我们常常要存储一些像服务参数、功能开关之类的键值。传统的做法是把配置都写到文件里,然后同步到线上每台机器上。随着机器变多,配置文件变得难以管理,并且容易出现不一致的情况。我们希望设计一个配置服务来解决这个问题。
统一配置服务可能会存在以下问题:由于是非常核心的服务,如果存在单节点问题对服务可用性影响非常大;线上可能读取非常频繁,尽可能提供高性能的服务同时,也要考虑横向扩容能力;需要保证配置在期望的时间内下发与更新;
请设计一个存储服务,包含但不限于以下角色:服务端(可能由多个节点组成),客户端(读取、写入一个配置),其他(如旁路的监控等);
系统假设:
1、存储量都在1GB以内,单机内存可以存储下;
2、每秒写入在 1000 以内
3、每秒读取在 1000000 以上
4、使用尽量少的节点
5、无论什么时候,服务总是可以读写
6、允许故障期间读到老的配置数据
7、故障恢复后,数据保持同步