
【ZK-Apache ZooKeeper】
zookeeper 快速入门
zookeeper 集群环境搭建
zookeeper 典型应用场景分析
zookeeper 中的znode、watcher、ACL、客户端API详解
zookeeper 服务端与客户端源码解析
小小工匠
show me the code ,change the world
展开
-
Apache ZooKeeper -从初始化到对外提供服务的过程解析( 集群模式 )
文章目录流程图Pre什么是集群模式?ZooKeeper 集群模式的特点底层实现原理程序启动QuorumPeer 类Leader 服务器启动过程Follow 服务器启动过程小结流程图PreApache ZooKeeper -从初始化到对外提供服务的过程解析( 单机模式 )我们知道了 ZooKeeper 在单机模式下从启动运行到对外提供服务的整个过程。在日常工作中,无论是出于性能上的优势还是可靠性的考虑,单机模式都无法满足要求。因此,ZooKeeper 也采用集群的方式运行。我们就来学习一下 Zoo原创 2020-12-26 22:27:59 · 15620 阅读 · 0 评论 -
Apache ZooKeeper -从初始化到对外提供服务的过程解析( 单机模式 )
文章目录流程图目的启动前的准备工作解析配置文件创建文件清理器服务初始化ServerStats创建FileTxnSnapLogServerCnxnFactory初始化请求处理链小结流程图目的通过对单机版的 ZooKeeper 中的启动与服务的初始化过程进行分析,来了解 ZooKeeper 服务端相关的处理知识。现在开始深入到服务器端看一看 ZooKeeper 是如何从初始化到对外提供服务的。启动前的准备工作在 ZooKeeper 服务的初始化之前,首先要对配置文件等信息进行解析和载入。也就是在原创 2020-12-26 21:57:25 · 15611 阅读 · 0 评论 -
Apache ZooKeeper - ZK的数据和文件
文章目录目标内存数据事务日志数据快照小结目标本篇博文,我们主要聚焦在ZooKeeper 程序运行期间,都会处理哪些数据,以及他们的存储格式和存储位置。ZooKeeper 服务提供了创建节点、添加 Watcher 监控机制、集群服务等丰富的功能。这些功能服务的实现,离不开底层数据的支持。从数据存储地点角度讲,ZooKeeper 服务产生的数据可以分为内存数据和磁盘数据。而从数据的种类和作用上来说,又可以分为事务日志数据和数据快照数据。内存数据ZooKeeper 的数据模型可以看作一棵树形结原创 2020-12-25 19:15:46 · 15914 阅读 · 0 评论 -
Apache ZooKeeper - 集群中 Observer 的作用以及 与 Follow 的区别
文章目录PreObserver 介绍源码解析Pre在 ZooKeeper 集群服务运行的过程中,Follow 服务器主要负责处理来自客户端的非事务性请求,其中大部分是处理客户端发起的查询会话等请求。而在 ZooKeeper 集群中,Leader 服务器失效时,会在 Follow 集群服务器之间发起投票,最终选举出一个 Follow 服务器作为新的 Leader 服务器。除了 Leader 和 Follow 服务器,ZooKeeper 集群中还有一个 Observer 服务器。在 ZooKeeper原创 2020-12-25 00:07:39 · 19479 阅读 · 0 评论 -
Apache ZooKeeper - 集群中 Follow 的作用_非事务请求的处理与 Leader 的选举分析
文章目录Pre非事务性请求处理过程源码分析选举过程在这里插入图片描述Leader 失效发现Leader 重新选举Follow 角色变更集群同步数据源码解析小结Pre在 ZooKeeper 集群中,Leader 服务器主要负责处理来自客户端的事务性会话请求,并在处理完事务性会话请求后,管理和协调 ZooKeeper 集群中 Follow 和 Observer 等角色服务器的数据同步。因此,在 ZooKeeper 集群中,Leader 服务器是最为核心的服务器,一个 ZooKeeper 服务在集群模式下原创 2020-12-24 23:57:59 · 15852 阅读 · 0 评论 -
Apache ZooKeeper - 集群中 Leader 的作用_事务的请求处理与调度分析
文章目录事务性请求处理Leader 事务处理分析预处理阶段事务处理阶段事务执行阶段响应阶段源码分析小结Leader 服务器在 ZooKeeper 中的作主要是处理事务性的会话请求以及管理 ZooKeeper 集群中的其他角色服务器那么 在接收到来自客户端的事务性会话请求后,ZooKeeper 集群内部又是如何判断会话的请求类型,以及转发处理事务性请求的呢?事务性请求处理在 ZooKeeper 集群接收到来自客户端的会话请求操作后,首先会判断该条请求是否是事务性的会话请求。对于事务性的会话请求,原创 2020-12-24 23:30:04 · 16045 阅读 · 0 评论 -
Apache ZooKeeper - ZooKeeper 集群中 Leader 与 Follower 的数据同步策略
文章目录why在 Leader 节点选举后,还需要把 Leader 服务器和 Follow 服务器进行数据同步。在保证整个 ZooKeeper 集群中服务器数据一致的前提下,ZooKeeper 集群才能对外提供服务。why介绍 ZooKeeper 集群数据同步之前,先要清楚为什么要进行数据同步。在 ZooKeeper 集群服务运行过程中,主要负责处理发送到 ZooKeeper 集群服务端的客户端会话请求。这些客户端的会话请求基本可以分为事务性的会话请求和非事务性的会话请求,而这两种会话的本质区别在于原创 2020-12-24 00:07:11 · 16315 阅读 · 0 评论 -
Apache ZooKeeper - Leader 选举 如何保证分布式数据的一致性
文章目录PreLeader 的协调过程ZK 是如何实现的PreApache ZooKeeper - 选举Leader源码流程深度解析在 ZooKeeper 集群中,服务器分为 Leader 服务器、 Follower 服务器以及 Observer 服务器。我们可以这样认为,Leader 选举是一个过程,在这个过程中 ZooKeeper 主要做了两个重要工作,一个是数据同步,另一个是选举出新的 Leader 服务器。今天我们继续来看下 ZooKeeper 集群中的数据同步问题。Leader原创 2020-12-23 23:30:19 · 15395 阅读 · 0 评论 -
Apache ZooKeeper - 线上系统日志清理
文章目录PurgeTxnLog源码分析crontabPurgeTxnLog源码分析使用 PurgeTxnLog 则可以在编写清除脚本的时候调用 ZooKeeper 提供的工具类完成日志清理工作。编写 PurgeTxnLog 类的调用程序,系统就会自动通过 PurgeTxnLog 工具类完成对应日志文件的清理工作。#!/bin/sh java -cp "$CLASSPATH" org.apache.zookeeper.server.PurgeTxnLog echo "清理完成"原创 2020-12-22 21:15:22 · 15426 阅读 · 0 评论 -
Apache ZooKeeper - FourLetterCommands运维命令
文章目录Pre安装nc常见的四字母命令FourLetterCommands命令解析QuestionPreApache ZooKeeper - JMX监控 ZooKeeper 的运行状态除了 JConsole 监控控制台之外,ZooKeeper 还提供了一些命令,可使我们更加灵活地统计监控 ZooKeeper 服务的状态信息。ZooKeeper 提供的这些命令也叫作四字母命令,如它们的名字一样,每一个命令都是由四个字母组成的。比如,输入相关的命令来查询 ZooKeeper 服务,可以输入 sta原创 2020-12-22 15:26:53 · 15689 阅读 · 0 评论 -
Apache ZooKeeper - JMX监控 ZooKeeper 的运行状态
文章目录JMX配置OPJConsle 通过 JMX访问远端服务JMX配置主要是 输入 JMX 服务的端口号并禁止身份认证等配置-Djava.rmi.server.hostname=服务器的IP地址或者域名-Dcom.sun.management.jmxremote.port=端口号-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 连不上的话,别忘了原创 2020-12-22 13:38:19 · 15869 阅读 · 0 评论 -
Apache ZooKeeper - 选举Leader源码流程深度解析
文章目录流程图流程图原创 2020-12-20 20:45:41 · 15559 阅读 · 0 评论 -
Apache ZooKeeper - Leader Election使用场景
文章目录需求Leader Election需求Leader Electionhttps://curator.apache.org/getting-started.htmlDemo示例原创 2020-12-17 11:17:42 · 15412 阅读 · 0 评论 -
Apache ZooKeeper - 使用ZK实现分布式锁(非公平锁/公平锁/共享锁 )
非公平锁-羊群效应公平锁共享锁原创 2020-12-10 20:23:32 · 16258 阅读 · 0 评论 -
Apache ZooKeeper - Watch 机制的底层原理
文章目录Watch 机制API 使用Watch 机制的底层原理客户端 Watch 注册实现过程服务端 Watch 注册实现过程服务端 Watch 事件的触发过程客户端回调的处理过程实现一个订阅发布场景Watch 机制ZooKeeper 又一关键技术——Watch 监控机制 。API 使用ZooKeeper 的客户端可以通过 Watch 机制来订阅当服务器上某一节点的数据或状态发生变化时收到相应的通知,我们可以通过向 ZooKeeper 客户端的构造方法中传递 Watcher 参数的方式实现n原创 2020-12-08 00:30:59 · 15898 阅读 · 0 评论 -
Apache ZooKeeper - ZooKeeper 数据模型回顾
文章目录Pre数据模型概述znode 节点类型与特性持久节点临时节点有序节点节点小结节点的状态结构Watch 机制实现分布式通知API 使用Watch 机制的底层原理Pre前面我们梳理了Zk的核心功能 , ZooKeeper 作为一个分布式协调服务,提供了在分布式环境下一致性问题的解决方案 。今天 我们再来回顾下基础知识基本分为三大模块:数据模型Watch 监控ACL 权限控制数据模型概述通过 ZooKeeper 提供的 create 命令来创建几个节点,分别是:“/原创 2020-12-07 00:00:43 · 15121 阅读 · 0 评论 -
Apache ZooKeeper - 使用原生的API操作ZK_ACL权限
文章目录PreCodePreApache ZooKeeper - ZK的ACL权限控制( Access Control List )Apache ZooKeeper - 使用原生的API操作ZK_CRUDCodepackage com.artisan.zk.originalClient;import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import org.apache.zookeeper.CreateMode;原创 2020-12-01 15:32:06 · 15282 阅读 · 0 评论 -
Apache ZooKeeper - 高可用ZK集群模式搭建与运维
文章目录环境信息JDK配置文件myid启动节点节点状态查看环境信息Info1DetailOSCentOS7ZK Version3.5.8JDK Version1.8 +IP Info192.168.126.133其实我就一台Server …伪集群 … 【其实和在多台部署上是一样一样的,我也木有这么多server~】JDKZK Java编写的,当然少不了JDK了 ~[root@localhost conf]# java -versi原创 2020-11-30 10:41:57 · 15297 阅读 · 0 评论 -
Apache ZooKeeper - 使用Apache Curator操作ZK
文章目录原生ZK API VS CuratorCurator 概述原生ZK API VS CuratorApache ZooKeeper - 使用原生的API操作ZKZooKeeper原生Java API的不足之处:连接zk超时时,不支持自动重连,需要手动操作Watch注册一次就会失效,需手工反复注册不支持递归创建节点异步支持,没有线程池…Apache curator:Apache Commiter作者的开源项目解决Watch注册一次就会失效的问题API 更加简单易用、封装了原创 2020-11-29 11:20:36 · 15715 阅读 · 0 评论 -
Apache ZooKeeper - 使用源码启动ZK集群模式
文章目录PrePreApache ZooKeeper - 构建ZooKeeper源码环境及StandAlone模式下的服务端和客户端启动有了使用源码启动单节点的经验,集群模式就很容易了,无非就是多几个配置文件 ,启动了集群模式才好去分析分布式环境下的leader的选举等源码...原创 2020-11-27 11:31:02 · 14894 阅读 · 0 评论 -
Apache ZooKeeper - 构建ZooKeeper源码环境及StandAlone模式下的服务端和客户端启动
文章目录拉取源码拉取源码https://github.com/apache/zookeeperClone ---- HTTPSIDEA里原创 2020-11-26 23:21:52 · 15786 阅读 · 0 评论 -
Apache ZooKeeper - 使用原生的API操作ZK
文章目录概述概述前面几篇系列博文我们熟悉了如何通过命令来操作ZK节点数据,下面我们来看下如何使用API来操作主要两种方式原生APICurator今天我们来看下如何使用原生的API操作ZK原创 2020-11-24 23:56:59 · 15361 阅读 · 0 评论 -
Apache ZooKeeper - ZK的内存数据 + 持久化事务日志 + 数据快照 初探
文章目录内存数据源码实现事务日志配置项查看事务日志数据内存数据Zookeeper数据的组织形式为一个类似文件系统的数据结构,而这些数据都是存储在内存中的, 可以认为 Zookeeper是一个基于内存的小型数据库 .源码实现看看源码是如何存储的public class DataTree { private final ConcurrentHashMap<String, DataNode> nodes = new ConcurrentHashMap<Stri原创 2020-11-19 00:17:41 · 15223 阅读 · 1 评论 -
Apache ZooKeeper - ZK的ACL权限控制( Access Control List )
文章目录概述概述ACL全称为Access Control List(访问控制列表),用于控制资源的访问权限,可以控制节点的读写操作,保证数据的安全性 。ZooKeeper使用ACL来控制对其znode的防问。Zookeeper ACL 权限设置分为 3 部分组成,分别是:权限模式(Scheme)、授权对象(ID)、权限信息(Permission)基于scheme????permission的方式进行权限控制: scheme表示授权模式、id模式对应值、permission即具体的增删改权限位。原创 2020-11-18 00:32:37 · 16335 阅读 · 0 评论 -
Apache ZooKeeper - 事件监听机制详解
文章目录事件监听机制命令Zookeeper事件类型事件监听机制命令针对节点的监听:一定事件触发,对应的注册立刻被移除,所以事件监听是一次性的get -w /path // 注册监听的同时获取数据stat -w /path // 对节点进行监听,且获取元数据信息Zookeeper事件类型None: 连接建立事件NodeCreated: 节点创建NodeDeleted: 节点删除NodeDataChanged:节点数据变化NodeChildrenChanged:子节点列表原创 2020-11-17 00:18:48 · 15188 阅读 · 2 评论 -
Apache ZooKeeper - 节点实操常用zookeeper命令
文章目录help 查看zookeeper所支持的所有命令创建zookeeper 节点命令事件监听机制命令节点属性命令help 查看zookeeper所支持的所有命令[zk: localhost:2181(CONNECTED) 1] helpZooKeeper -server host:port cmd args addauth scheme auth close config [-c] [-w] [-s] connect host:port create [-s] [-e] [-c]原创 2020-11-16 00:17:03 · 15022 阅读 · 0 评论 -
Apache ZooKeeper - ZK的基本特性与节点&应用场景一览
文章目录概述ZK产生的背景安装概述说点正确的废话zookeeper是一个分布式协调框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。ZK由JAVA编写,支持JAVA 和C两种语言的客户端。ZK产生的背景项目从单体到分布式转变之后,将会产生多个节点之间协同的问题每天的定时任务由谁哪个节点来执行RPC调用时的服务发现如何保证并发请求的幂等…这些问题可以统一原创 2020-11-15 17:13:51 · 14782 阅读 · 0 评论