除了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模式的配置文件中加入如下配置:
Java代码 收藏代码
peerType=observer
并在所有server的配置文件中,配置成observer模式的server的那行配置追加:observer,例如:
Java代码 收藏代码
server.1:localhost:2181:3181:observer
分享到:
相关推荐
Zookeeper 的安装和配置相对简单,无论是单机模式还是集群模式,都可以通过简单的步骤快速搭建。它的核心功能包括配置管理、名字服务、分布式锁和集群管理,这些功能使得 Zookeeper 成为了分布式系统中不可或缺的...
3天精通zookeeper视频详细讲解,需要的小...observer角色及其配置 zookeeperAPI连接集群 zookeeper 开源客户端curator介绍 zookeeper四字监控命令 zookeeper图形化的客户端工具(ZooInspector) taokeeper监控工具的使用
接下来是Zookeeper的单机模式配置,需要在Zookeeper目录下创建一个data文件夹,用来存放Zookeeper的数据。这里需要修改Zookeeper的配置文件zoo.cfg,该文件可以从zoo_sample.cfg复制或重命名得到。zoo.cfg文件中可以...
在本场景中,我们将详细探讨如何在单个Linux系统上配置ZooKeeper 3.5.3-beta集群,端口范围从2181到2185。 首先,理解ZooKeeper集群的基本概念。一个ZooKeeper集群由多个服务器组成,每个服务器都运行着ZooKeeper...
在 Zookeeper 中,配置文件是非常重要的,它定义了 Zookeeper 的行为和集群模式下的服务器配置。Zookeeper 的配置文件通常名为 `zoo.cfg`,它位于 Zookeeper 的 `conf` 目录下。 在 `zoo.cfg` 文件中,我们可以配置...
Zookeeper 是一个分布式协调服务,由 Apache 开源项目提供,广泛应用于分布式系统中,如分布式配置、集群管理、命名服务等。它通过提供强一致性、高可用性以及顺序访问等特性,帮助解决分布式环境下的数据同步问题。...
【Zookeeper学习笔记】 Zookeeper是一个分布式协调服务,它的核心目标是简化分布式环境下的数据管理与系统协调。作为Apache Hadoop和HBase的重要组件,Zookeeper提供了简单的原语集,支持分布式应用程序之间的通信...
**大数据技术基础实验报告——Zookeeper的安装配置与应用实践** Apache ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步...
HBase 和 ZooKeeper 配置详解 HBase 和 ZooKeeper 是两个非常重要的分布式系统组件,分别用于分布式数据库和分布式协调服务。今天,我们将详细介绍如何配置 HBase 和 ZooKeeper,以便更好地理解它们之间的交互。 ...
下面将详细阐述Zookeeper的核心概念、主要功能及其在实际应用中的重要性,以及如何利用提供的学习资源进行高效学习。 Zookeeper是由Apache基金会开发的一个开源项目,它是一个分布式的、开放源码的分布式应用程序...
Zookeeper的设计目标之一就是易于使用,通过类似于文件系统的目录树结构来组织数据。 #### Zookeeper的关键特性: - **一致性**:对于所有成功的写操作,在所有服务器上的结果是一致的。 - **原子性**:所有的写...
### HBase 配置内置 ZooKeeper 的详细步骤与解析 #### 一、配置背景与目的 在 HBase 的部署环境中,ZooKeeper 起着非常重要的作用,它主要用于协调集群中的各个节点,并且管理 HBase 的元数据。通常情况下,HBase ...
3. **复制配置文件**:Zookeeper默认配置为单节点模式。为了搭建伪集群,我们需要复制`conf/zoo.cfg`文件,例如命名为`zoo.cfg.cluster1`、`zoo.cfg.cluster2`和`zoo.cfg.cluster3`,分别对应三个节点的配置。 4. *...
### Zookeeper 学习手册知识点概览 #### 1. ZooKeeper 基本概念 - **角色**: - **Leader**:集群中的领导者,负责处理客户端的写请求,并保持集群状态的一致性。 - **Follower**:集群中的跟随者,处理客户端的...
在IT行业中,ZooKeeper是一个广泛使用的分布式协调服务,它为分布式应用提供了高效且可靠的命名服务、配置管理、集群同步等。本篇文章将专注于ZooKeeper的客户端——Curator,这是一个由Apache提供的Java库,旨在...
一款好用的zookeeper配置内容导入导出工具,适用平台是windows,但是也可以修改run.bat为shell脚本,适合linux。 带图形界面,修改config中的config.xml,添加需要管理的zookeeper地址信息,同时可以定义两个用户...
ZooKeeper 是一个广泛使用的分布式协调服务,它提供了许多有用的功能,如配置管理、名字服务、分布式锁等。然而,在 ZooKeeper 中存在一些安全漏洞,例如未经授权的访问、数据泄露等。为了解决这些问题,本文将介绍...
总之,ZooKeeper是一个强大而灵活的工具,对于理解和掌握分布式系统原理具有很高的学习价值。在使用ZooKeeper 3.5.3-beta配置版时,务必注意版本匹配,理解其配置文件和核心概念,以便更好地利用它来解决实际的...
《Zookeeper学习视频》压缩包包含了深入理解与掌握Apache ZooKeeper这一分布式协调服务的重要资源。Zookeeper是一个开源的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈...