业务规则配置中心的设计方案
背景:
需要一个高可用,高性能的业务规则配置中心查询服务,并且提供低频的修改,修改要求准实时生效
- 业务规则配置,从大的数据结构来说,是一个List,每一个元素,是一个自定义的数据结构
- 长期存储,需要使用可长期存储的解决方案,建议使用数据库
- 查询服务高可用,即使长期存储介质出现故障,只要不是所有的应用服务器故障,都要可提供稳定的服务
- 高性能,要求保证99%以上查询,是内存级的服务,不可操作硬盘或SSD
- 一旦修改完成,必须准实时生效,生效时间原则来说,要求在秒级,不允许超过5s
- 长期存储介质出现故障时,可允许修改服务不可用
解决方案:
使用mysql中心存储,提供业务规则的存储
使用本地存储(不是本地缓存,本地存储不存储过期概念,本地存储建议使用内存数据库),提供高性能的保障(此处不建议使用Redis,因Redis存在故障的可能)
使用版本号,每一次业务规则调整则增加一个版本号,此版本号是自增的(此处不建议使用hash,自增可满足的场景,使用hash相对而言更复杂)
使用zk或同类的产品,提供一个动态配置的解决方案;即N个应用服务器依赖一个变量,这个变量本身由动态配置管理,若此变量发生变化