作者回复: 多谢您的建议。
作者回复: 不是的。ZooKeeper有一个参数snapCount(https://zookeeper.apache.org/doc/current/zookeeperAdmin.html)和快照的生成有关,默认是100000。一个ZooKeeper节点会取[snapCount/2+1, snapCount]中间的一个随机数,每当有这个随机数这么多的事务时就生成一个新的快照。
作者回复: > 老师 求教 如果我有三个zookeeper 组成的cluster, 那么这三个zookeeper里边的数据是一样的嘛? 也就是master node每次写完了都会同步到其他的节点上? ZooKeeper要求在commit一个写操作之前就要在集群中大多数节点上进行日志写入。集群中某些节点的数据会稍微旧一些。建设ZooKeeper的3个节点是A,B和C:A是leader。例如,如果A和C的之间的网络很慢,一个写请求就有可能会被A和B处理之后被提交,这样C的数据就会旧一些。 > master node如果死了, 会重新选举,如果slave node死了会怎么样? 只要有大多数节点正常工作,ZooKeeper集群就可以正常工作。slave node死了不会发生选举。如果运维发现有节点有问题应该尽快进行节点的替换,可以通过reconfiguration(http://zookeeper.apache.org/doc/r3.5.5/zookeeperReconfig.html)来进行。
作者回复: 是的。