开发一个独立的服务进行数据的存储,对外的CRUD操作:这里暂且叫做CMS
为了实现配置的动态更新,分布式集群下的自动分发等场景,需要一个配置管理的服务:这里采用业内的Zookeeper
架构如下
1、 cms通过 eventlet 对外提供rest接口:
I.更新配置
II.查询配置
Cms采用数据库来保持配置数据,每次的变更都更新数据库;
同时,更新zookeeper上的配置路径值
注:zookeeper上的配置路径值再zookeeper时具体讲解
2、 zookeeper对每个服务配置采用文件树节点的形式进行存储,每个节点包括如下几个部分:
I. 节点路径:类似于文件系统的目录树
II. 节点ACl
III. 节点值
注:因为zookeeper不能保存大量的数据,所以一般都是通过其他的途径进行保存,比如cms数据库等;
为了使zookeeper能够再节点变更的时候通知到其注册监听服务,节点值必须能够体现变化,所以这里的节点值可以是节点路径+时间戳的形式
3、 各服务如果需要关注某配置项的实时变更,就需要注册其监听服务到zookeeper上:也就是监听zookeeper上的某个路径节点。
4、 具体流程
I. 控制端通过cms开放的rest接口,更新某配置项
II. Cms接受请求,更新数据库,通过更新zookeeper上的节点
III. Zookeeper检测到该节点变更,通过调用其他服务注册上来的监听回调方法,达到执行服务需要更新的逻辑