Zookeeper基本知识
Zookeeper的Session:
(1)客户端和server间采用长连接
(2)连接建立后,server产生session ID(64位)返还给客户端
(3)客户端定期发送ping包来检查和保持和server的连接
(4)一旦session结束或超时,所有ephemeral节点会被删除
(5)客户端可根据情况设置合适的session超时时间
Zookeeper的Watchs:
Watch是客户端安装在server的事件侦听方法
(1) 当侦听的变化发生时,server发消息给客户端进行通知
(2) 客户端使用单线程对所有事件按顺序同步回调
(3) 触发回调条件:
• 客户端连接、断开连接
• 节点数据发生改变
• 节点本身发生变化
(4)Watch是单发的,每次触发后会被自动删除
(5)如果需要再次侦听事件,必须重新安装watch
(6)无法保证跟踪到每一个变化
(7)避免安装大量watches侦听在同一个节点
Zookeeper的一些注意事项:
在客户端事件回调实现有阻塞调用
• 试图跟踪每个状态变化
• 大量watch侦听同一个znode的状态变化
• 客户端会有需要长时间处理的GC(garbage collection)
• Session超时后上层应用不进行恢复处理
可以把zookper看成一个文件系统,文件系统中的所有文件形成一个数状结构,zookeeper维护着这样的树形层次结构,树中的节点称为znode。每个znode有一个与之相关联的ACL(Access Control List)
znode通过路径被引用,而且要采用绝对路径,即必须以/开头。znode存储的数据要小于1M,这个可以配置,建议不要存储太大的东西,避免同步操作时间过长。
znode类型
短暂znode:回话结束,zookeeper就会把短暂znode删除,短暂znode不可以有子节点。
持久znode:回话结束也不会被删除,除非客户端明确要删除此znode,持久znode可以有子节点。
对于在特定时刻需要知道有哪些分布式资源可用的应用来说,使用短暂znode比较合适。
znode的观察机制
znode以某种方式发生变化时,“观察”(watch)机制可以让客户端得到通知。可以针对ZooKeeper服务的“操作”来设置观察,该服务的其他操作可以触发观察。比如,客户端可以对某个客户端调用exists操作,同时在它上面设置一个观察,如果此时这个znode不存在,则exists返回false,如果一段时间之后,这个znode被其他客户端创建,则这个观察会被触发,之前的那个客户端就会得到通知。
Zookeeper基本知识的更多相关文章
- zookeeper 入门知识
作为开启分布式架构的基石,除了必会还有的选么 自己的一些理解,有错误的话请一定要给予指正! 一.是什么? 分布式数据一致性的解决方案. 二.有什么用 数据的发布/订阅(配置中心) . 负载均衡(du ...
- Zookeeper相关知识
一.Zookeeper是什么? Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务. ...
- zookeeper入门知识
ZooKeeper 是什么? ZooKeeper 顾名思义 动物园管理员,他是拿来管大象(Hadoop) . 蜜蜂(Hive) .小猪(Pig) 的管理员, Apache Hbase和 Apache ...
- zookeeper基础知识整理
http://blog.csdn.net/pelick/article/details/7269670 http://zookeeper.apache.org/doc/trunk/javaExampl ...
- zookeeper基础知识
Zookeeper简介 ZooKeeper设计目的 最终一致性client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能. 可靠性具有简单.健壮.良好的性能,如 ...
- zookeeper相关知识与集群搭建
Zookeeper Zookeeper相关概念 Zookeeper概述 Zookeeper是一个分布式协调服务的开源框架,主要用来解决分布式集群中应用系统的一致性问题. Zookeeper本质上是一个 ...
- zookeeper相关知识的总结:
一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术.那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术 主要用来解决分布式环境当中多个进程之间的 ...
- ZooKeeper理论知识
前言 相信大家对 ZooKeeper 应该不算陌生.但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢? 我本人曾 ...
- zookeeper基本知识入门(一)
之前我们在搭建hadoop分布式环境的时候用到过Zookeeper注册hadoop服务.那么到底Zookeeper在分布式环境中发挥了什么作用呢,这次我们就来讨论这个问题. 在分布式系统中通常都会有多 ...
随机推荐
- nginx 重启命令
#重启nginx sudo /etc/init.d/nginx restart sudo /etc/init.d/nginx Usage: /etc/init.d/nginx {start|stop| ...
- ACE_linux:TCP通信
1.涉及类 ACE_INET_Addr//ACE网络地址ACE_SOCK_Acceptor//ACE网络服务器ACE_SOCK_Connector//ACE网络客户端ACE_SOCK_Stream// ...
- 统计某一字段等于不同值的个数的sql语句(分享)
本文介绍下,用一条sql语句统计某一字段等于不同值的个数,方法很独特,有需要的朋友参考下. 表t,数据: id type001 1001 0002 1001 ...
- Nat网络地址转换
Nat中的术语 -------------------------------------------------------------------------------------------- ...
- NULL, NUL, EOF, '\0',0区别
NULL: 定义为0或0L或(void *)0,用于指示一个指针值是空,即什么都不指:'\0': 用且只用字符串结束符;NUL : 0x00,0值字符,可以用于结束ASCII字符串,和'\0'类似,但 ...
- Oracle RAC集群安装之:Grid软件安装过程蓝屏
前几天在安装一套RAC服务器的过程中,遇到了蓝屏事件,折腾了蛮久(在排查是否存在硬件问题上花费了相当多一部分时间),整个过程大概说明如下: 1.两台华为的PC SERVER,操作系统为WIN SERV ...
- 去除C/C++程序代码中的注释
最近搞软件著作权,去除代码空行和注释比较麻烦,想写个程序自动去除,去网上搜了下,发现有类似的程序,不过只有去除注释.鉴于word中可以去除空行(用^p^p替换^p),先用网上的代码,以后有时间写个完整 ...
- bnuoj 20834 Excessive Space Remover(水水)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=20834 [题意]: 每次减少一半的空格,问经过多少次操作能得到每个单词之间的空格为1,输入字符串大小 ...
- c++ 发布动态.so
原文地址 代码改变世界 Posts - 105, Articles - 0, Comments - 1561 Cnblogs Dashboard Logout Home Contact Gallery ...
- Competing in a data science contest without reading the data
Competing in a data science contest without reading the data Machine learning competitions have beco ...