分布式协调服务

服务越来越对,人工管理和维护服务及地址的配置地址信息会越来越困难,单点故障的问题也凸显出来。一旦服务路由或者负载均衡服务器宕机,依赖他的所有服务均将失效。

分布式协调服务_第1张图片

什么是 zookeeper?

zookeeper 是一个开源的分布式协调服务。zookeeper 的设计目标是将哪些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集(由若干条指令组成的,完成一定功能的一个过程),并且以一些列简单一用的接口提供给用户使用。

zookeeper 安装部署

带 Observer 角色的集群

分布式协调服务_第2张图片


zookeeper 的由来?

分布式协调服务_第3张图片

分布式协调服务_第4张图片

zookeeper可以做什么?

  1. 防止单点故障

所以这个中间件需要考虑到集群,而且这个集群还需要分摊客户端的请求流量

  1. 各个节点数据保持一致性

所以这个集群中涉及到数据同步以及会存在leader 节点

  3.如何选举出leader以及leader挂了以后,如何恢复?

       zookeeper 用了基于 paxos 理论所衍生出来的 ZAB 协议

  4.如何做到分布式事务一致性?

 2PC 协议和3PC 协议

2pc协议

分布式协调服务_第5张图片

分布式协调服务_第6张图片

zookeeper 的集群

在 zookeeper 中,客户端会随机连接到 zookeeper 集群中的一个节点,如果是读请求,就直接从当前节点中读取数

据,如果是写请求,那么请求会被转发给leader提交事务,然后 leader 会广播事务,只要有超过半数节点写入成功,那么写请求就会被提交(类 2PC 事务)

分布式协调服务_第7张图片

集群角色

Leader 角色

Follower 角色

Observer 角色

ZAB 协议

ZAB(Zookeeper Atomic Broadcast) 协议是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的原子

广播协议。

ZAB 协议包含两种基本模式,分别是

1. 崩溃恢复

2. 原子广播

消息广播的实现原理

分布式协调服务_第8张图片

崩溃恢复(数据恢复)

1.已经被处理的消息不能丢失

分布式协调服务_第9张图片

2. 被丢弃的消息不能再次出现

zxid,epoch

每一提议都会带有一个唯一的zxid,当leader挂掉,zxid最大并且epoch最大的被选举为最新的leader。

leader 选举

启动的时候的 leader 选举

    比较zxid,再比较myid,再比较epoch

leader 崩溃的时候的的选举

    余下的非 Observer 服务器进行比较zxid以及epoch

数据存储

事务日志

快照日志

运行时日志 bin/zookeeper.out

数据的增删改查操作

事件机制

如何注册事件机制?

通过这三个操作来绑定事件 :getData、Exists、getChildren

如何触发事件?

凡是事务类型的操作,都会触发监听事件。

create /delete /setData

什么样的操作会产生什么类型的事件呢?

事件的实现原理

分布式协调服务_第10张图片

分布式协调服务_第11张图片

分布式协调服务_第12张图片

你可能感兴趣的:(分布式,分布式)