设为首页 收藏本站
查看: 1164|回复: 0

[经验分享] zookeeper features(summary)

[复制链接]

尚未签到

发表于 2017-4-19 06:05:11 | 显示全部楼层 |阅读模式
  **refer to zookeeper 3.2.2**
  zookeeper 利用场合:
  a.全局配置服务.
  其实相当于是利用了zk的高可用性和快速访问的特点,可以将某些全局属性置于其中,当然 由于每个znode是1m存储上限,所以不能是大量的数据.事实上,可以把zk看成是高可用的文件系统也是可以的(high available file system)
  b.锁服务
  由于zk有EPHEMERAL_SEQUENTIAL创建znode的模式,所以当加入 一个新node时,自动在后缀加1;同时由于是ephemeral的,即便lock znode死了,其它znodes也可以重新进行leader election。
  c.队列 管理
  与b相似
  d。统一命令服务
  就是利用了它的树型目录结构的特点,产生唯一的名称。可以在建立znode时指定
  ---------------------
  1.写流程
DSC0000.jpg

  
DSC0001.png
 从以上图可以看出,当client要写操作时,
  a)通过已经连接上的follow(也可能是leader)生成一个Request,然后有一串的RequestProcessors传递,直到递到leader;
  b1)leader此时开始2pc中的first phase:vote_request,
  b2)各followers接受到vote_request后,进行决择 是否可以提交,返回 vote_commit或vote_abort;
  --以上b为表决 阶段
  c1)当leader收集到所有的表决 結果后进行分析 ,如果 commit人数大于指定quorum便生成一个global_commit,否则生成一个global_abort,transform to all flowers
  c2)当所有followers收到leader命令后进行相应 操作,commit or abort 。
  --以上c为决定阶段
  这样就 构成 一个distributed transaction commit 了。当然 实现上可能不至于这么简单。
  可以看出2pc无非就是比较1pc比了b phase,所以是比它安全多了,减少了不一致的概率。当然 ,2pc也可能出现 当global message传递时再现1pc中的情况,但按照概率 的理论,如果 cluster environment比较稳定时效果是理想的。
  当然为了防止leader失效时follower不知所措的情况,zookeeper实现为让followers自己重新elect,其实这也是3pc的实现呀!!
  置于具体的更新 过程,当follower收到global后,先是进行disk上的update,然后再对znode trees in memory 进行update.
  2.读流程
  由于client已经连接上了follower,所以读取时直接从当前 peer上读取即可,这就是本页中为什么可以快速访问的原因 之一了。
  当然它的过程与wite时是相反的,query from memory only .
  3.zookeeper中的watch分为zookeeper status event 和 znode events,其中这些events都 是一次性的。即想要获得下次的event必须要调用读取方法时加入watch或true参数。
  4.zk中的znode data也是有版本的:
  [zk: localhost:2181(CONNECTED) 1] get /test
b
cZxid = 871
ctime = Wed May 25 14:45:32 CST 2011
mZxid = 880
mtime = Wed May 25 15:40:55 CST 2011
pZxid = 871
cversion = 0
dataVersion = 4
  其中dataVersion就是真正的版本号,每次修改加1.在命令行中set path data [version]时,version就是此版本,如果 指定的版本与最新 版本不匹配时,将产生错误;置于api中setData(path,value,version)没试过,估计也是此意,此时-1代表忽略版本号。
  5.簡易
  zookeeper形如一个文件系统,高度精简。
  6.decouple
  类似spring ioc一样,zookeeper是独立运行的一个组件,可以置于项目中,也可以单独成群。
  7.high avaiable
  因为所有的server都是peer的运行在replicated mode中,避免了single point failure
  8.快速访问capacity
  由于读取直接从内存副本中直接 读取,避免了直接access disk的io开销
  9.zk怎样实现广播式移除一个peer node?
  参见 zab
  10.zk怎样实现监听?
  thread,http?
  see also:http://leibnitz.iteye.com/blog/908805
  http://zookeeper.apache.org/doc/r3.2.2/zookeeperOver.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-366041-1-1.html 上篇帖子: 分布式服务框架 Zookeeper 下篇帖子: ZooKeeper锁原理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表