Docker启动Zookeeper服务

Docker启动Zookeeper服务

官网:入门指南 Docker镜像地址

一、什么是ZooKeeper

ZooKeeper:分布式应用程序的分布式协调服务

ZooKeeper 是一个针对分布式应用程序的分布式开源协调服务。它公开了一组简单的原语,分布式应用程序可以在这些原语的基础上构建更高级别的同步、配置维护、组和命名服务。它被设计为易于编程,并使用按照熟悉的文件系统目录树结构设计的数据模型。它在 Java 中运行,并具有 Java 和 C 的绑定。

众所周知,协调服务很难做好。它们特别容易出现竞争条件和死锁等错误。ZooKeeper 背后的动机是减轻分布式应用程序从头开始实现协调服务的责任。

设计目标

ZooKeeper 很简单。 ZooKeeper 允许分布式进程通过共享的分层命名空间相互协调,该命名空间的组织方式与标准文件系统类似。命名空间由数据寄存器(用 ZooKeeper 的说法称为 znode)组成,它们类似于文件和目录。与专为存储而设计的典型文件系统不同,ZooKeeper 数据保存在内存中,这意味着 ZooKeeper 可以实现高吞吐量和低延迟数。

ZooKeeper 的实现非常注重高性能、高可用性、严格有序的访问。ZooKeeper 的性能方面意味着它可以在大型分布式系统中使用。可靠性方面使其不会成为单点故障。严格的排序意味着可以在客户端实现复杂的同步原语。

ZooKeeper 被复制。 与它协调的分布式进程一样,ZooKeeper 本身旨在通过一组称为集合的主机进行复制。

动物园管理员服务

组成 ZooKeeper 服务的服务器必须相互了解。它们在内存中维护状态映像,以及持久存储中的事务日志和快照。只要大多数服务器可用,ZooKeeper 服务就可用。

客户端连接到单个 ZooKeeper 服务器。客户端维护一个 TCP 连接,通过该连接发送请求、获取响应、获取监视事件并发送心跳。如果与服务器的 TCP 连接中断,客户端将连接到另一台服务器。

ZooKeeper 已订购。 ZooKeeper 用反映所有 ZooKeeper 事务顺序的数字标记每个更新。后续操作可以使用该顺序来实现更高级别的抽象,例如同步原语。

ZooKeeper 速度很快。 它在“读取为主”的工作负载中尤其快。ZooKeeper 应用程序在数千台计算机上运行,并且在读取比写入更常见的情况下性能最佳(比率约为 10:1)。

二、使用Docker启动Zookeeper

2.1 启动Zookeeper

docker-compose -f zookeeper.yaml -p zookeeper up

version: '3.1'
services:
zoo1:
image: zookeeper
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo2:
image: zookeeper
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo3:
image: zookeeper
hostname: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

2.2 验证

上述yaml文件启动了3个zk服务,下面验证数据同步

(1)打开“zookeeper-zoo1-1”命令窗口

#连接zk服务
/bin/zkCli.sh -server 127.0.0.1:2181
#创建测试数据
[zk: 127.0.0.1:2181(CONNECTED) 1] create /zk_test
Created /zk_test
#设置数据
[zk: 127.0.0.1:2181(CONNECTED) 3] set /zk_test 123456
#获取数据
[zk: 127.0.0.1:2181(CONNECTED) 4] get /zk_test
123456

​​image​​

(2)打开“zookeeper-zoo2-1”命令窗口

#连接zk服务
/bin/zkCli.sh -server 127.0.0.1:2181
#获取数据
[zk: 127.0.0.1:2181(CONNECTED) 0] get /zk_test
123456
#修改数据-测试修改
[zk: 127.0.0.1:2181(CONNECTED) 1] set /zk_test 111222

image

(3)打开“zookeeper-zoo1-1”命令窗口

#获取修改后的数据
[zk: 127.0.0.1:2181(CONNECTED) 5] get /zk_test
111222

​​​image

posted @   安浩阳  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示

目录导航