博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大白话讲Zookeeper能做什么?(一):命名服务与配置管理
阅读量:7081 次
发布时间:2019-06-28

本文共 1229 字,大约阅读时间需要 4 分钟。

hot3.png

一、命名服务

在日常开发中,我们会遇到这样的场景:服务A(开发者:小李)需要访问服务B(开发者:小王),但是服务B还在开发过程中(未完成),那么服务A(此时已完成)就不知道如何获取服务B的访问路径了(假设我们使用http服务),小李还有其他工作要做,该怎么办呢?使用zookeeper的服务就可以简单解决:小李和小王约定好:服务B部署成功后,先到zookeeper注册服务(即在zookeeper添加节点/service/B和节点数据)。服务A开发结束后,部署到服务器,然后服务A监控zookeeper服务节点/service/B,如果发现节点数据了,那么服务A就可以访问服务B了。

在服务A中添加代码,用于观察节点/service/B是否存在以及节点数据的变化。

CuratorFramework client = CuratorFrameworkFactory				.builder()				.connectString("192.168.1.123:2181")				.sessionTimeoutMs(5000)				.connectionTimeoutMs(5000)				.retryPolicy(retryPolicy)				.build();				client.start();        Stat stat = new Stat();        byte[] data = client.getData().storingStatIn(stat).forPath("/jike");		if (data != null) {            System.out.println("B'Node data:"+new String(data));            //TODO 执行服务A调用服务B的代码        }

二、配置管理

目前很多公司开发或者使用的程序都是分布式的,而程序总会或多或少的存在一些额外配置,且分散部署在多台机器上。某一条要修改配置,要逐个去修改配置就变得有些困难,特别是应用部署的点数特别大的时候,就成了不可能完成的事情了。一种方式就是把相关配置写到数据库中,每个应用去读取数据库的配置,这种方式优点就是把配置集中管理,缺点也很明显,就是不能及时获得配置的变革,要及时获得变更后的配置,就要不停的去扫描数据库,而这又会造成数据库的压力巨大。

我要说的这种方式就是利用zookeeper的这种发布订阅、watch来实现。即,把相关的配置数据写到zookeeper的某个指定的节点下。应用服务监听这个节点的数据变化,一旦节点数据(配置信息)发生了变化,应用服务就会收到zookeeper的通知,然后应用服务就可以从zookeeper获得新的配置信息。

(该配图从网络下载)

 

(完)

转载于:https://my.oschina.net/OHC1U9jZt/blog/1524613

你可能感兴趣的文章
Netgear wndr3700v2 路由器刷OpenWrt打造全能服务器(九)ftp服务
查看>>
oracle 存储过程的基本语法
查看>>
程序员应该遵守的编程原则
查看>>
各操作系统配置NTP
查看>>
使用mysql索引技巧及注意事项
查看>>
按照发起的方式,DDoS可以简单分为三类
查看>>
2月新书,送出一本你爱的!
查看>>
2018LinuxCon,开源界的大咖们来了,赶紧行动!
查看>>
10月24日程序员关爱日
查看>>
python函数定义
查看>>
服务器的安装
查看>>
如何优雅的处理异常(java)?
查看>>
VRRP 虚拟冗余路由协议
查看>>
express不是内部或外部命令
查看>>
通过反射获取成员方法并使用
查看>>
String StringBuffer StringBuilder
查看>>
bash的工作特性及命令状态返回查询
查看>>
Samba服务共享(匿名用户访问、本地用户访问、虚拟用户访问)
查看>>
HttpServletResponse输出乱码的问题
查看>>
你真的很熟分布式和事务吗?
查看>>