File tree Expand file tree Collapse file tree 1 file changed +2
-2
lines changed
docs/distributed-system/distributed-process-coordination/zookeeper Expand file tree Collapse file tree 1 file changed +2
-2
lines changed Original file line number Diff line number Diff line change 18
18
19
19
简单来说, ` ZooKeeper ` 是一个 ** 分布式协调服务框架** 。分布式?协调服务?这啥玩意?🤔🤔
20
20
21
- 其实解释到分布式这个概念的时候,我发现有些同学并不是能把 ** 分布式和集群 ** 这两个概念很好的理解透。前段时间有同学和我探讨起分布式的东西,他说分布式不就是加机器吗?一台机器不够用再加一台抗压呗。当然加机器这种说法也无可厚非,你一个分布式系统必定涉及到多个机器,但是你别忘了,计算机学科中还有一个相似的概念—— ` Cluster ` ,集群不也是加机器吗?但是 集群 和 分布式 其实就是两个完全不同的概念。
21
+ 其实解释到分布式这个概念的时候,我发现有些同学并不是能把 ** 分布式和集群** 这两个概念很好的理解透。前段时间有同学和我探讨起分布式的东西,他说分布式不就是加机器吗?一台机器不够用再加一台抗压呗。当然加机器这种说法也无可厚非,你一个分布式系统必定涉及到多个机器,但是你别忘了,计算机学科中还有一个相似的概念—— ` Cluster ` ,集群不也是加机器吗?但是 集群 和 分布式 其实就是两个完全不同的概念。
22
22
23
23
比如,我现在有一个秒杀服务,并发量太大单机系统承受不住,那我加几台服务器也 ** 一样** 提供秒杀服务,这个时候就是 ** ` Cluster ` 集群** 。
24
24
179
179
180
180
嗯。。。看起来很简单,貌似懂了🤥🤥🤥。这两个 ` Queue ` 哪冒出来的?答案是 ** ` ZAB ` 需要让 ` Follower ` 和 ` Observer ` 保证顺序性** 。何为顺序性,比如我现在有一个写请求A,此时 ` Leader ` 将请求A广播出去,因为只需要半数同意就行,所以可能这个时候有一个 ` Follower ` F1因为网络原因没有收到,而 ` Leader ` 又广播了一个请求B,因为网络原因,F1竟然先收到了请求B然后才收到了请求A,这个时候请求处理的顺序不同就会导致数据的不同,从而 ** 产生数据不一致问题** 。
181
181
182
- 所以在 ` Leader ` 这端,它为每个其他的 ` zkServer ` 准备了一个 ** 队列** ,采用先进先出的方式发送消息。由于协议是 ** 通过 ` TCP ` ** 来进行网络通信的,保证了消息的发送顺序性,接受顺序性也得到了保证。
182
+ 所以在 ` Leader ` 这端,它为每个其他的 ` zkServer ` 准备了一个 ** 队列** ,采用先进先出的方式发送消息。由于协议是 ** 通过 ` TCP ` ** 来进行网络通信的,保证了消息的发送顺序性,接受顺序性也得到了保证。
183
183
184
184
除此之外,在 ` ZAB ` 中还定义了一个 ** 全局单调递增的事务ID ` ZXID ` ** ,它是一个64位long型,其中高32位表示 ` epoch ` 年代,低32位表示事务id。` epoch ` 是会根据 ` Leader ` 的变化而变化的,当一个 ` Leader ` 挂了,新的 ` Leader ` 上位的时候,年代(` epoch ` )就变了。而低32位可以简单理解为递增的事务id。
185
185
You can’t perform that action at this time.
0 commit comments