分布式系统协调 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

没有更多内容

加载失败,请刷新页面

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

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

2019/06/28 22:08
1
回答
zookeeper 异常 Will not attempt to authenticate using SASL (unknown error)问题

hosts 配置: # localhost name resolution is handled within DNS itself. 127.0.0.1...

2017/06/16 15:58
1
回答
zookeeper acl 设置ip无效

将节点的ACL设置ip类型,无法访问。 创建节点/ip 并设置acl 本机IP ![图片说明](https://img-ask.csdn.net/uplo...

2019/06/11 08:51
3
回答
win10下如何使用docker安装ZooKeeper、Flink、Kafka?

win10下如何使用docker安装ZooKeeper、Flink、Kafka? 各位前辈能给出一些win10安装ZooKeeper、Flink、Kafk...

2019/12/17 09:15
1
回答
zookeeper集群,启动应用报错!!

错误信息: 2019-12-24 10:09:24,280 [main-EventThread] ERROR o.a.c.framework.imps.E...

2019/12/24 10:15
5
回答
使用java 开发连接 Hbase程序,出现连接之后永久等待

window下 开发的日志如下 14-11-25.17:10:28.904 [main-SendThread(CentOs-PC:2181)] INFO ...

2014/11/25 17:13
2
回答
关于Zookeeper选举机制

当前有5台 zookeeper 服务器(1,2,3,4,5) 我知道是 N/2 +1 机制,也知道投票选举,但是下面几个问题还是没有理解。 问题一: 1....

2019/09/02 13:01
5
回答
zookeeper选举算法中的过半票数才提供正常服务,这是什么逻辑?
小腊肠 的回答 2019/09/20 14:36
最佳答案
通过配置文件知道原来是7台, 所以剩下3台是选不出leader的, 至于动态扩容3.5好像是支持的, 原理还是读取配置, 状态改成looking, 再重新选举, 还是过半机制.. 不提供服务是没有leader不提供服务
1
回答
canal挂载在zookeeper,java客户端client,连接报超时

用canal解析mysql的binlog,客户端client用的zookeeper的地址, 会报超时错误,主机ping 虚拟机(192.****.125)...

2019/09/04 18:17
8
回答
kafka连接zookeeper超时。zookeeper是自己搭建的!!但是无限报超时的错误。

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

2019/05/23 20:18

没有更多内容

加载失败,请刷新页面

zookeeper实战

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

2018/05/29 18:37
55
0
zookeeper安装

vi /usr/local/zookeeper/conf/zoo.cfg vi /usr/local/zookeeper/zookeeper1/conf/zoo.cfg # 数据文件夹 dataDir=/usr/local/zookeeper/data/zookeeper # 日志文件夹 dataLogDir=/usr/local/...

2019/12/29 20:39
20
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
320
0
linux zookeeper安装并设置开机自启

1.官网下载地址 http://archive.apache.org/dist/zookeeper/ 2. 安装 以3.4.10版本为例 创建数据及日志目录 cd /**/zookeeper-3.4.10 mkdir data mkdir logs 创建配置文件 cd /**/zookeeper...

2018/06/19 09:53
341
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
8
1
Zookeeper入门看这篇就够了

Zookeeper是什么 官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态...

windows 64位上把java程序注册为服务的procrun

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

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

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

2019/07/01 23:12
6
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部