说明:
本系列的文章,是希望能够通过一些列的实例,来达到对python学以致用的目标,其中的代码可能并不完美,结构设计可能有不合理的地方,如果您读到此处,希望能够得到您诚恳的建议.
zookeeper是什么
https://zookeeper.apache.org/
zookeeper的用途
数据发布与订阅(配置中心)
负载均衡
命名服务(Naming Service)
分布式通知/协调
集群管理与Master选举
分布式锁
分布式队列
为什么要实现这样的一个实例:
当在一个集群规模的环境中,多台同类型的应用使用同样的配置文件,为了避免登陆每台机器修改配置,为了减少人为的修改导致配置不一致,为了实现配置文件的统一管理、版本控制,那么就有必要实现一个配置管理中心的应用。
实例用到的软件
python (3.4.2)
zookeeper (3.4.8)
kazoo (2.2.1)
tornado (4.3)
配置管理中心实现了哪些功能
0. 标准的key value的配置文件几个
1. 基于web页面的配置文件的增删改查
2. 同一个app下多个配置文件
3. 版本管理,当前版本,历史版本管理
4. 数据持久化保存
5. 非标准的key value配置文件的管理
6. 客户端watcher的实现
配置管理中心的原理
zookeeper节点的设计 /conf | |-------appid | | | |------conf_name | |-----key1 | |-----key2 | |------version | |---history | |---current conf: zookeeper的跟节点 appid: app的名称 conf_name: 配置文件名称 key: 配置文件中的key,对应存储的值为value version: 版本控制节点 history: 历史版本 current: 当前版本 |
例如想管理一个名称叫app1的应用,它的配置文件为app1.conf
app1.conf的内容为:
vim app1.conf
host=127.0.0.1
username='hans'
那么对应的节点为:
/conf/app1/app1.conf/host
web界面展示
显示
list.png
创建
create.png