首页 技术 正文
技术 2022年11月21日
0 收藏 475 点赞 4,858 浏览 933 个字

Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination.

--官网

从官网可以看出,zookeeper是一个分布式一致性服务的软件。认识它源于hadoop中的habse.在后来的使用过程,可以看出它本省就是一个分布式的内存数据库,它由多个节点组成,每个节点的中存储的内容的都是一样的。,看到这里,每个节点保存内容相同,这样也不怕数据丢失了,读的时候随便从一个节点读取就行,但是如何保证这些节点都是“一样的”的。  这样就需要一个协议,名字叫zab协议。内部咋实现的,这里面不讨论。

motan利用zookeeper实现发布订阅。其实所谓发布,其实就是创建节点。订阅就是对自己感兴趣的节点设计监听器。显然:

发布者就是provider:它根据自己URL创建节点。当然consumer也会创建节点。只是前者会被监听,后者不会。

订阅者就是Consumer:它监听某个节点的变化或者相应的节点的子节点变化了解了provider的情况,同一个provider可能有多个服务器提供,有服务器可能会突然宕机,或者加上一个新的服务器,因此consumer要及时的感受到它对应的服务列表的变化。从而可以根据负载均衡机制或者高可用机制选取一个服务提供者。

motan中的zookeeper应用(发布订阅)

  源码中示例代码motan-demo中已经存在MotanDemoService这个服务,我也随便创建了一个服务motan.learn的服务实现一个非常简单的功能。下图是zookeper的目录结构和节点的内容。从中可以看到一个服务下会创建对应的server和client的znode.该service的对应的provider和consumer都会创建自己的节点。比如MotanDemoService中有2个服务器提供服务。一个客户端,这个 client会监测相应的server的服务列表。根据已定规则选取一个对应的server

motan源码解读:注册中心zookeeper(1)

图1.1 motan-demo中的服务对应的zookeeper结构    

motan源码解读:注册中心zookeeper(1)

                              

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,903
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,427
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,244
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,057
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,687
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,726