• 【从Paxos到Zookeeper分布式一致性原理与实践】笔记


    一、分布式架构

    从单体到分布式结构,及分布式存在的问题

    从ACID到CAP/BASE

    本地事务acid到分布式事务设计的cap/base理论
    ACID :atomicity consistency isolation duration
    CAP : consistency avalible partion tolerance
    BASE : base avalible soft state eventally consistency

    二、一致性协议

    2PC/3PC/Paxos/Zab

    2PC

    两阶段提交法,pre-commit执行业务数据处理,do-commit 提交事务操作
    优点:简单操作
    缺点: 当执行do-commit操作时所有涉及的事务都必须阻塞等待事务处理结果,且当TransactionManager宕机或单个本地事务宕机时整体事务处于一直等待状态

    3PC

    与2PC相比,多了一个can-commit的预处理过程,同时对本地事务有超时时间限制,当事务执行失败/某个本地事务再can-commit/pre-commit超时时,整体事务回滚,且当TranstactionManager向各事务发送commit指令时宕机,本地事务再do-commit阶段未收到commit指令,则会在超时时默认执行提交事务操作。
    优点:增加can-commit过程,设置事务响应超时时间减少分布式事务阻塞范围
    缺点: 当TransactionManager在do-commit阶段宕机时,各事务会在默认超时后执行commit操作,可能会造成事务不一致性

    Paxos - 分布式一致性解决方案

    解决了单点问题,同时解决了无限等待问题以及脑裂问题
    在这里插入图片描述

    paxos与zab的区别

    paxos与zab目标不同,paxos是做一个分布式一致性状态机,而zab是实现一个高可用的分布式数据主备系统
    在这里插入图片描述
    在这里插入图片描述

    三、zookeeper使用

    zookeeper特性

    1、树形结构存储
    2、节点特性
    唯一性
    持久有序节点、持久无须节点、临时有序节点、临时无须节点
    在这里插入图片描述

    开源客户端

    ZkClient
    Curator:https://curator.apache.org/getting-started.html

    四、Zookeeper经典应用场景

    经典应用场景

    1、数据发布/订阅(配置中心)
    2、负载均衡(gameServer)
    用户注册时即绑定对应服务名称,再次登录基于服务名称获取对应ip进行通信
    3、命名服务(注册中心)
    4、集群管理
    5、master选举
    6、分布式锁
    基于ZNode临时有序节点进行锁处理
    7、分布式队列

    zookeeper在大型分布式系统中的应用

    Hadoop
    HBase
    Kafka
    Dubbo
    Canal

    五、Zookeeper技术内幕

    系统模型

    1、数据模型
    2、节点特性
    临时节点生命周期 客户端请求的顺序执行 Watcher通知机制
    3、version-保证原子性
    4、watcher-变更通知机制
    5、Acl保证数据安全

    序列化及通信协议

    Jute、Thrift、Probuf
    通信协议

    Leader选举-基于zab协议(过半)

    Leader/Follower/Observer

    在这里插入图片描述

    数据与存储

    1、内存数据
    2、事务日志
    3、sanpshot

    六、zookeeper运维

    zoo.cfg
    ticktime 最小时间单位,其他时间都为ticktime时间倍数
    initLimit follower同步master数据时间 默认ticketime10倍时间
    syncLimit client同服务器保持心跳时间 5
    clientPort
    forceSync 是否事务信息添加则日志刷入磁盘 默认 是
    log文件 snapshot
    运维
    集群模式
    容灾模式 三机房部署 双机房部署
    扩容与缩容
    gitee地址:https://gitee.com/apache/zookeeper.git

    七、推荐链接

    1、https://blog.csdn.net/qq_34387470/article/details/116835810

  • 相关阅读:
    提高效率:VMLogin浏览器免密码同时登录多个Facebook账号
    实战PyQt5: 144-QChart图表之水平柱状图
    基于centos、alpine制作Java JDK基础镜像
    Linux进程——system函数、popen函数
    云原生写进上海 “十四五” | 上海市信息服务业行业协会领导一行调研「DaoCloud 道客」
    Tomcat10+Spring6报错
    你应该知道的数仓安全:都是同名Schema惹的祸
    内核定时器
    前端实现微信扫一扫的思路
    Windows CMD常用命令大全(所见即所得)
  • 原文地址:https://blog.csdn.net/heng_yan/article/details/125547731