ZooKeeper专题(八)——内部原理

By timebusker on March 31, 2017

内部原理

本章讲述了ZK服务端的内部原理,包含其使用的协议以及如何高性能的进行容错。

leader和followers
  • ZK集群中中会有唯一的一个leader,其它的称为followers。
  • leader是数据变更的核心点。
observer

leader和follwers保证了数据更新的一致性,除了crash。因此会有低三种类型的服务,称为observer。 observer不参与任何数据变更的决定过程,它仅仅应用这些变更,observer用于保证扩展性。

本地读

所有读操作如exists,getData,getChilder都在本地完成,因此十分快。

状态变更操作

create,delete,setData则被委托给leader处理,leader通过一个叫事务的过程来处理,它包含数据变更和版本号变更两个方面, 一个事务是个原子操作,和数据库的事务不同,ZK的事务没有回滚。ZK通过保证事务之间不相互影响来避免回滚操作, 之前通过单线程处理保证,目前已经有了多线程的处理机制。事务会有一个事务ID称为ZXID,ZXID是个64位的数据,包含时间+技术两部分。