`
邢邢色色
  • 浏览: 232115 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ZooKeeper学习之Observer模式及其配置

阅读更多

除了leader和follow模式之外,还有第三种模式:observer模式。observer和follower在一些方面是一样的。详细点来讲,他们都向leader提交proposal。但与follower不同,observer不参与投票的过程。它简单的通过接收leader发过来的INFORM消息来learn已经commit的proposal。因为leader都会给follower和observer发送INFORM消息,所以它们都被称为learner。

 

INFORM消息背后的原理

因为observer不会接收proposal并参与投票,leader不会发送proposal给observer。leader发送给follower的commit消息只包含zxid,并没有proposal本身。所以,只发送commit消息给observer则不会让observer得知已提交的proposal。这就是使用INFORM消息的原因,此消息本质上是一个包含了已被commit的proposal的commit消息。

 

简而言之,follower会得到两个消息,而observer只会得到一个。follower通过广播得到proposal的内容,接下来获得一个简单commit消息,此消息只包含了zxid。相反,observer得到一个包含了已被commit的proposal的INFORM消息。

 

参与了决定是否commit一个proposal的投票的server就称为PARTICIPANT server,leader和follower都属于这种server。observer则称为OBSERVER server。

 

使用observer模式的一个主要的理由就是对读请求进行扩展。通过增加更多的observer,可以接收更多的请求的流量,却不会牺牲写操作的吞吐量。注意到写操作的吞吐量取决于quorum的size。如果增加更多的server进行投票,quorum会变大,这会降低写操作的吞吐量。然而增加observer并不会完全没有损耗,每一个新的observer在每提交一个事务后收到一条额外的消息,这就是前面提到的INFORM消息。这个损耗比起加入follower来投票来说损耗更少。

 

使用observer的另一个原因是跨数据中心部署。把participant分散到多个数据中心可能会极大拖慢系统,因为数据中心之间的网络的延迟。使用observer的话,更新操作都在一个单独的数据中心来处理,并发送到其他数据中心,让其他数据中心的client消费数据。阿里开源的跨机房同步系统Otter就使用了observer模式,可以参考。

 

注意observer的使用并无法完全消除数据中心之间的网络延迟,因为observer不得不把更新请求转发到另一个数据中心的leader,并处理INFORM消息,网络速度极慢的话也会有影响,它的优势是为本地读请求提供快速响应。

 

配置

为了使用observer模式,在任何想变成observer模式的配置文件中加入如下配置:

 

peerType=observer

 

并在所有server的配置文件中,配置成observer模式的server的那行配置追加:observer,例如:

 

server.1:localhost:2181:3181:observer
0
0
分享到:
评论

相关推荐

    zookeeper-3.4.11.zip

    本文将深入探讨Zookeeper 3.4.11版本的功能特性及其在Dubbo中的应用。 一、Zookeeper简介 Zookeeper由Apache基金会开发,基于Java实现,设计灵感来源于Paxos算法。它提供了一种分布式一致性服务,确保在大规模...

    ZooKeeper原理及其在Hadoop和HBase中的应用.docx

    值得注意的是,Observer角色默认不被启用,如果要启用Observer模式,需要在相关节点的配置文件中添加`peerType=observer`,并更新所有服务器的配置,将Observer节点标记为`observer`。 Observer的角色与Follower...

    zookeeper集群搭建

    ### Zookeeper 集群搭建及关键知识点解析 ...为了构建更为强大的集群环境,还需要进一步学习如何搭建 Zookeeper 集群、配置集群参数以及解决可能出现的各种问题。这些内容将在后续章节中详细介绍。

    zookeeper.docx教程

    Zookeeper配置文件中的一些关键参数及其含义如下: - `tickTime`: 基本时间单位,单位毫秒。 - `initLimit`: 初始同步阶段,允许的最大心跳间隔。 - `syncLimit`: 同步连接阶段,允许的最大心跳间隔。 - `dataDir`: ...

    Zookeeper面试题.rar

    6. Zookeeper的CAP原理及其选择? 7. Zookeeper的ACL权限控制如何设置? 8. 当Zookeeper集群中节点数量增加时,性能有何变化? 通过理解和掌握以上内容,你将在Zookeeper相关的面试中展现出扎实的技术功底。继续...

    ZooKeeper面试题(2020最新版)-重点.pdf

    Zookeeper 支持三种部署模式:单机模式、伪集群模式和集群模式。 21. 集群最少要几台机器,集群规则是怎样的?Zookeeper 集群至少需要三台机器,遵循奇数台机器的原则,以保证在少数机器故障时仍能正常工作。 22. ...

    hadoop课后题带答案

    本文主要针对Hadoop相关知识进行总结,涵盖了大数据的基本特征、Hadoop组件、Hadoop集群部署、环境配置、HDFS操作、MapReduce工作流程、Zookeeper、YARN、数据仓库、Hive、Flume、Azkaban以及Sqoop等多个知识点。...

    1000道 互联网Java工程师面试题 485页_PDF密码解除.pdf

    - **ZAB协议:**ZooKeeper的基本协议,分为两种模式:恢复模式和广播模式。 - **恢复模式:**用于在新领导人选举后重新同步状态。 - **广播模式:**用于正常状态下的数据更新。 **4. 四种类型的数据节点Znode** - ...

    互联网大厂面试题2022-4,一共9个

    5. **ZooKeeper 事务与命令**:熟悉 CRUD 操作(创建、读取、更新和删除)及其对应的 ZooKeeper 命令。 6. **故障恢复**:分析 ZooKeeper 如何处理网络分区和服务器故障,并保证数据的一致性。 7. **ZooKeeper 在...

Global site tag (gtag.js) - Google Analytics