分布式协调服务

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

什么是 zookeeper?

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

zookeeper 安装部署

带 Observer 角色的集群


zookeeper 的由来?

zookeeper可以做什么?

  1. 防止单点故障

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

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

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

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

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

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

 2PC 协议和3PC 协议

2pc协议

zookeeper 的集群

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

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

集群角色

Leader 角色

Follower 角色

Observer 角色

ZAB 协议

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

广播协议。

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

1. 崩溃恢复

2. 原子广播

消息广播的实现原理

崩溃恢复(数据恢复)

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

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

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

事件的实现原理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值