
zookeeper
文章平均质量分 76
fFee-ops
it's tough.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Zookeeper集群数据同步源码剖析
Zookeeper集群数据同步源码剖析Zookeeper同步流程Zookeeper Follower同步流程Zookeeper Leader同步流程LearnerHandler数据同步操作所有事务操作都将由leader执行,并且会把数据同步到其他节点,比如follower、observer,我们可以分析leader和follower的操作行为即可分析出数据同步流程。Zookeeper同步流程整体流程:当角色确立之后,leader调用leader.lead();方法运行,创建一个接收连接的Lear原创 2021-11-13 12:08:47 · 1936 阅读 · 0 评论 -
Zookeeper集群Leader选举源码剖析
Zookeeper集群Leader选举源码剖析QuorumPeer工作流程QuorumCnxManager源码分析FastLeaderElection算法源码分析Zookeeper选举投票剖析关于这篇的理论基础,即Paxos算法和ZAB协议、选举流程分析。 已经在另一篇博客单独写出来了,这里就不赘述了。但是这里还是贴一下选举流程的图,便于理解源码:QuorumPeer工作流程QuorumCnxManager:负责各台服务器之间的底层Leader选举过程中的网络通信对应的类。每台服务器在启动的过程中原创 2021-11-12 23:52:24 · 1286 阅读 · 0 评论 -
ZK的Session源码分析
ZK的Session源码分析服务端Session属性分析Session创建本篇文章主要讲解服务端 Session 会话处理流程。服务端Session属性分析Zookeeper服务端会话操作如下图:在服务端通过 SessionTrackerImpl 和ExpiryQueue来保存Session会话信息。SessionTrackerImpl 有以下属性:sessionsById: 用来存储ConcurrentHashMap<Long, SessionImpl>{sessionId:原创 2021-11-11 13:07:07 · 641 阅读 · 0 评论 -
RequestProcessor处理请求源码剖析
RequestProcessor处理请求源码剖析RequestProcessor结构1、PrepRequestProcessor剖析2、SyncRequestProcessor剖析3、FinalRequestProcessor剖析在上一次分析ZK网络通信源码的时候我们追溯到了ZookeeperServer.processPacket()就没有再深入了。本次就要来介绍具体业务处理的流程。入口为ZookeeperServer.processPacket()中的submitRequest(si);概览图原创 2021-11-06 17:21:14 · 468 阅读 · 0 评论 -
ZK网络通信源码剖析
ZK网络通信源码剖析NIOServerCnxnFactory工作流程源码剖析AcceptThread剖析SelectorThread剖析WorkerThread剖析ConnectionExpirerThread剖析ZK通信优劣总结Zookeeper 作为一个服务器,自然要与客户端进行网络通信, ZooKeeper 中使用 ServerCnxnFactory 管理与客户端的连接,其有两个实现,一个是NIOServerCnxnFactory ,使用Java原生 NIO 实现;一个是NettyServerCnx原创 2021-11-05 21:24:25 · 1084 阅读 · 0 评论 -
ZK服务启动流程源码剖析
ZK服务启动流程源码剖析ZK启动入口分析单机版启动流程1)单机启动入口2)配置文件解析3)单机启动主流程ZK启动入口分析启动入口类:QuorumPeerMain该类是 zookeeper 单机/集群的启动入口类,是用来加载配置、启动 QuorumPeer (选举相关)线程、创建 ServerCnxnFactory 等,我们可以把代码切换到该类的主方法( main )中,从该类的主方法开始分析, main 方法代码分析如下:上面main方法虽然只是做了初始化配置,但调用了 initializeAn原创 2021-11-03 14:54:59 · 332 阅读 · 0 评论 -
zookeeper源码阅读前置步骤
zookeeper源码阅读前置步骤源码导入zookeeper分析工具源码导入要阅读源码就需要把源码下载下来,如果用maven的方式就不能写注释。下载过程比较复杂,而且会有很多bug,所以我直接下载好了放在了github。用的是3.7版本的zk。导入好的工程文件就是下面的样子:zookeeper分析工具Zookeeper安装比较方便,在安装一个集群以后,查看数据却比较麻烦,下面介绍Zookeeper的数据查看工具——ZooInspector。下载地址:https://issues.apache原创 2021-11-03 14:18:29 · 480 阅读 · 0 评论 -
zk算法基础
zk算法基础拜占庭将军问题Paxos算法算法概述算法流程情况1情况2情况3拜占庭将军问题拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;只有完全达成一致的努力才能获得胜利。Paxos算法它是一种基于消息传递且具有高度容错特性的一致性算法。Paxos算法解决的问题:就是如何原创 2021-10-25 22:14:15 · 437 阅读 · 0 评论 -
服务器动态上下线监听案例
服务器动态上下线监听案例需求具体实现测试需求某分布式系统中,主节点可以有多台,可以动态上下线,任意一台客户端都能实时感知到主节点服务器的上下线。其实本质就是节点的创建和移除。具体实现1、先在集群上创建/servers 节点2、编写服务端java代码package dynamicSartedAndStop;import org.apache.zookeeper.*;import java.io.IOException;/** * Created by yazai * Date:原创 2021-10-24 23:02:55 · 2792 阅读 · 0 评论 -
客户端向服务端写数据流程
客户端向服务端写数据流程写流程之写入请求直接发送给Leader节点写流程之写入请求发送给follower节点写流程之写入请求直接发送给Leader节点可以发现在leader同步给第一个follower时就给client返回ack了,因为此时write了的节点数已经达到了集群的一半以上,这样做可以提高效率写流程之写入请求发送给follower节点...原创 2021-10-23 23:19:08 · 190 阅读 · 0 评论 -
ZK 集群启动停止脚本
ZK 集群启动停止脚本编写之所以想写一个启动脚本,是因为假如我们集群中有一百台zk,那么每次停止都要跑到每台zk的bin目录下执行stop命令,很是麻烦。编写1.在某台安装了zk的服务器的某个目录下创建一个zk.sh执行脚本2. 执行vim zk.sh#!/bin/bashcase $1 in"start"){for i in 192.168.80.18 192.168.80.19 192.168.80.20do echo ---------- zookeeper $i 启动 -----原创 2021-10-23 23:10:02 · 1258 阅读 · 0 评论 -
SpringCloud整合Zookeeper代替Eureka
SpringCloud整合Zookeeper代替Eureka注册中心Zookeeper服务提供者测试服务消费者验证测试注册中心Zookeeper1、关闭Linux服务器防火墙后启动zookeeper服务器(客户端和服务端都要启动)2、zookeeper服务器取代Eureka服务器,zk作为服务注册中心服务提供者1、新建cloud-provider-payment80042、改POM<dependencies> <dependency>原创 2020-10-18 22:00:46 · 281 阅读 · 0 评论 -
Dubbo和zookeeper的关系
QAQ简单来说打个比方:dubbo就是动物园的动物,zookeeper是动物园。如果游客想看动物的话那么就去动物园看。比如你要看老虎,那么动物园有你才能看到。换句话说我们把很多不同的dubbo(动物)放到zookeeper(动物园中)提供给我们游客进行观赏。这个过程中三个关键:场所、供给者、消费者。再说一个分布式的项目,server(消费)层与 service(供给)层被拆分了开来, 部署在不同的tomcat中, 我在server层需要调用 service层的接口,但是两个运行在不同tomcat下的服原创 2020-07-09 12:23:57 · 1338 阅读 · 0 评论 -
Zookeeper CLI
文章目录ZooKeeper命令行界面(CLI)用于与ZooKeeper集合进行交互以进行开发。它有助于调试和解决不同的选项。要执行ZooKeeper CLI操作,首先打开ZooKeeper服务器(“bin/zkServer.sh start”),然后打开ZooKeeper客户端(“bin/zkCli.sh”)。示例操作:1、创建Znodescreate /path /data创建顺序节点:create -s /path /data创建临时节点:create -e /path原创 2020-07-08 17:00:52 · 511 阅读 · 0 评论 -
Zookeeper 安装及启动
文章目录1、安装好java环境2、下载zookeeper,传到Linux,并且解压到apps文件夹下3、重命名zookeeper的配置文件:zoo_sample.cfg改名为zoo.cfg4、在zoo.cfg中:可以发现 zookeeper的端口号是 clientPort=21815、在zookeeper文件夹下新建data文件夹,将zoo.cfg中的dataDir=xxxx更改为dataDir=/apps/zookeeper-3.4.14/datadataDir是zookeeper保存数据的原创 2020-07-08 15:54:09 · 1451 阅读 · 0 评论 -
Zookeeper leader选举
文章目录考虑一个集群中有N个节点。leader选举的过程如下:所有节点创建具有相同路径 /app/leader_election/guid_ 的顺序、临时节点。ZooKeeper集合将附加10位序列号到路径,创建的znode将是 /app/leader_election/guid_0000000001,/app/leader_election/guid_0000000002等。对于给定的实例,在znode中创建最小数字的节点成为leader,而所有其他节点是follower。每个f原创 2020-07-08 15:12:08 · 224 阅读 · 0 评论 -
Zookeeper 工作流
文章目录组件描述写入(write)写入过程由leader节点处理。leader将写入请求转发到所有znode,并等待znode的回复。如果一半的znode回复,则写入过程完成。读取(read)读取由特定连接的znode在内部执行,因此不需要与集群进行交互。复制数据库(replicated database)它用于在zookeeper中存储数据。每个znode都有自己的数据库,每个znode在一致性的帮助下每次都有相同的数据。LeaderLeader是负责处理原创 2020-07-08 14:55:48 · 262 阅读 · 0 评论 -
zookeeper基础知识
文章目录什么是Apache ZooKeeper分布式应用的优缺点zookeeper提供的常见服务zookeeper架构< Architecture >zookeeper层次命名空间什么是Apache ZooKeeperApache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据。ZooKeeper本身是一个分布式应用程序,为写入分布式应用程序提供服务。通过将分布式应用配置为在更多系统上运行,可以进一步减少完成任务的时间。分布式应用正原创 2020-07-08 14:00:56 · 889 阅读 · 0 评论