大数据之Zookeeper 完整使用 基础进阶源码分析(二) - 日理万妓 2022-09-08 11:50 80阅读 0赞 ### 大数据之Zookeeper 完整使用 ### * 一、算法基础 * * 1、拜占庭将军问题 * 2、Paxos算法——解决什么问题 * 3、Paxos算法描述: * 4、Paxos算法流程 * 5、ZAB 协议 * * 1、 什么是 ZAB 算法 * 2、Zab 协议内容 * 6、CAP理论 * 二、源码详解 # 一、算法基础 # > 思考:Zookeeper 是如何保证数据一致性的?这也是困扰分布式系统框架的一个难题。 > ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_27_color_FFFFFF_t_70_g_se_x_16] ## 1、拜占庭将军问题 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_29_color_FFFFFF_t_70_g_se_x_16] ## 2、Paxos算法——解决什么问题 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_26_color_FFFFFF_t_70_g_se_x_16] ## 3、Paxos算法描述: ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_28_color_FFFFFF_t_70_g_se_x_16] ## 4、Paxos算法流程 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_23_color_FFFFFF_t_70_g_se_x_16] 情况 1 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_22_color_FFFFFF_t_70_g_se_x_16] 情况2 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_26_color_FFFFFF_t_70_g_se_x_16 1] 情况3 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_25_color_FFFFFF_t_70_g_se_x_16] ## 5、ZAB 协议 ## ### 1、 什么是 ZAB 算法 ### > Zab 借鉴了 Paxos 算法,是特别为 Zookeeper 设计的支持崩溃恢复的原子广播协议。基于该协议,Zookeeper 设计为只有一台客户端(Leader)负责处理外部的写事务请求,然后Leader 客户端将数据同步到其他 Follower 节点。即 Zookeeper 只有一个 Leader 可以发起提 > 案。 ### 2、Zab 协议内容 ### > Zab 协议包括两种基本的模式:消息广播、崩溃恢复。 消息广播 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_28_color_FFFFFF_t_70_g_se_x_16 1] 崩溃恢复——异常假设 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_28_color_FFFFFF_t_70_g_se_x_16 2] 崩溃恢复——Leader选举 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_27_color_FFFFFF_t_70_g_se_x_16 1] 崩溃恢复——数据恢复 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_28_color_FFFFFF_t_70_g_se_x_16 3] ## 6、CAP理论 ## > CAP理论告诉我们,一个分布式系统不可能同时满足以下三种 > CAP理论 > ⚫ 一致性(C:Consistency) > ⚫ 可用性(A:Available) > ⚫ 分区容错性(P:Partition Tolerance) > 这三个基本需求,最多只能同时满足其中的两项,因为P是必须的,因此往往选择就在CP或者AP中。 > 1)一致性(C:Consistency) > 在分布式环境中,一致性是指数据在多个副本之间是否能够保持数据一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。 > 2)可用性(A:Available) > 可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。 > 3)分区容错性(P:Partition Tolerance) > 分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。ZooKeeper保证的是CP > > > (1)ZooKeeper不能保证每次服务请求的可用性。(注:在极端环境下,ZooKeeper可能会丢弃一些请求,消费者程序需要重新请求才能获得结果)。所以说,ZooKeeper不能保证服务可用性。 > > (2)进行Leader选举时集群都是不可用。 # 二、源码详解 # [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_27_color_FFFFFF_t_70_g_se_x_16]: /images/20220829/f88107419ad245929c2ce1524f78c01d.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_29_color_FFFFFF_t_70_g_se_x_16]: /images/20220829/c864ac89c82b4396b3760c9464ca9c30.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_26_color_FFFFFF_t_70_g_se_x_16]: /images/20220829/b84a1efb4ce445cc9bc456b24e0ec077.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_28_color_FFFFFF_t_70_g_se_x_16]: /images/20220829/3b4d60ad1a1b4410af48f95ade1b02a6.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_23_color_FFFFFF_t_70_g_se_x_16]: /images/20220829/85490fdc5bad45658bec893aea9e3abe.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_22_color_FFFFFF_t_70_g_se_x_16]: /images/20220829/e1370273ae2c4124808245ce7bcd3fbb.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_26_color_FFFFFF_t_70_g_se_x_16 1]: /images/20220829/8531c8f9ac7240bb9c0000cb74a0f87c.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_25_color_FFFFFF_t_70_g_se_x_16]: /images/20220829/fe6bb45a342a4938b65be83fc76ddff6.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_28_color_FFFFFF_t_70_g_se_x_16 1]: /images/20220829/cf60ac7d461e4a39a7ab7256ddfe5dc7.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_28_color_FFFFFF_t_70_g_se_x_16 2]: /images/20220829/d557621f970e497d988696d8fc5f35dc.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_27_color_FFFFFF_t_70_g_se_x_16 1]: /images/20220829/283a4612329d4439afb15b7158c502c3.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_Q1NETiBA5bCP5Z2P6K6y5b6u5pyN5Yqh_size_28_color_FFFFFF_t_70_g_se_x_16 3]: /images/20220829/b1ee385c13e041f38b8cabda031d0cb9.png
还没有评论,来说两句吧...