1.从ACID(Atomicity, Consistency, Isolation, Durability)强一致模型, 到CAP, BASE(Basiclly Avaliable, Soft state, Eventually consistent)等弱一致模型。在分布式系统中,如何在节点故障,网络问题等困难下,为用户提供可用,一致性的服务(A,C)的服务。
2.一致性协议,2PC,3PC。paxos协议,简单来讲,paxos协议就是在节点故障,网络故障的情况下如何在节点之间对某一提案达成一致的协议。
3.Chubby,分布式锁服务,GFS(Google File System), BigTable都用它来进行分布式协作。Hypertable,分布式海量数据的高并发数据库,但是功能较简单,只提供curd。
4.zookeeper是google Chubby的开源实现,
特点
a.结构简单,树形结构,每个节点都包含信息
b.集群
c.顺序访问
d.高性能,zookeeper将所有数据存放在内存中
一些概念,集群角色(Leader, Follower, Observer),session, znode
但是zookeeper并不是用的paxos协议,而是ZAB协议(zookeeper原子广播协议),ZAB协议是一种进程通信协议。ZAB协议主要分为两个阶段,消息广播/崩溃恢复
5. 使用zookeeper,可以配置standalone,集群,伪集群模式(单机多zookeeper),zookeeper基本操作,curd
6.zookeeper典型应用场景
a.数据发布/订阅,仅对数据量比较小的场景适用
b.负载均衡,其实只是对dns做解析而已
c.命名服务,UUID
d.分布式协调通知,这个就比较复杂了,具体情况具体讨论
e.集群管理,eg,日志源机器和日志Collector的协调,在线云主机的管理
f.Master 选举
g. 分布式锁服务,排他锁(X),共享锁(S)
7.zookeeper在大型分布式系统中的应用
Hadoop的yarn,HBase, Kafa, 阿里的Dubbo
8.总结
其实这些大型分布式系统服务主要应用了zookeeper的注册(选举唯一),Watcher机制,临时节点/永久节点等特性。