VPS参考测评推荐
专注分享VPS主机优惠信息
衡天云优惠活动
华纳云优惠活动
荫云优惠活动

历史上构建zookeeper服务器最方便的方法(推荐)

主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情!
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作

什么是动物园管理

ZookeeperApache的顶级项目。它为分布式应用程序提供高效、高可用的分布式协调服务,并提供分布式基本服务,如数据发布/订阅、负载平衡、命名服务、分布式协调/通知和分布式锁定。zookeeper由于其使用方便性能优异和稳定性好,被广泛应用于大型分布式系统中,如Hadoop、HBase、Kafka和Dubbo

Zookeeper有三种操作模式:单机模式、伪集群模式和集群模式。

动物园管理员的相关知识

动物园管理员数据模型

zookeeper节点属性

zookeeper节点的生命周期取决于节点的类型。在zookeeper中,节点可以根据持续时间分为持久节点和短暂节点。根据节点是否有序(默认为无序),可以节点分为顺序节点和无序节点

创建持久节点后,它将始终保存在zookeeper中,除非它被主动删除(它不会因为创建节点客户端会话失败而消失)和临时节点

zookeeper的应用场景

Zookeeper是一个高度可用的分布式数据管理系统协调框架。该框架基于Paxos算法的实现,保证了分布式环境下数据的强一致性。zookeeper正是基于这一特性解决了许多分布式问题。

值得注意的是,zookeeper本质上并不是为这些应用场景而设计的。它是许多开发人员根据其框架的特点使用其提供的一系列API接口(或原语)探索的一种典型使用方法

数据发布和订阅配置中心)

发布订阅模式,顾名思义,就是发布者将数据发布到ZK节点,供用户动态获取数据,实现配置信息的集中管理和动态更新。例如,面向服务的服务框架的全局配置信息和服务地址列表非常适合使用。

应用程序中使用的一些配置信息放在ZK上进行集中管理。这种场景通常是这样的:当应用程序启动时,它会主动获取配置。同时,它将在节点注册一个观察者。这样,以后每次更新配置时,都会实时通知订阅客户端,以达到获取最新配置信息的目的。在分布式搜索服务中,索引的元信息和服务器集群机的节点状态存储在ZK的一些指定节点中,用于每个客户端订阅。分布式日志收集系统。该系统的核心工作是收集分布在不同机器上的日志。收集器通常根据应用程序分配收集任务单元。因此,有必要在ZK上创建一个以应用程序名称作为路径的节点P,并以子节点的形式在节点P上注册应用程序的所有机器IP。这样,当机器发生变化时,它可以通知收集器实时调整任务分配。系统中的一些信息需要动态获取,并且会有关于手动修改这些信息的问题。它通常公开接口,如JMX接口,以获取一些运行时信息。引入ZK后,您不需要自己实现一组方案,只需将这些信息存储在指定的ZK节点上即可。注意:在上面提到的应用场景中,有一个默认前提:数据量很小,但数据更新可能很快。

负载平衡

这里的负载平衡指的是软负载平衡。在分布式环境中,为了确保高可用性,通常同一应用程序或服务提供商将部署多个副本以实现对等服务。用户需要从这些对等服务器中选择一个来执行相关的业务逻辑,其中比较典型的是消息中间件中的生产者和消费者负载平衡。

命名服务

命名服务也是分布式系统中的常见场景。在分布式系统中,通过使用命名服务,客户端应用程序可以根据指定的名称获取资源或服务的地址提供者等信息。命名实体通常可以是集群中的机器提供的服务地址远程对象等&mdash—所有这些都可以统称为它们的名字。在一些分布式服务框架中,更常见的是服务地址列表。通过调用ZK提供的用于创建节点的API,可以轻松创建全局唯一路径,该路径可用作名称。

阿里巴巴集团开源分布式服务框架Dubbo使用zookeeper作为其命名服务来维护全球服务地址列表。在Dubbo实现中:当服务提供者启动时,它将其URL地址写入ZK上指定节点的/Dubbo/${servicename}/providers目录。此操作完成服务的发布。当服务使用者启动时,订阅/Dubbo/${servicename}/providers目录中的提供者URL地址,并将其自己的URL地址写入/Dubbo/${servicename}/consumers目录。请注意,向ZK注册的所有地址都是临时节点,这确保服务提供者和使用者可以自动感知资源更改。

此外,Dubbo还通过订阅/Dubbo/${servicename}目录中所有提供者和使用者的信息来监视服务粒度。

分布式通知/协调

zookeeper独特的观察者注册和异步通知机制可以很好地实现分布式环境下不同系统之间的通知和协调,实现数据变化的实时处理。使用方法通常是不同系统在ZK上注册相同的znode,并监听znode的变化(包括znode本身和子节点的内容)。如果一个系统更新znode,另一个系统可以接收通知并相应地进行处理。

另一种心跳检测机制:被检测系统和被检测系统没有直接的联系,而是通过ZK上的一个节点,这大大降低了系统耦合。另一种系统调度模式:系统控制台推送系统组成。控制台的职责是控制推送系统执行相应的推送工作。管理者在控制台上执行的一些操作实际上修改了ZK上某些节点的状态,ZK将这些更改通知注册观察者(即推送系统)的客户机,以便他们执行相应的推送任务。

另一种工作报告模式:有些类似于任务分发系统。子任务启动后,到ZK注册一个临时节点,并定期报告其进度(将进度写回临时节点),以便任务管理器能够实时了解任务进度。

分布式锁

分布式锁主要是由于zookeeper保证了数据的强一致性。锁服务可以分为两类:一类是保持独占性,另一类是控制定时。

所谓keep exclusive是指只有一个试图获得锁的客户端才能成功获得锁。通常的方法是将ZK上的znode视为锁,并通过创建znode来实现它。所有客户端创建/分发锁节点(最终成功创建的客户端)拥有锁。控制定时是指所有查看以获取锁的客户端最终都将被安排执行,但有一个全局定时。该方法基本上与上述方法类似,只是此处/distribute_uu;Lock已经预先存在,并且客户端在其下创建一个临时有序节点(这可以节点属性:createmode控制)。短暂的(连续的)。ZK(/distribute)uulock)的父节点维护一个序列,以确保创建子节点的时间,从而形成每个客户端全局时间。

由于同一节点的子节点的名称不能相同,因此只要在节点下创建znode,成功创建表示成功锁定。注册一个侦听器以侦听此znode。只要删除此znode,就会通知其他客户端锁定它。创建临时顺序节点:在节点下创建节点。当请求到来时,创建一个节点。因为它是连续的,所以序列号最小的一个获得锁。释放锁后,通知下一个序列号以获取锁。

分布式队列

就队列而言,有两种类型:一种是传统的先进先出队列,另一种是等待队列成员聚集后再按顺序执行。第一种类型的队列符合上述分布式锁服务中控制定时场景的基本原理,这里不再重复。

第二个队列实际上是基于FIFO队列的增强。通常,可以在/queue的znode下预先建立/queue/num节点,并分配n(或直接分配n到/queue),表示队列大小。然后,每次队列成员加入时,判断队列大小是否已达到,并决定是否可以开始执行。这种用法的典型场景是,在分布式环境中,当许多子任务完成(或条件就绪)时,需要执行大型任务a。此时,当其中一个子任务完成(准备就绪)时,转到/tasklist创建您自己的临时计时节点createmode)。短暂的)uuSequential),当/tasklist发现它下面的子节点数量符合指定的数量时,它可以按顺序进入下一步。

使用dokcer compose构建集群

我们已经介绍了很多关于zookeeper的应用场景。接下来,我们将学习如何构建zookeeper集群,然后执行上面的应用场景。

文件目录结构如下所示:

├── docker-compose.yml

编写docker-compose.yml文件

docker-compose.yml文件的内容如下:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 版本:39,;3.4' 服务:;zoo1:;图片:zookeeper;重新启动:始终;主机名:zoo1;端口:  -2181:2181;环境:nbsp;动物园我的id:1和nbsp;zoo_uu服务器server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181;zoo2:;图片:zookeeper;重新启动:始终;主机名:zoo2;端口:  -2182:2181;环境:nbsp;动物园我的id:2&nbspnbsp;zoo_uu服务器server.1=zoo1:2888:3888;2181服务器。2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181;zoo3:;图片:zookeeper;重新启动:始终;主机名:zoo3;端口:  -2183:2181;环境:nbsp;动物园我的id:3&nbspnbsp;zoo_uu服务器server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181服务器3=0.0.0.0:2888:3888;二千一百八十一

在此配置文件中,docker运行三个zookeeper映像,并通过ports字段将本地端口2181、2182和2183绑定到相应容器的端口2181。

zoo_uuMy_uuid和zoo_uuuu服务器是构建zookeeper集群所需的两个环境变量。zoo_uu_u;my_uuuID标识服务的ID。它是一个介于1和255之间的整数,在群集中必须是唯一的。zoo_uu服务器群集中的主机列表

在docker-compose.yml所在的目录中执行docker compose up,您可以看到启动日志

连接动物园管理

集群启动后,我们可以连接zookeeper来执行与节点相关的操作。

首先,我们需要下载zookeeper。Zookeeper下载地址。将其解压到conf目录删除zoo_uuchange示例。CFG到zoo.CFG

外形描述

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 #每个滴答声的毫秒数#滴答声时间:CS通信心跳#服务器之间或客户端服务器之间保持心跳的时间间隔,即每次滴答声将发送一个心跳。滴答声时间以毫秒为单位。ticktime=2000#初始#同步阶段可采取的节拍数#initlimit:LF initial communication time limit#群集中跟随服务器f)和引导服务器(L)之间初始连接期间可容忍的最大心跳数(节拍数)。initlimit=5#在#发送请求和获得确认#synclimit之间可以传递的节拍数:LF同步通信时间限制集群中跟随者服务器和领导者服务器之间的请求和响应之间可以容忍的最大心跳数(节拍数)。synclimit=2#存储快照目录。#不要将/TMP用于存储,这里的/TMP只是示例dataDir:存储快照目录zookeeper保存数据。默认情况下,Zookeeper保存在该目录中写入数据的日志文件。datadir=/data/soft/zookeeper-3.4.12/data &#Datalogdir:log file directory#保存日志文件目录。datalogdir=/data/soft/zookeeper-3.4.12/logs客户端连接端口#clientport客户端连接端口#客户端连接到zookeeper服务器端口。Zookeeper将侦听此端口并接受客户端访问请求。clientport=2181#客户端连接的最大数量。#如果需要处理更多客户端,请增加此值#maxclientcnxns=60####在启用自动推送之前,请务必阅读#管理员指南#的维护部分。#http://zookeeper.apache.org/doc/current/zookeeperadmin.html#sc#maintenance##要保留在datadir中的快照数#autopush.snapretaincount=3#清除任务间隔(小时)#设置为"0“;要禁用自动清除功能#autopurge.purgeinterval=1&#服务器名称和地址:集群信息(服务器编号、服务器地址、LF通信端口、选择端口)#此配置项具有特殊的写入格式。规则如下所示:server.n=yyy:a:b其中n表示服务器编号,YYY表示服务器的IP地址a表示LF通信端口,它表示服务器群集中的领导者之间交换的信息端口。B为选择端口,表示选择新领导时服务器之间相互通信的端口(领导挂断时,其他服务器将相互通信并选择新领导)。一般来说,集群中每台服务器a端口是相同的,每台服务器的B端口也是相同的。但是,使用伪集群时,IP地址相同,只有端口a端口B不同

默认配置正常,无需修改zoo.cfg。接下来,执行命令。/zkcli.sh-要连接的解压缩bin目录中的服务器127.0.0.1:2181。

欢迎来到动物园管理员!
2020-06-01 15:03:52512[myid:]-信息[主发送线程本地主机:2181):clientcnxn$sendthread@1025]-打开服务器本地主机的套接字连接/127.0.0.1:2181。将不会尝试使用sasl进行身份验证(未知错误
jline支持已启用
2020-06-01 15:03:52576[myid:]-信息[主发送线程本地主机:2181):clientcnxn$sendthread@879]-已建立到本地主机的套接字连接/127.0.0.1:2181,启动会话
2020-06-01 15:03:52599[myid:]-info[主发送线程本地主机:2181):clientcnxn$sendthread@1299]-在服务器localhost/127.0.0.1:2181上完成会话建立,会话ID=0x1000014008000,协商超时=30000

观察者::

watchedevent状态:syncconnected类型:无路径:null
[zk:127.0.0.1:2181(已连接)0]

接下来,我们可以使用命令查看节点

使用LS命令查看当前zookeeper的内容

命令:LS/

[zk:127.0.0.1:2181(已连接)10]ls/

[动物园管理员]```

新的znode节点“zk”以及与之关联的字符串

命令create/ZK mydata

[zk:127.0.0.1:2181(已连接)11]创建/zk mydata

创建/zk[zk:127.0.0.1:2181(已连接)12]ls/[zk,zookeeper][zk:127.0.0.1:2181(已连接)13]```

获取znode节点ZK

命令get/ZK

[zk:127.0.0.1:2181(已连接)13]get/zk

mydata czxid=0x400000008 ctime=mon jun 01 15:07:50 cst 2020 mzxid=0x400000008 mtime=mon jun 01 15:07:50 cst 2020 pzxid=0x400000008 cversion=0 dataversion=0 aclversion=0 ephemeralowner=0x0 datalength=6 numchildren=0

```

删除znode节点ZK

命令:delete/ZK

[zk:127.0.0.1:2181(已连接)14]删除/zk

[zk:127.0.0.1:2181(已连接)15]ls/[zookeeper]```

由于篇幅有限,下一篇文章将根据上面提到的zookeeper应用场景以代码逐一实现它。

zookeeper的Docker配置文件存储库

zookeeper的Docker配置文件存储库

zookeeper的Docker配置文件存储库

可以直接从上面拉项目。启动rocketmq只需两步

从GitHub中提取项目,并在zookeeper文件夹中执行docker compose up命令

参考文章

http://www.jucaiylzc.cn /2011/10/08/1232/
http://www.dongdongrji.cn /2019/04/25/1_uu动物园管理员%E8%AF%A6%E8%A7%A3/
https://www.jintianxuesha.com /cyfonly/p/5626532.html
http://www.hengxuangyul.com .com/docker zookeer cluster/
https://www.qiaoheibpt.com maizitoday.github.io/post/zookeeper%E5%85%A5%E9%97%A8/

总结

这是本文的结尾,介绍了历史上构建zookeeper服务器方便方法。有关构建zookeeper服务器的更多信息,请搜索server home之前的文章或继续浏览下面的相关文章。我希望你将来能支持服务器家庭!

以上就是主机参考分享的关于 历史上构建zookeeper服务器方便方法推荐) 的内容,部分内容来源自网络,不代表本站观点。

转载请注明:https://zhujicankao.com/?p=65070

这几篇文章你可能也喜欢:

本文由主机参考刊发,转载请注明:历史上构建zookeeper服务器最方便的方法(推荐) https://zhujicankao.com/65070.html

【腾讯云】领8888元采购礼包,抢爆款云服务器 每月 9元起,个人开发者加享折上折!
打赏
转载请注明原文链接:主机参考 » 历史上构建zookeeper服务器最方便的方法(推荐)
主机参考仅做资料收集,不对商家任何信息及交易做信用担保,购买前请注意风险,有交易纠纷请自行解决!请查阅:特别声明

相关推荐

评论 抢沙发

评论前必须登录!