`
agapple
  • 浏览: 1584051 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

zookeeper学习&使用系列文章

阅读更多

近段时间,因项目需要接触了下zookeeper,通过阅读源码以及项目中的使用总结,慢慢的积累了zookeeper的一系列的学习总结。

希望对大家使用zookeeper有所帮助,同时如有描述欠佳的地方尽情拍砖。

zookeeper是什么?

 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

 

 目前zookeeper被应用于hadoop/hbase中进行节点的管理,通过zookeeper你可以很方便的开发出一些分布式控制的工具,比如分布式lock, barrier,countDown , Semaphore等,甚至有人使用zookeeper开发了一个分布式Collections。 

 

我项目中使用的情况:

主要是用于解决数据库的数据同步, 通过过程的E.T.L工作节点均使用集群化处理,整个集群的调度通过zookeeper进行管理,比如同步流程的启动,关闭,挂起等,有点带流式计算的味道。

几个技术点:

 1. 分布式lock, 解决Load时为保证源库的事务变更顺序,需要做一个串行录入

 2. 优先集群, 利用zookeeper的observer解决中美机房网络延迟的影响。美国部署observer,中国部署leader/follower

 3. zookeeper watcher,ETL节点的流转通过node的watcher进行通知

 

 

文章列表:

 

分享到:
评论
4 楼 agapple 2011-12-15  
fengsage 写道
agapple 写道
fengsage 写道
目前正在研究阿里的DUBBO。打算用zookeeper作为注册中心。
配置了zookeeper集群。但是我发现,集群环境中如果只有2台服务器做集群的时候。一旦一台服务器关闭。另外一台服务器也会相应堵塞住。导致我在正常的服务器上也无法进行注册。

注册
指的是在zookeeper上建立自己的node.


这个是zookeeper的选举算法限制的,默认zookeeper需要一个奇数的节点,必须有n/2+1节点存活时才可以正常工作

那能否。只有2台集群的时候。一旦一台服务器挂掉。另外一台不做vote了。直接单例运行。


做不到,不过可以有一个偏门,如果你认为哪台机器最不可能挂,就让它的权重比另一台机器大一点,只剩它这台机器时就可以超过1/2了
3 楼 fengsage 2011-12-15  
agapple 写道
fengsage 写道
目前正在研究阿里的DUBBO。打算用zookeeper作为注册中心。
配置了zookeeper集群。但是我发现,集群环境中如果只有2台服务器做集群的时候。一旦一台服务器关闭。另外一台服务器也会相应堵塞住。导致我在正常的服务器上也无法进行注册。

注册
指的是在zookeeper上建立自己的node.


这个是zookeeper的选举算法限制的,默认zookeeper需要一个奇数的节点,必须有n/2+1节点存活时才可以正常工作

那能否。只有2台集群的时候。一旦一台服务器挂掉。另外一台不做vote了。直接单例运行。
2 楼 agapple 2011-12-15  
fengsage 写道
目前正在研究阿里的DUBBO。打算用zookeeper作为注册中心。
配置了zookeeper集群。但是我发现,集群环境中如果只有2台服务器做集群的时候。一旦一台服务器关闭。另外一台服务器也会相应堵塞住。导致我在正常的服务器上也无法进行注册。

注册
指的是在zookeeper上建立自己的node.


这个是zookeeper的选举算法限制的,默认zookeeper需要一个奇数的节点,必须有n/2+1节点存活时才可以正常工作
1 楼 fengsage 2011-12-15  
目前正在研究阿里的DUBBO。打算用zookeeper作为注册中心。
配置了zookeeper集群。但是我发现,集群环境中如果只有2台服务器做集群的时候。一旦一台服务器关闭。另外一台服务器也会相应堵塞住。导致我在正常的服务器上也无法进行注册。

注册
指的是在zookeeper上建立自己的node.

相关推荐

Global site tag (gtag.js) - Google Analytics