tyro系列之五:ZooKeeper学习笔记

tyro系列之五:ZooKeeper学习笔记

2020-06-24 22:34:31发布 浏览数:1312
概述:tyro系列之五:ZooKeeper学习笔记

CAP定理

CAP理论告诉我们,一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的两项。

BASE理论

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent (最终一致性)三个短语的简写。其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

最终一致性

最终一致性包括:因果一致性(Causal consistency),读己之所写(Read your writes),会话一致性(Session consistency),单调读一致性(Monotonic read consistency),单调写一致性(Monotonic write consistency)。

3PC

是Three-Phase Commit的缩写,即三阶段提交,是2PC的改进版,其将二阶段提交协议的“提交事务请求”过程一分为二,形成了由CanCommit、PreCommit和do Commit三个阶段组成的事务处理协议。

Paxos算法

Paxos算法运行在允许宕机故障的异步系统中,不要求可靠的消息传递,可容忍消息丢失、延迟、乱序以及重复。它利用大多数 (Majority) 机制保证了2F+1的容错能力,即2F+1个节点的系统最多允许F个节点同时出现故障。

Lamport的故事

Paxos算法是一代宗师Lamport提出的一种基于消息传递的分布式一致性算法,使其获得2013年图灵奖。看了Paxos算法的历史,不胜唏嘘。Lamport大师在50多岁时提交的论文被拒绝了,60多岁时这篇文章终于被接受了(因为人们终于认识了它的重要性),70多岁时获得了计算机界的最高荣誉。而我们大多数人,一言不合就拍屁股走人,很难在一个领域精耕细作。我们基本上就是拿来主义,拿到外国人依据外国人发明的算法写的软件,拿来就用。

ZooKeeper是什么

ZooKeeper 是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

Zookeeper维护一个类似文件系统的数据结构,每个子目录称作为 znode。有四种类型的znode:PERSISTENT持久化节点、PERSISTENT_SEQUENTIAL持久化顺序编号节点、EPHEMERAL临时节点、EPHEMERAL_SEQUENTIAL临时顺序编号节点。 

每个Znode由3部分组成:stat描述该Znode的版本、权限等信息;data为该Znode关联的数据;children是该Znode下的子节点。

客户端可以注册监听它关心的节点,当节点发生变化(数据改变、被删除、子目录节点增加删除)时,会产生watch事件。watch事件是一次性的触发器,当watch的对象状态发生改变时,会触发此对象上watch所对应的事件。watch事件将被异步地发送给客户端,并且ZooKeeper为watch机制提供了有序的一致性保证。

 

为什么要用Zookeeper?

我觉得知乎上的这个回答很好:

“所以我们需要这个存储master信息的服务器集群,做到当信息还没同步完成时,不对外提供服务,阻塞住查询请求,等待信息同步完成,再给查询请求返回信息。

这样一来,请求就会变慢,变慢的时间取决于什么时候这个集群认为数据同步完成了。

假设这个数据同步时间无限短,比如是1微妙,可以忽略不计,那么其实这个分布式系统,就和我们之前单机的系统一样,既可以保证数据的一致,又让外界感知不到请求阻塞,同时,又不会有SPOF(Single Point of Failure)的风险,即不会因为一台机器的宕机,导致整个系统不可用。

这样的系统,就叫分布式协调系统,谁能把这个数据同步的时间压缩的更短,谁的请求响应就更快,谁就更出色,Zookeeper就是其中的佼佼者。

它用起来像单机一样,能够提供数据强一致性,但是其实背后是多台机器构成的集群,不会有SPOF。其实就是CAP理论中,满足CP,不满足A的那类分布式系统”

 

参考资料:

祥光 https://zhuanlan.zhihu.com/p/31780743

倪超《从Paxos到Zookeeper》

郝乌亮 https://.cnblogs.com/wuxl360/p/5817471.html

柳树 https://www.zhihu.com/question/35139415/answer/715114516

 

-----------------------------------------------------------------------------------------

我的:永宁河(peace_river)

请先
登录
后评论
0 条评论
暂时没有评论
最新文章
更多