Zookeeper与Paxos
zookeeper是什么
zk可以保证如下分布式一致性特性:
- 顺序一致性:client发起的事务请求,会严格按照顺序被应用到zk中。
- 原子性
- 单一视图
- 可靠性
- 实时性:zk仅保证一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态
zk的设计目标
zk致力于提供一个高性能,高可用,且具有严格顺序访问控制能力的分布式协调服务。有如下四个设计目标:
目标一:简单的数据模型
zk使得分布式程序能够通过一个共享的、树型结构的名字来进行相互协调。zk将全量的数据存储在内存中,通过快照和事务文件在初始化时加载zk服务器中。
目标二:可构建集群
只要集群中超过一半的机器能够正常工作。
目标三:顺序访问
对于来自客户端的每个更新请求,zk都会分配一个全局唯一的递增编号,这个编号反应了所有事务操作的先后顺序。
目标四:高性能
适用于以读操作的应用场景,3台服务器的压测能达到12-13W的QPS