谈谈对Zookeeper的理解
应用场景
1 |
|
集群管理
在多个节点组成的集群中,为了保证集群的HA(Highly Available)的特性,
每个节点都需要冗余一份数据副本,这种情况下需要保证客户端访问集群中的任意一个节点都是最新的数据
解决方案
Zookeeper 提供了 CP
模型,来保证集群中的每一个节点的数据一致性,
需要调用sync
方法进行数据同步,但是Zookeeper并不是一个强一致性模型,而是一个顺序一致性模型
分布式锁
为了保证跨进程的共享资源的并发安全性,就必须使用跨进程的锁,也就是分布式锁
解决方案
- 1.通过有序节点的特性实现
- 2.同一级节点的唯一特性
Master选举
在多个节点组成的集群中,为了降低集群数据同步的复杂度,会存在Master
和Slave
两种角色的节点
Master
负责事务和非事务性的请求处理
Slave
负责非事务性的请求处理
但是分布式中如何去确定某个节点是Master
还是Slave
解决方案
- 1.通过持久性节点存储和管理其他集群节点的一些信息,从而进行Master选举机制
- 2.有序节点的特性来实现Master选举机制
介绍
针对上诉情况,产生了Zookeeper这样一个中间件,是一个分布式开源协调组件,类似于一个裁判员的身份,专门负责协调和解决分布式系统中的各类问题
总的来说,Zookeeper本就是一个经典的分布式数据一致性的解决方案组件,主要致力于分布式应用中的一些高性能、高可用的并且具有严格访问顺序控制的一些能力模型,来实现分布式协调服务
它底层的数据一致性算法,是基于Paxos
算法演进而来的ZAB协议实现
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!