Zookeeper搭建集群及协同

Zookeeper搭建集群及协同

协同的实现

首先启动一个zkCli客户端(zkCLi-1),创建一个workers节点。

create /workers

使用ls监控当前节点。

ls -w /workers
[]

当前/workers中没有子节点。

新开一个zkCli客户端(zkCli-2),在/workers中创建一个新节点。

create -e /workers/w1 "w1:2220"

此时zkCli-1中收到通知。

WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/workers

使用ls在zkCli-1中查看节点信息。

ls -w /workers

返回

[w1]

此时在zkCli-2中执行quit退出。

zkCli-1中再次用ls查看。

[]

这样一个简单的协同服务就已经实现了。

集群搭建

在我们上一篇说的什么是挖矿?一文中,最后留下了一个问题,DPoS算法,这个类似于选举的算法。

Zookeeper集群中,也是使用了一种类似的选举算法,感兴趣的可以去了解一下Paxos算法的论文。

http://lamport.azurewebsites.net/pubs/paxos-simple.pdf

在Zookeeper集群中被选举出来的节点叫做leader,其他节点叫做follow。

为了方便演示,我将我本地的Zookeeper拷贝为了三份,不过记得修改它们三份中的配置文件。

需要修改的是dataDir的路径以及端口号。

服务器0中zoo.cfg

//修改部分
dataDir=/tmp/zookeeper/data0
clientPort=2190
//新增部分(三份cfg均相同)
server.0=127.0.0.1:3333:3334
server.1=127.0.0.1:4444:4445
server.2=127.0.0.1:5555:5556

服务器1中zoo.cfg

//修改部分
dataDir=/tmp/zookeeper/data1
clientPort=2191
//新增部分(三份cfg均相同)
server.0=127.0.0.1:3333:3334
server.1=127.0.0.1:4444:4445
server.2=127.0.0.1:5555:5556

服务器2中zoo.cfg

//修改部分
dataDir=/tmp/zookeeper/data2
clientPort=2192
//新增部分(三份cfg均相同)
server.0=127.0.0.1:3333:3334
server.1=127.0.0.1:4444:4445
server.2=127.0.0.1:5555:5556

分别启动三个Zookeeper服务端。

zookeeper

可以看到已经自动选出了一个Leader节点。

此时我们启动一个zkCli来使用这个三节点集群。

./zkCli.sh -server 127.0.0.1:2190,127.0.0.1:2191,127.0.0.1:2192

zookeeper

可以看到zkCli已经连接到port为2191的节点,也就是服务器1(一个Follower节点)。

现在我们关闭服务器1。

zookeeper

posted @   AntzUhl  阅读(415)  评论(0)    收藏  举报
编辑推荐:
· 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
· Hangfire Redis 实现秒级定时任务,使用 CQRS 实现动态执行代码
· Android编译时动态插入代码原理与实践
阅读排行:
· 使用TypeScript开发微信小程序(云开发)-入门篇
· 没几个人需要了解的JDK知识,我却花了3天时间研究
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 管理100个小程序-很难吗
· 在SqlSugar的开发框架中增加对低代码EAV模型(实体-属性-值)的WebAPI实现支持
点击右上角即可分享
微信分享提示