Zookeeper是一个为分布式应用服务的分布式协作服务:

应用程序可以使用它的服务来同步,维护配置,分组和命名

设计目标:

  • 简洁:分布式程序可以通过namespace协作,zookeeper的数据是存在内存中的,所以可以实现高吞吐和低冗余
  • 重复:zookeeper在一组主机(ensemble)上被复制
    Zookeeper官方文档学习笔记
    这些server彼此知道,Clients连在Server上,并维持一个TCP连接:发送请求、接受回应、查看事件、发送心跳。如果一个server掉线,它的Clients会连接到别的Servers
  • 有序:每个zookeeper stamp更新一个代表所有交易顺序的数字
  • 快速:zookeeper在读取:写入速率 = 10:1时最快

树状结构:

每个节点是一个znode,由路径标识
Znode维护了数据变更的版本号,ACL变化,时间戳
Znode里的数据自动读写,读时会获取到所有的数据,写时会替换所有的数据
临时节点随session创建和销毁

update和watch:

客户端可以watch znodes,当znode改变时watch会被触发和移除

APIs:

  • create:在树中创建一个节点
  • delete:删除一个节点
  • exists:测试一个节点在某地是否存在
  • get data:从一个node获取数据
  • set data:给node写数据
  • get children:获取一个节点的子节点
  • sync:等待数据propagate

Zookeeper官方文档学习笔记
Replicated Database是一个在内存中并包括整棵树的数据库,更新会写入disk,写入也会在存入内存数据库之前序列化到disk

性能调优:

Zookeeper官方文档学习笔记
多读少写!

相关文章: