![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ZooKeeper笔记
文章平均质量分 77
Pierce_Liu
以前我没得选择,现在我想做个码农
展开
-
ZooKeeper的典型应用场景——Master选举
Master选举是一个在分布式系统中非常常见的应用场景。分布式最核心的特性就是能够将具有独立计算能力的系统单元部署在不同的机器上,构成一个完整的分布式系统。在实际场景中,往往需要这些分布在不同机器上的独立系统单元中选出一个所谓的“老大”,称之为Master。在分布式系统中,Master往往用来协调集群中其他系统单元,具有对分布式系统状态变更的决定权。 比如:Master负责处理一些复杂的逻辑...原创 2018-06-03 09:39:29 · 555 阅读 · 1 评论 -
ZooKeeper技术内幕——系统模型
系统模型包括五个部分:数据模型、节点特性、版本、Watcher和ACL。数据模型数据节点 用ZNode来表示,ZNode是ZooKeeper中数据的最小单元,每个ZNode上都可以保存数据,同时还可以挂载子节点,因此构成了一个层次的命名空间,称之为树。事务ID 在ZooKeeper中,事务是指能够改变ZooKeeper服务器状态的操作。一般包括:数据节点创建与删除、数据节点内容更新...原创 2018-05-31 17:05:39 · 304 阅读 · 0 评论 -
开源客户端Curator
Curator是一套开源的ZooKeeper客户端框架,本文会学习并记录一些API。Curator使用创建Curator客户端的Maven依赖,不要使用高版本的<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framewo...原创 2018-05-31 09:15:21 · 229 阅读 · 0 评论 -
RPC服务框架——Dubbo
Dubbo,分布式服务框架,致力于提供性能和透明化的远程服务调用方案和基于服务框架展开的完整SOA服务治理方案。Duboo的核心部分包含三部分远程通信 提供对于多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求——响应”模式的信息交换方式集群容错 提供基于接口方法的远程过程透明调用,包括对多协议的支持,以及对软负载均衡、失败容错、地址路由和动态配置等集群特性的...原创 2018-06-06 16:06:49 · 372 阅读 · 0 评论 -
Paxos算法
Paxos算法梗概原创 2018-05-24 20:00:17 · 200 阅读 · 0 评论 -
ZooKeeper部署
模式:集群系统:Linux机器数量:单机使用ip:port模拟多台服务器原创 2018-05-24 22:55:02 · 147 阅读 · 0 评论 -
ZAB协议
ZooKeeper的ZAB协议ZAB(ZooKeeper Atomic Broadcast)协议并不像Paxos那样,是一种通用的分布式一致性算法,它是一种特别为ZooKeeper设计的崩溃可恢复的原子消息广播协议。在ZooKeeper中,主要依赖ZAB协议来实现分布式数据一致性,基于该协议,ZooKeeper实现了一种主备模式的系统架构来保持集群中各副本之间数据的一致性。ZAB协议的核心...原创 2018-05-24 22:12:56 · 223 阅读 · 0 评论 -
三阶段提交协议
三阶段提交协议(3PC)三阶段提交协议是2PC的改进版,将二阶段提交协议的阶段一,即“提交事务请求”一分为二,形成了由CanCommit、PreCommit和doCommit三个阶段组成的事务处理协议。协议说明阶段一:CanCommit事务询问 执行者向所有参与发送CanCommit请求,等待所有参与者的响应参与者反馈响应 参与者节点若认为自身可以完成事务,返回Ye...原创 2018-05-23 23:15:12 · 1368 阅读 · 0 评论 -
二阶段提交协议
二阶段提交协议(2PC)二阶段提交协议是计算机网络中,尤其是在数据库领域内,为了使基于分布式系统架构下的所有节点在进行事务处理过程中能够保持原子性和一致性的一种算法。目前,绝大部分的关系型数据库都是采用二阶段提交协议来完成分布式事务处理的。协议说明阶段一:提交事务请求事务询问 协调者询问参与者是否可以执行事务提交的操作,并开始等待参与者的响应执行事务 各参与者执行事务操...原创 2018-05-23 22:08:46 · 252 阅读 · 0 评论 -
ZooKeeper的典型应用场景——分布式协调/通知
分布式协调/通知服务是分布式系统中不可缺少的一个环节,是将不同的分布式组件有机组合起来的关键所在。对于一个在多台机器上部署运行的应用而言,通常需要一个协调者来控制整个整个系统的运行流程,例如分布式事务的处理、机器间的互相协调等。同时,引入这样一个协调者,便于将分布式协调的职责从应用中分离出来,从而可以大大减少系统之间的耦合性,而且能够显著提高系统的可扩展性。从实现细节来讲,就是利用ZooKeepe...原创 2018-06-03 22:57:33 · 1045 阅读 · 0 评论 -
ZooKeeper的典型应用场景——数据发布/订阅
数据发布/订阅系统,即所谓的配置中心:发布者将数据发布到ZooKeeper的一个或一系列节点上,供订阅者进行数据订阅,进而达到动态获取数据的目的,实现配置信息的集中式管理和数据的动态更新。ZooKeeper采用的是推拉相结合的方式:客户端向服务器端注册自己需要关注的节点,一旦该服务端节点的数据发生变更,就会向相应的客户端发送Watcher事件通知,客户端接收到这个消息后,需要主动向服务端获取最...原创 2018-06-03 21:26:13 · 449 阅读 · 0 评论 -
ZooKeeper的典型应用场景——分布式队列
分布式队列,简单地分为两大类,一种是常规的先入先出队列,另一种则是要等到队列元素聚集之后,才统一安排执行的Barrier模型。先入先出利用ZooKeeper实现FIFO队列,和分布式共享锁的实现十分类似,可以说是更为简单。FIFO队列类似于每个操作都是写的共享锁模型,设计思路:所有客户端都会到/queue_info这个节点下面创建一个临时顺序节点,例如“/queue_info/[hot...原创 2018-06-03 20:44:45 · 462 阅读 · 0 评论 -
ZooKeeper的典型应用场景——集群管理
集群管理:包括集群监控(侧重对运行时状态的手机)和集群控制(对集群进行操作与控制)ZooKeeper具有两大特性,可以实现集群机器活性监控的系统。客户端如果对ZooKeeper的一个数据节点注册Watcher监听,那么当该数据节点内容或者是其子节点发生变更的时候,ZooKeeper服务器就会向订阅的客户端发送变更通知。对在ZooKeeper上创建的临时节点,一旦客户端与服务器之间的会话...原创 2018-06-03 19:49:24 · 443 阅读 · 0 评论 -
ZooKeeper的典型应用场景——命名服务
在分布式环境中,上层应用仅仅需要一个全局唯一的名字,类似于数据库中的唯一主键。在过去,可以使用关系型数据库字段自带的auto_increment属性自动为每个记录生成一个唯一的ID,数据库会保证生成的这个ID在全局唯一。但是,随着数据规模的不断增大,分库分表随之出现,而auto_increment属性仅能针对单一表中的记录。UUIDUUID是一个不错的全局唯一ID生成方式,能够非常方便地保...原创 2018-06-03 16:23:54 · 746 阅读 · 0 评论 -
ZooKeeper的典型应用场景——分布式锁
在平时的实际项目开发中,可以依赖关系型数据库固有的排他性来实现不同进程间的互斥。然而,目前绝大数大型分布式系统的性能瓶颈都集中在数据库操作上,如果上层业务再给数据库添加一些额外的锁,例如行锁等,会让数据库更加不堪重负。排他锁定义锁在ZooKeeper中,通过数据节点来表示一个锁,例如/exclusive_lock/lock节点就可以被定义为一个锁。获取锁在需要获取锁的情况下...原创 2018-06-03 15:40:46 · 828 阅读 · 0 评论 -
ZooKeeper技术内幕——Leader选举
Leader选举的实现细节服务器状态LOOKING:寻找Leader状态,当服务器处于该状态的时候,它会认为当前集群中没有Leader,因此需要进入Leader选举流程FOLLOWING:跟随者状态,表明当前服务器角色是FollowerLEADING:领导者状态,表明当前服务器角色是LeaderOBSERVING:观察者状态,表明当前服务器角色是Observer投票数据结构...原创 2018-05-31 20:26:33 · 203 阅读 · 0 评论