分布式系统协调 ZooKeeper

分布式系统协调 ZooKeeper

Apache
Java 查看源码»
跨平台
Apache
2008-10-27

ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

Zookeeper是Google的Chubby一个开源的实现.是高有效和可靠的协同工作系统.Zookeeper能够用来leader选举,配置信息维护等.在一个分布式的环境中,我们需要一个Master实例或存储一些配置信息,确保文件写入的一致性等.Zookeeper能够保证如下3点:

  • Watches are ordered with respect to other events, other watches, and
    asynchronous replies. The ZooKeeper client libraries ensures that
    everything is dispatched in order.

  • A client will see a watch event for a znode it is watching before seeing the new data that corresponds to that znode.

  • The order of watch events from ZooKeeper corresponds to the order of the updates as seen by the ZooKeeper service.

 

在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据.如果在创建znode时Flag设置 为EPHEMERAL,那么当这个创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper 里.Zookeeper使用Watcher察觉事件信息,当客户端接收到事件信息,比如连接超时,节点数据改变,子节点改变,可以调用相应的行为来处理数 据.Zookeeper的Wiki页面展示了如何使用Zookeeper来处理事件通知,队列,优先队列,锁,共享锁,可撤销的共享锁,两阶段提交.

那么Zookeeper能帮我们作什么事情呢?简单的例子:假设我们我们有个20个搜索引擎的服务器(每个负责总索引中的一部分的搜索任务)和一个 总服务器(负责向这20个搜索引擎的服务器发出搜索请求并合并结果集),一个备用的总服务器(负责当总服务器宕机时替换总服务器),一个web的 cgi(向总服务器发出搜索请求).搜索引擎的服务器中的15个服务器现在提供搜索服务,5个服务器正在生成索引.这20个搜索引擎的服务器经常要让正在 提供搜索服务的服务器停止提供服务开始生成索引,或生成索引的服务器已经把索引生成完成可以搜索提供服务了.使用Zookeeper可以保证总服务器自动 感知有多少提供搜索引擎的服务器并向这些服务器发出搜索请求,备用的总服务器宕机时自动启用备用的总服务器,web的cgi能够自动地获知总服务器的网络 地址变化.这些又如何做到呢?

  1.  提供搜索引擎的服务器都在Zookeeper中创建znode,zk.create("/search/nodes/node1",
    "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);

  2. 总服务器可以从Zookeeper中获取一个znode的子节点的列表,zk.getChildren("/search/nodes", true);

  3. 总服务器遍历这些子节点,并获取子节点的数据生成提供搜索引擎的服务器列表.

  4. 当总服务器接收到子节点改变的事件信息,重新返回第二步.

  5. 总服务器在Zookeeper中创建节点,zk.create("/search/master", "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);

  6. 备用的总服务器监控Zookeeper中的"/search/master"节点.当这个znode的节点数据改变时,把自己启动变成总服务器,并把自己的网络地址数据放进这个节点.

  7. web的cgi从Zookeeper中"/search/master"节点获取总服务器的网络地址数据并向其发送搜索请求.

  8. web的cgi监控Zookeeper中的"/search/master"节点,当这个znode的节点数据改变时,从这个节点获取总服务器的网络地址数据,并改变当前的总服务器的网络地址.

的码云指数为
超过 的项目
加载中

评论(3)

boatgm
boatgm
mark ZooKeeper
西夏一品堂
西夏一品堂
zookeeper 如何取消watch #ZooKeeper#
douxn
douxn
zookeeper的standalone模式和distributed模式有什么区别?请教大神。。。#ZooKeeper#

ZooKeeper 3.4.13 发布,分布式应用程序协调服务

ZooKeeper 3.4.13 发布了,ZooKeeper是一个分布式应用程序协调服务,是 Google Chubby 的开源实现,也是 Hadoop 和 Hbase 的重要组件。提供的功能包括:配置维护、域名服务、分布式同步、组服...

2018/08/09 17:26

ZooKeeper 3.5.4-beta 发布,分布式应用程序协调服务

3.5.4-beta 是 3.5 的第二个测试版本,包含 113 处错误修复和改进。ZooKeeper是一个分布式的,开源的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重...

2018/05/20 20:54

ZooKeeper 3.4.12 发布,分布式服务框架

ZooKeeper 3.4.12 已发布,此版本修复了 22 个 issue,包括导致 dataDir 和 dataLogDir 出现问题的错误修复。有关详细信息,请参阅 ZooKeeper 3.4.12 发布说明。 3.4.12 还新增了以下两项特性...

2018/05/16 10:28

ZooKeeper 3.4.11 稳定版发布,Bug 修复版本

ZooKeeper 3.4.11 已发布,此版本修复了 53 个 issue,包括对 Java 9 的支持和其他关键错误修复。有关详细信息,请参阅 ZooKeeper 3.4.11 发布说明。 3.4.11 还新增了以下两项特性: [ZOOKE...

2017/11/17 10:25

ZooKeeper 3.5.3-rc1 发布,分布式服务框架

ZooKeeper 3.5.3-rc1 发布了,暂未发现更新内容,点此保持关注,或查看更新日志。 点此查看 GitHub 上的提交记录。 下载地址 http://www.apache.org/dyn/closer.cgi/zookeeper/ Source code ...

2017/04/06 14:23

Apache Zookeeper 3.4.6 发布

经过将近一年半的开发之后,Apahce Zookeeper 团队在 2014年3月10号 发布新版本 Zookeeper-3.4.6,Zookeeper的上一个版本 3.4.5 于2012年11月18号 发布。 Zookeeper 分布式服务框架是 Apache...

2014/03/14 15:23

Apache ZooKeeper 3.4.5 发布

Apache ZooKeeper 3.4.5 发布了,ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标...

2012/11/19 13:13

Apache ZooKeeper 3.3.6 发布

Apache ZooKeeper 3.3.6 发布了,ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标...

2012/08/04 08:38

ZooKeeper 3.3.5 发布,分布式系统协调

Apache ZooKeeper 3.3.5 发布了,ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标...

2012/03/21 15:53

Apache ZooKeeper 3.3.4 发布

ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,...

2011/11/30 07:33

没有更多内容

加载失败,请刷新页面

23
回答
程序员的出路在哪里?七年半老程序员的一点心得

我是南方人,大专,软件技术专业,2011年底出来实习做前端。实习大家都懂的,薪资低任务重,做了大半年,到2012年拿了毕业证就离职了。说实话当时的技术也菜...

06/28 22:08
2
回答
大佬们,如何通过配置一套,就可以实现集群呢,正常讲,我是需要一台一台配置的
gammey 的回答 08/05 13:19
最佳答案
你可以把启动脚本信息全部都存储泽zookeeper内。比如ZK里建立一个service目录,每一个服务都写一个key,key以服务的名字命名,然后对应的value是json格式记录的字符串,保存了jar包路径和启动脚本路径。 问题是你存储了,谁来读取,使用和维护这些内容。
1
回答
Zookeeper集群在本地机器上搭建的三台,为什么外部机器访问不了,内网其他机器telnet端口不通

防火墙已关 hosts 本地zk状态 程序里面写 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 可以连,但是换...

07/25 09:00
1
回答
您发布的整合Dubbo+Zookeeper+SpringMVC 这个 我按照流程都走完了,为什么最后那个网站上面只看到提供者的信息,看不到消费者?

@小帅帅丶 你好,想跟你请教个问题:我的消费者是0个,代码也没有报错,这个我都按照流程运行完了,最后消费者也调取到生产者了,那为什么这个网站上我的提供者是...

06/28 09:45
6
回答
zookeeper+dubbo实现分布式服务调用,提供者关闭后重新注册,消费者一定要重启吗?
看见一座山 的回答 05/28 11:04
最佳答案
对应的duboo中的源码: com.alibaba.dubbo.common.Constants DEFAULT_SESSION_TIMEOUT = 60 * 1000; 这个时间配置了 检查时间是60秒 配长点就可以了
2
回答
kafka连接zookeeper超时。zookeeper是自己搭建的!!但是无限报超时的错误。

下面是主节点和从节点的zookeeper状态: 但是 kafka报错: 这是什么情况, brokerid 和myid 两个都没有错。防火墙也关了 ,服务器...

05/23 20:18
2
回答
Dubbo消费者服务启动过程正常,但服务并没有启动

采用Dubbo和Zookeeper架构,使用maven构建多模块项目,我的模块是dubbo的消费者,项目启动过程并无异常,但访问localhost:端口 ...

05/17 15:48
2
回答
exception=org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid

exception=org.apache.zookeeper.KeeperException$ConnectionLossException: Keepe...

2015/11/05 10:22
2
回答
Java中,还有类似 zookeeper 这样的组件嘛 ?

Java中,还有类似 zookeeper 这样的组件嘛 ? C++ 中的也行

03/01 18:43

没有更多内容

加载失败,请刷新页面

zookeeper实战

ZooKeeper系列之一:ZooKeeper简介 zookeeper 集群搭建及使用 : https://mp.weixin.qq.com/s?src=11×tamp=1535178473&ver=1081&signature=bmODLuk-6oVnhohdWq2mXoJqGzSz07n7ZBahSTCh9F...

2018/05/29 18:37
48
0
CentOS6 上安装 zookeeper-3.4.10 服务

参考两篇文章: zookeeper-3.4.10的安装配置: https://www.jianshu.com/p/5a4d7390bbfd Zookeeper3.4.10详解和安装: https://blog.csdn.net/qq_32642039/article/details/80887823 SpringBoot...

2018/10/26 22:38
24
0
linux zookeeper安装并设置开机自启

1.官网下载地址 http://apache.org/dist/zookeeper/ 2. 安装 创建数据及日志目录 cd /**/zookeeper-3.4.6 mkdir data mkdir logs 创建配置文件 cd /**/zookeeper-3.4.6/conf/ #拷贝配置文件并...

2018/06/19 09:53
17
0
JEESZ-Zookeeper集群安装

1. 在根目录创建zookeeper文件夹(service1、service2、service3都创建) [root@localhost /]# mkdir zookeeper 通过Xshell上传文件到service1服务器:上传zookeeper-3.4.6.tar.gz到/softwa...

2018/06/01 17:28
2
1
windows 64位上把java程序注册为服务的procrun

之前用windows wrapper,但是wrapper在64位windows上的版本是付费的。后来上网找到了这个工具。大家熟悉的Tomcat就是用它做的服务。配置挺简单的。文件下载之后基本配置如下: 把prunsrv.exe...

2018/12/01 11:30
56
0
ZooKeeper集群的安装、配置、高可用测试 Dubbo注册中心集群Zookeeper-3.4.6

Dubbo建议使用Zookeeper作为服务的注册中心。 Zookeeper集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的。正是基于这个特性,要将ZK集群的节点数量要为奇数(2n+1:如3、...

07/01 23:12
2
0
zookeeper集群的安装配置

本文介绍如何配置zookeeper集群

2015/07/12 17:05
810
1
Zookeeper 学习资料汇总

Zookeeper的功能以及工作原理 Zookeeper教程 分布式服务框架 Zookeeper — 管理分布式环境中的数据 Zookeeper由浅入深 阿里巴巴为什么不用 ZooKeeper 做服务发现......

08/04 10:27
1
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部