-
ZooKeeper-21-ZooKeeper 的典型应用场景
ZooKeeper的典型应用场景
在第5章中,我们已经向读者讲解了如何通过ZooKeeper的客户端来使用ZooKeeper。
从本章开始,我们将从实际的分布式应用场景出发,来讲解如何使用ZooKeeper去解决一些常见的分布式问题,以帮助读者更好地使用ZooKeeper。
ZooKeeper是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员可以使用它来进行分布式数据的发布...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-20-内部原理
ZooKeeper内部原理
本章与其他章节不同,本章不会讲解任何关于如何通过ZooKeeper构建⼀个应⽤程序相关的知识,主要是介绍ZooKeeper内部是如何运⾏的,通过从⾼层次介绍其所使⽤的协议,以及ZooKeeper所采⽤的在提供⾼性能的同时还具有容错能⼒的机制。这些内容⾮常重要,通过这些为⼤家提供了⼀个更深度的视⾓来分析为什么程序与ZooKeeper⼀同⼯作时会如此运⾏。如果你打算...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-19-api 使用
ZK 的启动
具体参考 zk 入门
启动路径
pwdD:\tools\zookeeper\apache−zookeeper−3.6.2−bin\bin zkServer
启动日志如下:
2021-03-14 16:15:58,039 [myid:] - INFO [main:QuorumPeerConfig@174] - Reading configuration ...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-18-⼀个主-从模式例⼦的实现
⼀个主-从模式例⼦的实现
本节中我们通过zkCli⼯具来实现主-从⽰例的⼀些功能。
这个例⼦仅⽤于教学⽬的,我们不推荐使⽤zkCli⼯具来搭建系统。使⽤zkCli的⽬的仅仅是为了说明如何通过ZooKeeper来实现协作菜谱,从⽽撇开在实际实现中所需的⼤量细节。我们将在下⼀章中进⼊实现的细节。
角色
主-从模式的模型中包括三个⾓⾊:
主节点
主节点负责监视新的从节点和任务,...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-17-通过ZooKeeper实现分布式锁
实现⼀个原语:通过ZooKeeper实现锁
关于ZooKeeper的功能,⼀个简单的例⼦就是通过锁来实现临界区域。
假设有⼀个应⽤由n个进程组成,这些进程尝试获取⼀个锁。再次强调,ZooKeeper并未直接暴露原语,因此我们使⽤ZooKeeper的接⼜来管理znode,以此来实现锁。为了获得⼀个锁,每个进程p尝试创建znode,名为/lock。如果进程p成功创建了znode,就表⽰它获得...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-16-qourum 仲裁模式
ZooKeeper与仲裁模式
到⽬前为⽌,我们⼀直基于独⽴模式配置的服务器端。如果服务器启动,服务就启动了,但如果服务器故障,整个服务也因此⽽关闭。这⾮常不符合可靠的协作服务的承诺。出于可靠性,我们需要运⾏多个服务器。
配置文件
为了完成这些,我们将要使⽤以下配置⽂件:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=./data
cli...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-15-了解 ZooKeeper 架构
ZooKeeper架构
现在我们已经讨论了ZooKeeper暴露给应⽤的⾼层操作,我们需要详细了解服务实际上是如何运⾏的。应⽤通过客户端库来对ZooKeeper实现了调⽤。客户端库负责与ZooKeeper服务器端进⾏交互。
ZooKeeper仲裁
在仲裁模式下,ZooKeeper复制集群中的所有服务器的数据树。但如果让⼀个客户端等待每个服务器完成数据保存后再继续,延迟问题将⽆法接受...
2016-09-25 04:21:05 |
Apache
-
ZooKeeper-14-了解 ZooKeeper 基础知识
了解ZooKeeper
前⼀章从较⾼的层⾯讨论了分布式应⽤的需求,同时也讨论了在协作⽅⾯的共性需求。
我们以实际应⽤中使⽤很⼴泛的主-从架构(master-worker)为例⼦,从中摘取了⼀些常⽤原语。本章将开始讨论ZooKeeper,看⼀看这个服务如何实现这些协作⽅⾯的原语。
ZooKeeper基础
很多⽤于协作的原语常常在很多应⽤之间共享,因此,设计⼀个⽤于协作需求的服务的⽅法往...
2016-09-25 04:21:05 |
Apache