zookeeper的实用场景—
2016-02-04 11:44
92 查看
数据发布/订阅
就是发布者把数据发送到zookeeper的一个或者一系列的节点上,供订阅者进行订阅。从而达到动态获取数据的目的,能够实现配置信息的集中式管理和数据的动态更新。一般的类似于发布/订阅的模式有推和拉的两种方式,而在zookeeper中,是把这两种方式进行结合了。客户端详服务端注册自己需要关注的节点,一旦该节点的数据发生变更,那么服务端就会向相应的客户端发送watcher事件的通知,客户端接受到这个消息通知后,需要主动的到服务端获取最新的数据。
案例模拟
下面通过一个案例来模拟一下zookeeper的这个场景的使用。在平常的开发中,会遇到这样的需求,系统中需要使用一些通用的配置信息,例如机器的列表信息,运行时开发配置,数据配置信息等。这些全局配置信息通常具备下面这些特性
1.数据量比较小
2.数据内容在运行时会发生变化
3.集群中各个机器共享,配置一致
对于上面中的这些配置,我们一般采取的操作是存取到本地或者内存中,无论采取哪种配置都可以实现相应的操作。但是一旦遇到集群规模比较大的情况的话,两种方式就不再可取。而我们还需要能够快速的做到全部配置信息的变更,同时希望变更成本足够小,因此我们需要一种更为分布式的解决方案。
比如我们把数据库的相关的信息,供全局使用的信息来管理起来,这时候我们就可以在zookeeper上选取一个数据节点来配置存储。
下面的使用了一个jar包,这个jar包是apache的一个子项目curator
。可以从官网上下载使用.
上面的代码就是一个简单的发布/订阅的实现。集群中每台机器在启动阶段,都会到该节点上获取数据库的配置信息,同时客户端还需要在在节点注册一个数据变更的watcher监听,一旦该数据节点发生变更,就会受到通知信息。
相关文章推荐
- android studio目录说明
- 自定义ListView实现下拉刷新
- USACO 1.1 ride
- WonderTeam
- 《时间序列分析及应用:R语言》读书笔记--第一章 引论
- (三)activiti框架搭建
- JAVA反射汇总和示例
- sqoop import ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeExceptrion
- 记不住就存下来---- HTML 5 新增通用属性
- Struts2 文件下载(Stream)
- Feeling kind of the sorrow
- unix网络编程str_cli使用epoll实现
- 二叉树的几个基础遍历算法代码
- Objective-C 【OC语法:不能修改 某个对象的 结构体属性的 成员】
- 针对 华为 荣耀5X root(有bootloader锁)---【亲测刷机】
- [从头学数学] 第72节 平均数与条形统计图
- Jquery 解码 json数据
- 平衡树维护动态凸包
- 内敛元素和块状元素
- ResultSet/ResultSetMetaData相关和用法