ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Zookeeper有什么作用?优缺点?有什么应用场景?

2022-05-29 20:33:05  阅读:246  来源: 互联网

标签:场景 服务 zk Zookeeper 优缺点 分布式系统 ZNode 节点


作用

Zookeeper作用包括存储数据(文件系统)和监听(监听通知机制)

优点

1)分布式协调过程简单

2)同步:zk高度同步,这意味着服务器进程之间既存在互斥又存在合作,同步有助于Apache HBase进行配置管理。

3)有序消息:zk跟踪一个数字,表示每个更新的顺序,保证消息有序

4)序列化:根据具体规则,zk对数据进行编码。 另外,它还可确保我们的应用程序始终如一地运行。 但是,在MapReduce中,我们使用此方法(序列化)来协调队列以执行正在运行的线程

5)速度:在读请求多的情况下,能以很快的速度运行

6)可扩展性:此外,可以通过部署更多机器来加强zk的性能

7)有序性有何优势?:众所周知,zk中的消息是有序的。所以,为了实现更高级别的抽象,需要有序性。 这就是有序性对我们有利的方式

8)快:在读多的情况下,zk会非常快

9)可靠性:zk非常可靠,因为一旦zk更新了,更新后的数据会一直保持,直到被覆盖更新

10)原子性:zk只有两种情况,要么全部成功,要么全部失败,没有中间状态的情况

11)实时性:zk保证在一定时间段内,客户端最终一定能从服务器上读到最新的数据状态

缺点

1)增加新的zk服务器时可能导致数据丢失

在现有服务器中,当新zk服务器数量超过zk服务中已存在的数量时数据会丢失。 同时,向zk服务发出Start命令,新服务器可能形成仲裁

2)不能迁移

在没有用户干预的情况下,zk服务器无法从版本3.4迁移到3.3,然后再迁移到3.4。

3)节点数(其实集群中只要存活数过半即对外可用,但是会有脑裂情况发生)

要求3或5个这样奇数个zk节点(要求奇数是为了保证选举的正常进行因为leader选举要求 可用节点数量 > 总节点数/2,防止脑裂造成集群不可用。同时在容错能力相同的情况下,奇数个节点更节省资源)

4)机架感知复制

目前,它不支持机架放置和感知

5)缩容

不支持减少pod的数量,以防止意外数据丢失

6)磁盘变更

不支持在初始部署后更改volume要求,以防止重新分配意外丢失数据

7)虚拟网络

当服务部署在虚拟网络上时,如果没有完全重新安装,服务可能无法切换到主机网络。 另外,对于尝试从主机切换到虚拟网络,它们是相同的情况

8)Kerberos

在虚拟网络上,它目前不支持启用Kerberos

9)支持有限

对跨群集方案的支持非常有限。 但是,没有CP系统会一直支持跨集群。 虽然我们可以说consul似乎在这方面做得更好

应用场景

1)数据的发布/订阅

数据的发布/订阅系统,通常也用作配置中心。在分布式系统中,你可能有成千上万个服务节点,如果想要对所有服务的某项配置进行更改,由于数据节点过多,你不可逐台进行修改,而应该在设计时采用统一的配置中心。之后发布者只需要将新的配置发送到配置中心,所有服务节点即可自动下载并进行更新,从而实现配置的集中管理和动态更新。 Zookeeper通过Watcher机制可以实现数据的发布和订阅。分布式系统的所有的服务节点可以对某个ZNode注册监听,之后只需要将新的配置写入该ZNode,所有服务节点都会收到该事件。

2)命名服务

在分布式系统中,通常需要一个全局唯一的名字,如生成全局唯一的订单号等,Zookeeper可以通过顺序节点的特性来生成全局唯一ID,从而可以对分布式系统提供命名服务。

3)Master选举

分布式系统一个重要的模式就是主从模式(Master/Salves),Zookeeper可以用于该模式下的Matser选举。可以让所有服务节点去竞争性地创建同一个ZNode,由于Zookeeper不能有路径相同的ZNode,必然只有一个服务节点能够创建成功,这样该服务节点就可以成为Master节点。

4)分布式锁

可以通过Zookeeper的临时节点和Watcher机制来实现分布式锁,这里以排它锁为例进行说明:分布式系统的所有服务节点可以竞争性地去创建同一个临时ZNode,由于Zookeeper不能有路径相同的ZNode,必然只有一个服务节点能够创建成功,此时可以认为该节点获得了锁。其他没有获得锁的服务节点通过在该ZNode上注册监听,从而当锁释放时再去竞争获得锁。锁的释放情况有以下两种: 当正常执行完业务逻辑后,客户端主动将临时ZNode删除,此时锁被释放; 当获得锁的客户端发生宕机时,临时ZNode会被自动删除,此时认为锁已经释放。 当锁被释放后,其他服务节点则再次去竞争性地进行创建,但每次都只有一个服务节点能够获取到锁,这就是排他锁。

5)集群管理

Zookeeper还能解决大多数分布式系统中的问题: 如可以通过创建临时节点来建立心跳检测机制。如果分布式系统的某个服务节点宕机了,则其持有的会话会超时,此时该临时节点会被删除,相应的监听事件就会被触发。 分布式系统的每个服务节点还可以将自己的节点状态写入临时节点,从而完成状态报告或节点工作进度汇报。 通过数据的订阅和发布功能,Zookeeper还能对分布式系统进行模块的解耦和任务的调度。 通过监听机制,还能对分布式系统的服务节点进行动态上下线,从而实现服务的动态扩容。

6)事务操作

在ZooKeeper中,能改变ZooKeeper服务器状态的操作称为事务操作。一般包括数据节点创建与删除、数据内容更新和客户端会话创建与失效等操作。 对应每一个事务请求,ZooKeeper都会为其分配一个全局唯一的事务ID,用 ZXID 表示,通常是一个64位的数字。每一个 ZXID对应一次更新操作, 从这些 ZXID 中可以间接地识别出 ZooKeeper 处理这些事务操作请求的全局顺序。

原文链接:https://blog.csdn.net/qq_41544550/article/details/123148688

标签:场景,服务,zk,Zookeeper,优缺点,分布式系统,ZNode,节点
来源: https://www.cnblogs.com/chang09/p/16324790.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有