说说zookeeper的观察者

想写这么一个文章呢,是源于某天,有人问我,你知道zookeeper的观察者吗?作为一个大数据攻城狮,那肯定是知道的呀。于是灵魂三问来了,那你知道为什么要有zookeeper的观察者吗,你知道观察者的作用吗,你知道观察者和leader、flower的区别是什么吗?Enmm…于是得到了一声冷笑,看来基础知识是忘了,恶补一下吧。
暗戳戳的翻了之前的学习笔记之后,现在来理直气壮的回答一下这三个问题吧。

为什么要有观察者?

众所周知,ZooKeeper 是一个分布式的应用程序协调服务,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。Zookeeper 是一个由多个 server 组成的集群,一个 leader,多个 follower。
虽然通过让客户端直接连接到集群的投票成员,ZooKeeper也表现得非常好,但是这种架构使得很难扩展到有大量的客户端情况。问题是,随着我们添加更多投票成员,写入性能也会随着下降。这是因为写操作需要集群中至少一半的节点投票达成一致,因此随着更多投票者的加入,投票的成本会显著增加。
为了减少写成本,并进一步完善集群的可扩展性,于是引入了observer,即观察者。

观察者的作用

上一个问题说了,观察者的作用是为了减少集群的写成本,那具体是怎么减少写成本的呢:

观察者不参与投票,它只监听投票的结果。除了这个简单的区别,观察者精确的和flower一样运行 - 客户端可能链接他们并发送读取和写入请求。观察者像flower一样转发这些请求到leader,而他们只是简单的等待监听投票的结果。正因为如此,我们可以尽可能多的增加观察者的数量,而不影响投票的性能。

观察者还有其他优势。因为他们不投票,他们不是Zookeeper整体的主要组件。因此他们可以故障,或者从集群断开连接,而不影响Zookeeper服务的可用性。对用户的好处是观察者可以连接到比追随者更不可靠的网络。事实上,观察者可以用于从其他数据中心和Zookeeper服务通信。观察者的客户端会看到快速的读取,因为所有的读取都在本地,并且写入导致最小的网络开销,因为投票协议所需的消息数量更小。

观察者和flower的区别

Leader:是整个 Zookeeper 集群工作机制中的核心 。Leader 作为整个 ZooKeeper 集群的主节点,负责响应所有对 ZooKeeper 状态变更的请求。
主要工作:

  1. 事务请求的唯一调度和处理,保障集群处理事务的顺序性。
  2. 集群内各服务器的调度者。
  3. leader为客户端服务器提供读写服务,除了leader外其他的机器只能提供读服务。

Flower:是 Zookeeper 集群状态的跟随者。除了响应本服务器上的读请求外,follower 还要处理leader 的提议,并在 leader 提交该提议时在本地也进行提交。只有他们才参与新 leader的选举、响应 leader 的提议。

Observer :是zookeeper几圈的观察者。如果 ZooKeeper 集群的读取负载很高,或者客户端多到跨机房,可以设置一些 observer 服务器,以提高读取的吞吐量。Observer 和 Follower 比较相似,只有一些小区别:

  1. 首先 observer 即不参加选举也不响应提议,也不参与写操作的“过半写成功”策略;
  2. 其次是 observer不需要将事务持久化到磁盘,一旦 observer 被重启,需要从 leader 重新同步整个名字空间。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值