https://segmentfault.com/a/1190000016349824
https://blog.csdn.net/gwd1154978352/article/details/78239633
1. ZooKeeper是什么
ZooKeeper 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
典型应用:
1)服务治理(适用于小型系统,大公司和大业务不适合)
2)配置管理(watch机制动态通知)
3)集群管理(Kafka & Hadoop & HBase)
4)分布式锁(有坑)
只要集群半数以上的节点可用,ZK对外就是可用的,通常节点个数推荐为奇数
顺序一致性
从同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到ZooKeeper中。
原子性
所有事务请求的结果在集群中所有机器上的应用情况是一致的,也就是说要么整个集群所有集群都成功应用了某一个事务,要么都没有应用,一定不会出现集群中部分机器应用了该事务,而另外一部分没有应用的情况。
单一视图
无论客户端连接的是哪个ZooKeeper服务器,其看到的服务端数据模型都是一致的。
可靠性
一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会被一直保留下来,除非有另一个事务又对其进行了变更。
实时性
通常人们看到实时性的第一反应是,一旦一个事务被成功应用,那么客户端能够立即从服务端上读取到这个事务变更后的最新数据状态。这里需要注意的是,ZooKeeper仅仅保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。
2. ZK数据存储 https://www.cnblogs.com/leesf456/p/6179118.html
1)ZK数据的数据结构是Tree结构,每个节点都有唯一的path,在内存中,所以性能很高,由单独的内存数据库ZKDatabase进行维护,ZKDatabase会定时dump 数据到硬盘作为snapshot
2)各个节点的数据是一致的(不过没法保证连续两次读取结果相同,因为数据会更新的),但是对于每次更新,要么成功,要么失败,没有中间状态
3)各节点启动时,会从硬盘加载snapshot数据,并跟leader比较做部分更新,最终跟leader一致
3. ZK数据节点
ZK数据节点是以ZNode的方式存在,大类分为两类,临时节点和永久节点,编号的一种使用场景可以用来对监控集群选master,比如选编号最小的做master
1)持久节点(PERSISTENT) 所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。
2)持久顺序节点(PERSISTENT_SEQUENTIAL)其实就是多了个编号
在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候(注意:在此节点下的子节点是由顺序的),可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的上限是整型的最大值。
3)临时节点(EPHEMERAL)客户端没了,他就没了
和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点,注意是更具Session会话的失效时间来设定的。
4)临时顺序节点(EPHEMERAL_SEQUENTIAL)
临时顺序节点的特性和临时节点一致,同时是在临时节点的基础上,添加了顺序的特性。
4. ZK集群中角色
1)Leader 负责所有的写请求、发起决议,当然也提供读请求服务
2)Learner有两种,Follower和Observer,处理读请求,把写请求转发给Leader;Follower可以在Leader选举中投票,Observer只能读数据主要是增加ZK系统的吞吐
相关推荐
本文将详细介绍Zookeeper可视化工具的相关知识点,并探讨如何利用它们来优化Zookeeper的管理与维护。 ### 1. Zookeeper GUI工具的功能 Zookeeper可视化工具通常具备以下主要功能: - **节点浏览**:显示Zookeeper...
**ZooKeeper 3.8.4:分布式协调服务详解** Apache ZooKeeper 是一个高度可靠的分布式协调服务,广泛应用于...正确理解和使用 ZooKeeper 可以帮助开发者解决许多分布式环境下的难题,提高系统的整体性能和可靠性。
这个版本的发布,不仅优化了性能,还修复了一些已知的问题,增强了系统的整体稳定性。 Zookeeper的核心功能在于维护和管理分布式系统中的共享状态,通过提供命名服务、配置管理、集群同步、分组服务等,使得分布式...
本文将详细介绍这两种操作,以及如何实现无状态平滑升级和迁移,确保服务的连续性和数据完整性。 首先,了解为何需要进行升级和迁移。Zookeeper集群可能因为版本过旧、性能不足、服务器硬件老化等原因需要升级。这...
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中...通过学习和熟练掌握zktools的使用,可以更有效地管理和优化基于ZooKeeper的分布式系统,提升整体的系统稳定性和效率。
1. **稳定性增强**:3.4.6版本修复了大量已知问题,提升了系统的整体稳定性,使得在大规模分布式环境下的运行更加可靠。 2. **性能优化**:对Zookeeper的内部数据结构和算法进行了优化,提高了并发处理能力,降低了...
2. 客户端服务器选择:在客户端服务器架构中,Zookeeper可以作为负载均衡器,维护服务器列表,并帮助客户端选择合适的服务器进行连接,避免单点故障,提升系统整体性能。 标签"jar"表明这是一个Java Archive文件,...
整体而言,《ZooKeeper:分布式过程协同技术详解》为读者提供了一个全面的ZooKeeper学习和使用指南,不仅涵盖了ZooKeeper的基础知识和API使用,还深入到其内部机制和集群管理的层面,使读者能够全面掌握ZooKeeper的...
为了有效防范ZooKeeper未授权访问的安全漏洞,下面将详细介绍一系列处理方法: 1. **登录ZooKeeper客户端** - 进入ZooKeeper部署的`bin`目录,并运行`./zkCli.sh`命令,以登录到ZooKeeper客户端。这是开始任何...
3. 客户端连接:客户端通过Zookeeper获取Broker的连接信息,实现动态负载均衡,提高系统的整体性能。 4. 分区分配:Zookeeper负责在启动时为Kafka的每个主题分配分区,确保数据的均匀分布。 三、Zookeeper 3.4.9...
这个Docker Compose 文件定义了一个包含Zookeeper和三个Kafka节点...整体而言,这个Docker Compose 文件提供了一个简单且可扩展的方式来搭建和管理Zookeeper和Kafka的集群环境。 对了,这个集群配置是支持外部访问的。
- **分布式通知/协调**:实现服务间的状态同步,增强系统的整体协调能力。 综上所述,Zookeeper不仅提供了强大的协调服务功能,还在Hadoop生态中扮演了重要角色,是许多分布式应用的基础组件。通过对Zookeeper的...
本篇文章将围绕Zookeeper 3.4.9在Linux系统中的安装、配置和使用进行详细介绍。 一、Zookeeper简介 Zookeeper的核心概念是分布式共享的命名空间和一个基于版本的文件系统。它将数据存储在节点(ZNode)中,这些节点...
了解并掌握Zookeeper的基本概念、监控方法、管理策略及故障处理,能有效保障系统的稳定运行,提高整体架构的可靠性。在实际应用中,结合适当的监控工具和管理实践,可以充分发挥Zookeeper的潜力,为分布式应用提供强...
《Zookeeper-3.3.4:分布式协调服务的核心与实践》 Zookeeper是一个高度可靠的分布式...通过了解和掌握Zookeeper的工作原理和使用方法,我们可以更有效地解决分布式系统中的协调问题,提升系统的整体性能和可靠性。
在性能优化方面,Zookeeper 3.5.8引入了多线程I/O处理模型,通过NIO(非阻塞I/O)提升并发处理能力,同时利用内存中的数据缓存减少磁盘I/O操作,提升了整体性能。此外,Zookeeper还采用了日志和快照机制来保证数据...
### 基于ZooKeeper的分布式Session实现详解 #### 1. 认识ZooKeeper ZooKeeper,形象地被称为“动物园管理...通过利用ZooKeeper的特性,可以有效地克服分布式环境下Session管理的挑战,提高系统的整体性能和用户体验。
1. **集群管理**:ZKUI能够展示Zookeeper集群的整体状态,包括节点数量、版本信息、连接状态等,帮助用户快速了解集群健康状况。 2. **节点浏览**:用户可以通过界面查看Zookeeper中的所有节点,包括其子节点和数据...