• 分布式协调服务


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

    什么是 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

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

    事件的实现原理

  • 相关阅读:
    squid代理服务器
    LeetCode——622.设计循环队列
    开源文本嵌入模型M3E
    Python基础(四)
    二蛋赠书二期:《Python机器学习项目实战》
    dpdk 程序如何配置网卡收发包队列描述符配置?
    【SQL语法基础】什么是SQL函数?为什么使用SQL函数可能会带来问题?
    【Maven学习】3.4 实验四:创建 Maven 版的 Web 工程
    mac电脑mysql下载与安装
    RSSHub让万物皆可RSS
  • 原文地址:https://blog.csdn.net/a11112244444/article/details/127950121