本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws
一.写在前面
ZK是一个高效的分布式协调服务,高可用的分布式管理协调框架。 朋友推荐一本书《从paxos到zookeeper》,对我帮助的确很大。
二.集群配置和踩坑
java安装和环境变量配置可以参考 http://www.cnblogs.com/tdws/p/4096300.html
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz 下载 tar -zxvf zookeeper-3.4.10.tar.gz 解压 mv zookeeper-3.4.10 /usr/local 剪切 mv zookeeper-3.4.10/ zookeeper 重命名
下面修改配置文件命名
cd /usr/local/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
dataDir=/usr/local/zookeeper/data
自行mkdir创建data文件夹。
server.1=your_ip:20881:30881
server.2=your_ip:20882:30882
server.3=your_ip:20883:30883
cp -r zookeeper/ zookeeper1
cp -r zookeeper/ zookeeper2
cp -r zookeeper/ zookeeper3
server.1=0.0.0.0:20881:30881
server.2=0.0.0.0:20882:30882
server.3=0.0.0.0:20883:30883
三.应用和小结
学习ZK一段时间,原生API比较难以使用,一般使用zkClient(dubbo依赖于此)和curator框架来操作ZK比较容易。 其典型应用场景包括以下几点:
1.数据发布与订阅
ZK在dubbo中作为注册中心的角色,服务方和调用方都在这里注册。举例来说明,我发布了一个dubbo service,消费者webapp引用这个服务
<dubbo:service interface="com.s2s.service.ItemService" ref="itemServiceImpl"/> 发布的服务
<dubbo:reference interface="com.s2s.service.ItemService" id="itemService"/> 引用服务(将使用RPC调用)
接下来去服务器上查看数据节点,
可以看到根目录上有dubbo节点,dubbo下有com.s2s.service.ItemService, 其节点下又有consumers和providers等。
服务提供者启动时向/dubbo/com.s2s.service.ItemService/providers目录下写入URL
服务消费者启动时订阅/dubbo/com.s2s.service.ItemService/providers目录下的URL。 并且向/dubbo/com.s2s.service.ItemService/consumers目录下写入自己的URL
监控中心启动时订阅/dubbo/com.s2s.service.ItemService/目录下的所有提供者和消费者URL。
所以dubbo监控中心,查看到消费者和服务提供者
2.负载均衡
3.命名服务
4.分布式通知和协调
5.集群管理与Master选举
比如SolrCloud管理。管理集群配置,监控集群状态,选举分片leader
6.分布式锁
7.分布式队列
本文主要是安装配置,分布式理论的学习还是比较好,接下来将会继续分享实践中的收获。