码迷,mamicode.com
首页 > 其他好文 > 详细

Zookeeper之基于Observer部署架构

时间:2017-06-05 10:05:38      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:网络   node   哪些   ==   sso   接收   oca   之间   size   

Observers:在不伤害写性能的情况下扩展Zookeeper

虽然通过Client直接连接到Zookeeper集群的性能已经很好了,可是这样的架构假设要承受超大规模的Client,就必须添加Zookeeper集群的Server数量,随着Server的添加,Zookeeper集群的写性能必定下降。我们知道Zookeeper的Znode变更是要过半数投票通过,随着机器的添加,因为网络消耗等原因必定导致投票成本添加,从而导致写性能的下降。

Observer是一种新型的Zookeeper节点。能够帮助解决上述问题,提供Zookeeper的可扩展性。Observer不參与投票,仅仅是简单的接收投票结果。因此我们添加再多的Observer,也不会影响集群的写性能。除了这个区别,其它的和Follower基本上全然一样。

比如:Client都能够连接到他们,而且都能够发送读写请求给他们,收到写请求都会上报到Leader。

Observer有另外一个优势,由于它不參与投票,所以他们不属于Zookeeper集群的关键部位,即使他们Failed,或者从集群中断开,也不会影响集群的可用性。

依据Observer的特点。我们能够使用Observer做跨数据中心部署。假设把Leader和Follower分散到多个数据中心的话,由于数据中心之间的网络的延迟。势必会导致集群性能的大幅度下降。使用Observer的话,将Observer跨机房部署。而Leader和Follower部署在单独的数据中心,这样更新操作会在同一个数据中心来处理,并将数据发送的其它数据中心(包括Observer的),然后Client就能够在其它数据中心查询数据了。可是使用了Observer并不是就能全然消除数据中心之间的延迟,由于Observer还得接收Leader的同步结果合Observer有更新请求也必须转发到Leader,所以在网络延迟非常大的情况下还是会有影响的,它的优势就为了本地读请求的高速响应。


使用Observer

假设要使用Observer模式,能够在相应节点的配置文件加入例如以下配置:

peerType=observer

上面不过告诉Zookeeper该节点是Observer,其次。必须在配置文件指定哪些节点被指定为Observer,比如:

server.1:localhost:2181:3181:observer

眼下我的工作中就用到了Observer,大致的架构例如以下图:

技术分享

Zookeeper之基于Observer部署架构

标签:网络   node   哪些   ==   sso   接收   oca   之间   size   

原文地址:http://www.cnblogs.com/lytwajue/p/6943216.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!