1 一致性
<1>读操作由于性能的原因,读操作由zookeeper服务的内存提供,而且不参与写操作的全局排序,这一特性
会导致使用机制交流的客户端与zookeeper状态不一致。
为了避免这种情况,可以在读之前能进行sync,它会强制它脸上的zookeeper与leader保持一致。
##但是sync是异步执行,更新可能会在读之后完成。
<2>写操作
在ensemble中,跟随者通过更新号来滞后领导者,结果导致只有大部分而不是岁所有的resemble
元素进行更新就能提交了。
<<1 将客户端连接到跟着领导者的zookeeper服务器上,客户端连接到领导者,但是不能控制它,
跟随者执行读操作,领导者执行写操作。
<<2 每一个对znode的更新都会给定一个唯一的全局标示(zxid),更新是被排序的,小的先执行,
对于zookeeper说,这是分布式系统中的排序的唯一标准。
<<3 顺序一致性:任何一个客户端的更新都会按照他们的发送顺序。
<<4 原子性:成功或者失败。客户端知道结果
<<5 单系统映像:在一次会话中,无论系统连接哪台服务器,它与系统看见的视图都是一样的。
2 会话
<1>zookeeper客户端与ensemble服务器列表配置保持一致,启动时,依次连接知道成功或者失败。连接即建立新的会话。
无论什么时候,当会话空闲一定时间,客户端有Ping程序请求保持活跃。
3 time
<1>tick time是zookeeper中的基本时间长度,为ensemble里的服务器所使用,用来定义对于交互运行的调度。
<2>当会话超时时,每个会话都有服务器给定的唯一身份和密码,如果建立连接时,传输给
zookeeper,能恢复会话。
<3>zookeeper的ensemble越大,会话超时时间应该越长。连接超时,读取超时,ping周期都为一个
函数定义在ensemble的一个函数中。因此当ensemble扩大,这些时间会变小。
4 状态
<1>与zookeeper服务建立连接时,为conneting状态,连接建立后,为connected状态,断开连接,为disconnected状态。
<2>zookeeper的watcher对象的俩个职责。
<<1 了解zookeeper状态的改变。传递给zookeeper对象构造函数的watcher被用来检测对象的改变。
<<2 了解znode的改变。使用watcher的专门实例(通过将其传递到对于的读操作上)。