![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Zookeeper
文章平均质量分 92
Zookeeper 相关介绍
IT 小松
每个强者都会有背后的心酸苦涩。
展开
-
Zookeeper学习:Leader选举
1. Leader选举概述Leader选举是zookeeper最重要的技术之一,也是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入Leader选举。服务器初始化启动。服务器运行期间无法和Leader保持连接。2. 服务器启动时期的Leader选举若进行Leader选举,则至少需要两台机器,这里选取3台机器组成的服务器集群为例。在集群初始化阶段,当有一台服务器Server1启动时,其单独无法进行和完成Leader选举,当第二台服务器Ser原创 2020-10-28 16:43:47 · 151 阅读 · 0 评论 -
Zookeeper学习:服务器启动
1. 服务端整体架构图Zookeeper服务器的启动,大致可以分为以下五个步骤配置文件解析初始化数据管理器初始化网络 I/O 管理器数据恢复对外服务2. 单机版服务器启动单机版服务器的启动其流程图如下上图的过程可以分为预启动和初始化过程。2.1 预启动统一由 QuorumPeerMain 作为启动类。无论单机或集群,在 zkserver.cmd 和 zkServer.sh 中都配置了QuorumPeerMain 作为启动入口类。解析配置文件 zoo.cfg。zoo.cfg配原创 2020-10-28 16:25:42 · 912 阅读 · 0 评论 -
Zookeeper学习:服务器⻆色
1. LeaderLeader服务器是Zookeeper集群工作的核心,其主要工作有以下两个∶事务请求的唯一调度和处理者,保证集群事务处理的顺序性。集群内部各服务器的调度者。1.1 请求处理链使用责任链来处理每个客户端的请求是Zookeeper的特色,Leader服务器的请求处理链如下∶可以看到,从 prepRequestProcessor 到 FinalRequestProcessor 前后一共7个请求处理器组成了leader 服务器的请求处理链PrepRequestProcesso原创 2020-10-28 15:25:32 · 109 阅读 · 0 评论 -
Zookeeper学习:ZAB 协议
1. 概述zookeeper并没有完全采用 paxos 算法,而是使用了一种称为Zookeeper Atomic Broadcast(ZAB,Zookeeper原子消息广播协议)的协议作为其数据一致性的核心算法。ZAB协议并不像Paxos算法那样是一种通用的分布式一致性算法,它是一种特别为zookeeper专门设计的一种支持崩溃恢复的原子广播协议在zookeeper中,主要就是依赖ZAB协议来实现分布式数据的一致性,基于该协议,Zookeeper实现了一种主备模式的系统架构来保持集群中各副本之间的数据原创 2020-10-28 13:49:14 · 186 阅读 · 0 评论 -
Zookeeper学习:Zookeeper应用场景之分布式队列
1. 分布式队列介绍分布式队列可以简单分为两大类∶一种是常规的FIFO先入先出队列模型,还有一种是 等待队列元素聚集后统一安排处理执行的Barrier模型。2. FIFO先入先出FIFO(First Input First Output,先入先出),FIFO队列是一种非常典型且应用广泛的按序执行的队列模型∶先进入队列的请求操作先完成后,才会开始处理后面的请求。使用ZooKeeper实现FIFO队列,和之前提到的共享锁的实现非常类似。FIFO队列就类似于一个全写的共享锁模型,大体的设计思路其实非常简单原创 2020-10-28 11:03:34 · 376 阅读 · 0 评论 -
Zookeeper学习:Zookeeper应用场景之分布式锁
1. 分布式锁的介绍分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁了。在平时的实际项目开发中,我们往往很少会去在意分布式锁,而是依赖于关系型数据库固有的排他性来实现不同进程之间的互斥。这确实是一种非常简便且被广泛使用的分布式锁实现方式。然而有一个不争的事实是,目前绝大多数大型分布式系统的性能瓶颈都集中在数据库操作上。原创 2020-10-28 09:46:05 · 381 阅读 · 0 评论 -
Zookeeper学习:Zookeeper应用场景之Master选举
1. Master选举Master选举是一个在分布式系统中非常常见的应用场景。分布式最核心的特性就是能够将具有独立计算能力的系统单元部署在不同的机器上,构成一个完整的分布式系统。而与此同时,实际场景中往往也需要在这些分布在不同机器上的独立系统单元中选出一个所谓的"老大",在计算机中,我们称之为Master。在分布式系统中,Master往往用来协调集群中其他系统单元,具有对分布式系统状态变更的决定权。例如,在一些读写分离的应用场景中,客户端的写请求往往是由Master来处理的;而在另一些场景中,Maste原创 2020-10-28 00:25:37 · 342 阅读 · 0 评论 -
Zookeeper学习:Zookeeper应用场景之集群管理
1. 集群管理随着分布式系统规模的日益扩大,集群中的机器规模也随之变大,那如何更好地进行集群管理也显得越来越重要了。所谓集群管理,包括集群监控与集群控制两大块,前者侧重对集群运行时状态的收集,后者则是对集群进行操作与控制。在日常开发和运维过程中,我们经常会有类似于如下的需求∶如何快速的统计出当前生产环境下一共有多少台机器如何快速的获取到机器上下线的情况如何实时监控集群中每台主机的运行时状态在传统的基于Agent的分布式集群管理体系中,都是通过在集群中的每台机器上部署一个Agent,由这个Ag原创 2020-10-28 00:13:55 · 394 阅读 · 0 评论 -
Zookeeper学习:Zookeeper应用场景之命名服务
1. 命名服务命名服务(Name Service)也是分布式系统中比较常见的一类场景,是分布式系统最基本的公共服务之一。在分布式系统中,被命名的实体通常可以是集群中的机器、提供的服务地址或远程对象等 —— 这些我们都可以统称它们为名字(Name),其中较为常见的就是一些分布式服务框架(如RPC、RMI)中的服务地址列表,通过使用命名服务,客户端应用能够根据指定名字来获取资源的实体、服务地址和提供者的信息等。Zookeeper 提供的命名服务功能能够帮助应用系统通过一个资源引用的方式来实现对资源的定位与使原创 2020-10-27 21:49:51 · 711 阅读 · 3 评论 -
Zookeeper学习:Zookeeper应用场景之数据发布/订阅
1. 数据发布/订阅数据 发布 / 订阅(Publish / Subscribe)系统,即所谓的配置中心,顾名思义就是发布者将数据发布到 ZooKeeper 的一个或一系列节点上,供订阅者进行数据订阅,进而达到动态获取数据的目的,实现配置信息的集中式管理和数据的动态更新。发布/订阅系统一般有两种设计模式,分别是推(Push)模式和拉(Pull)模式。在推模式中,服务端主动将数据更新发送给所有订阅的客户端;而拉模式则是由客户端主动发起请求来获取最新数据,通常客户端都采用定时进行轮询拉取的方式。ZooKe原创 2020-10-27 21:34:30 · 318 阅读 · 0 评论 -
Zookeeper学习:开源客户端 Curator
1. Curator 简介Curator 是 Netflix 公司开源的一套 Zookeeper 客户端框架,和ZKClient一样,Curator 解决了很多 Zookeeper 客户端非常底层的细节开发工作,包括连接重连,反复注册Watcher 和 NodeExistsException异常等,是最流行的Zookeeper客户端之一。从编码风格上来讲,它提供了基于 Fluent 的编程风格支持2. 准备工作添加依赖<dependency> <groupId>org.a原创 2020-10-29 08:49:11 · 147 阅读 · 0 评论 -
Zookeeper学习:开源客户端 ZkClient
1. 简介ZkClient是Github上一个开源的zookeeper客户端,在Zookeeper原生API接口之上进行了包装,是一个更易用的Zookeeper客户端,同时,zkClient在内部还实现了诸如Session超时重连、Watcher反复注册等功能2. 准备工作导入依赖<dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId>原创 2020-10-29 00:08:42 · 377 阅读 · 0 评论 -
Zookeeper学习:Zookeeper 的 API 使用
1. API 相关介绍Zookeeper作为一个分布式框架,主要用来解决分布式一致性问题,它提供了简单的分布式原语,并且对多种编程语言提供了APl,Zooeeper API 共包含五个包,分别为∶org.apache.zookeeperorg.apache.zookeeper.dataorg.apache.zookeeper.serverorg.apache.zookeeper. server.quorumorg.apache.zookeeper.server.upgrade其中 org.原创 2020-10-28 23:24:16 · 699 阅读 · 0 评论 -
Zookeeper学习: ZooKeeper命令行操作
1. 进入命令行2. 创建节点3. 读取节点4. 更新节点5. 删除节点使用delete命令可以删除Zookeeper上的指定节点,语法如下: delete path [version]其中 version 表示数据版本,使用delete /zk-permanent 命令即可删除/zk-permanent节点可以看到,已经成功删除/zk-permanent节点。值得注意的是,若删除节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除父节点...原创 2020-10-28 16:56:03 · 4010 阅读 · 0 评论 -
Zookeeper学习:ZooKeeper系统模型
1. ZooKeeper 数据模型 Znode在Zookeeper中,数据信息被保存在一个个数据节点上,这些节点被称为ZNode。ZNode 是 Zookeeper 中最小数据单位,在 ZNode 下面又可以再挂 ZNode,这样一层层下去就形成了一个层次化命名空间 ZNode 树,我们称为ZNode Tree,它采用了类似文件系统的层级树状结构进行管理。见下图示例:在Zookeeper中,每一个数据节点都是一个ZNode,上图根目录下有两个节点,分别是∶app1 和 app2,其中 app1 下面又原创 2020-10-24 22:48:20 · 165 阅读 · 0 评论 -
Zookeeper学习:CentOS 8 安装伪集群模式 Zookeeper
热武器原创 2020-10-27 14:32:47 · 130 阅读 · 0 评论 -
Zookeeper学习:CentOS 8 安装单机模式 Zookeeper
1. 复制路径原创 2020-10-27 09:19:08 · 123 阅读 · 0 评论 -
Zookeeper学习:Zookeeper 简介
1. 概述Zookeeper 是一个开源的分布式的,为分布式应用提供协调服务的 Apache 项目Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理数据,然后接受观察者的注册,一旦这些数据的状态发生变化 ,Zookeeper就将负责通知已经在Zookeeper上注册那些观察者做出相应的反应。2. 特点Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。集群中只要有半数以上节点存活,Zooke原创 2020-10-22 17:22:40 · 243 阅读 · 0 评论 -
Zookeeper学习:分布式系统面临的问题及解决方案
1. 分布式系统定义及面临的问题ZooKeeper最为主要的使用场景,是作为分布式系统的分布式协同服务。我们将分布式系统定义为∶分布式系统是同时跨越多个物理主机,独立运行的多个软件所组成系统。类比一下,分布式系统就是一群人一起干活。人多力量大,每个服务器的算力是有限的,但是通过分布式系统,由n个服务器组成起来的集群,算力是可以无限扩张的。优点显而易见,人多干活快,并且互为备份。但是缺点也很明显。我们可以想象一下,以一个小研发团队开发软件为例,假设我们有一个5人的项目组,要开始一个系统的开发,项目组将面原创 2020-10-24 17:40:36 · 388 阅读 · 0 评论