zookeeper的应用场景是什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
1、命名服务/名称服务/namespace管理/名字空间
模拟实现: znode系统中的任何一节点的寻路路径,有一个唯一的绝对路径
你把对应的那个名字在zookeeper的znode中创建一个节点,如果能创建成功,证明取名成功
所有同种类型的名称节点都必须统一的存储在统一目录
2、配置管理:把一个集群的所有配置都放置在zookeeper进行管理
原因:由于zookeeper提供了一个非常好的监听机制,能够让监听程序立即感知到数据的变化
zookeeper的两大核心功能区实现配置管理
模拟实现:
1、创建一个节点存储一个值(删除/修改/增加)
2、添加监听器去监听这个值的对应的事件
3、监听程序就一直等待着zookeeper发送回来的通知(响应的事件)
4、监听程序就按照事件对象WatchEvent对象中包含的信息来进行判断,来做不同的业务处理
5、业务逻辑(当数据发生变化之后重新再查询一次就OK)是独立于zookeeper
3、锁:分为两大类;
1)读写锁
读锁:共享锁 写锁:独占锁 排它锁
2)时序锁
利用创建带顺序编号的节点 就能对应的模拟完成
4、队列:分为两种:
1)同步队列:一个队列中的所有成员都聚齐时,才能进行某个业务操作
2)FIFO : 时序锁几乎是一样的实现逻辑
5、集群管理:分为两种:
1)主节点的管理:主备之间的竞争问题
可以创建一个节点代表一个namenode(最好是临时节点)
只要某个namenode一宕机,那么zookeeper系统中代表这个namenode的对应znode节点就会自动被删除
zookeeper就能发送通知到监听程序
如果说其中一个namenode的监听程序监听到当前这个namenode宕机
那么这个监听程序就会发送通知到另外一个监听程序
这个监听程序就可以发起一次选举来选举新的active 状态的anemnode
当前这个监听程序还会负责;
1、确定之前的那个namenode一定要死亡
2、确保当前要切成成active状态的namenode一定能切换过来
防止脑裂
2)从节点的管理:从节点的 上线管理(创建znode) 和 下线管理(删除一个znode)