• 分布式协调服务


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

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

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

    事件的实现原理

  • 相关阅读:
    混合动力电动车优化调度与建模(发动机,电机,电池组等组件建模)(Matlab代码实现)
    重新整理angular+springBoot+mybatis所遇到的问题
    1742C
    java spring cloud 工程企业管理软件-综合型项目管理软件-工程系统源码
    Vue.js 框架源码与进阶 - 封装 Vue.js 组件库
    sign鉴权前置到网关,看看shenyu怎么处理
    缺少比较器,运放来救场!(运放当做比较器电路记录)
    Spring Boot中的JDK 线程池以及Tomcat线程池使用与配置
    解析PR曲线与目标检测中的mAP指标
    深入了解 JavaScript 中的 DOM 和 BOM
  • 原文地址:https://blog.csdn.net/a11112244444/article/details/127950121