Zookeeper原理剖析
1. 理论分析
一个分布式架构的目标,就是保证集群内数据的一致性,那么zookeeper保证了什么样的数据一致性?又是怎么保证的呢?
1.1 数据一致性
数据一致性一般包含三种:强一致性、弱一致性和最终一致性
强一致性
所谓强一致性,就是集群内每一个节点读取时都要保证是最新的数据,所以要实现强一致性就会使得每一次写操作执行后集群都会被阻塞来进行同步,效率较低。
弱一致性
在弱一致性下,集群内每一次读写都不需要保证为最新。
最终一致性
最终一致性不保证每一次读写为最新,但是会保证最终读到的数据是最新的,这有点类似于乐观锁的思想,在保证了一致性的同时效率也很高,zookeeper就是处于最终一致性
1.2 一致性保证
那么一致性是如何保证的呢?
在zookeeper集群中,包含一个leader节点和若干个follower节点,每一个节点都能执行读操作,而对任意一个节点的写操作都会托管给leader来执行,leader节点完成写操作的同时会将消息同步给所有follower节点,由此来使得每一个节点的数据都是一样的。
但是这个过程中还是会出现各种各样的问题,zookeeper是如何解决的呢?
leader节点挂了 -------------&