关于vue.js:zookeeper的应用场景

43次阅读

共计 2138 个字符,预计需要花费 6 分钟才能阅读完成。

zookeeper 是一个高可用的分布式数据管理与协调框架,基于对 ZAB 算法的实现,该框架可能很好地保障分布式环境中数据的一致性。

1、数据公布订阅
数据公布 / 订阅零碎,即配置核心。发布者将数据公布到 zk 上,功订阅者进行数据订阅,进而达到动静获取数据的目标,实现配置信息的集中式治理和数据的动静更新。
公布 / 订阅零碎个别有两种设计模式:推 push 和拉 pull。zk 采纳推拉联合的形式:客户端向服务端注册本人须要关注的节点,一旦该节点的数据产生变更,那么服务端就会向相应的客户端发送 Watcher 事件告诉,客户端收到这个告诉之后,须要被动到服务端获取最新的数据。

应用场景

适宜进行配置管理的信息个别具备以下特点:

数据量通常较小

数据内容在运行时会产生动态变化

集群中各机器共享,配置统一。
应用形式

配置存储
将须要集中管理的配置信息写到 zk 的数据节点上,称为配置节点

配置获取
集群中的每台机器在启动初始化阶段,从 zk 的配置节点上读取配置信息,同时在该节点上注册一个页游数据变更的 Watcher,一旦节点数据发生变化,所有订阅的客户端可能获取到变更告诉

配置变更
零碎运行过程中,如果配置发生变化,客户端会接管到变更告诉后,就能够从新获取最新的数据。

2、负载平衡
典型场景:动静 DNS 服务

3、命名服务
分布式系统中,被命名的实体通常能够是集群中的机器、提供的服务地址或近程对象。其中较为常见的就是一些分布式服务框架中的服务列表。通过应用命名服务,客户端利用可能通过指定名字来获取资源的实体、服务地址和提供者的信息等。
zk 提供的命名服务性能,可能帮忙利用零碎通过一个资源援用的形式实现对资源的定位和应用。狭义上命名服务的资源定位不是真正意义的实体资源,在分布式环境中,下层利用暗影须要一个全局惟一的名字,例如,应用 zk 实现一套分布式全局惟一 ID 的调配也属于命名服务。

4、分布式协调 / 告诉
zk 应用 watcher 注册与异步告诉机制,可能很好地实现分布式环境中不同的机器,甚至是不同零碎之间的协调与告诉。

应用场景

心跳检测
机器间的心跳检测是指在分布式环境中,不同机器之间须要检测到彼此是否在失常运行。传统的办法是在机器之间建设长连贯,通过 TCP 连贯固有的心跳监测机制实现下层机器的心跳检测。基于 zk 的长期节点个性,能够让不同的机器都在 zk 的一个指定节点下创立长期子节点,不同机器能够监听长期节点来判断对应的客户端机器是否存活。通过这种形式,检测零碎和被检测零碎不须要间接关联,大大减少零碎耦合。

5、集群治理
集群治理,包含集群监控与集群管制。

集群监控:集群运行时状态的手机,例如以后有多少台机器在工作等

集群管制:对集群进行操作和管制,例如对集群中机器进行高低线等
传统的分布式系统中,通过在集群中每台机器上部署一个 agent,由 agent 被动想指定的监控核心零碎上报本人所在的机器状态。
zk 中,应用 watcher 监听和长期节点的个性实现集群治理。

应用示例

分布式日志收集零碎

在线云主机治理

分布式定时工作零碎
6、Master 选举
Master 选举,即在集群的所有机器中选举出一台作为 Master。利用 zk 的强一致性,即 zk 将会保障客户端无奈反复创立一个曾经存在的数据节点,来保障高并发下节点的创立能保障全局唯一性。
Master 动静选举的过程大抵如下:客户端集群在 zk 上指定节点下创立长期节点,在这个过程中,只有一个客户端能创立胜利,那么这个客户端所在的机器就成为了页游里的 www.sangpi.comMaster。同时,其余没有在 zk 上创立胜利的客户端会注册一个子节点变更的 watcher,用于监控以后 master 是否存活,一旦发现 master 挂了,那么其余的客户端从新进行 master 选举。

7、分布式锁

排他锁
利用 zk 的长期节点实现,过程与 master 选举相似

共享锁
利用 zk 的长期程序节点实现。每台机器在指定节点下创立长期程序节点,并指定节点类型是读还是写,并对节点创立子节点变更的 watcher。同时判断本人在子节点中的序号大小,以及比本人小的节点的类型,例如如果本人想申请读锁,如果比本人小的节点都是读,则获取锁。

羊群效应
下面共享锁的实现原理是,只有子节点产生变更,所有机器都要收到变更告诉并获取所有子节点列表。当集群中节点个数很多时,会导致发送大量的 watcher 告诉,对 zk 服务器造成微小的性能影响和网络冲击,更重大的是,当如果同一时间有多个节点发生变化,zk 服务器会在短时间外向其余客户端发送大量的工夫告诉——这就是所谓的羊群效应。

改良后的共享锁
改良后的共享锁是每个长期节点不对所有的子节点注册 watcher,而是只比照本人序号小的最初一个节点注册 watcher 监听。

8、分布式队列
分布式队列,简略地讲气氛两大类,一类是惯例的先进先出队列,另一种是等到队列元素会聚后才统一安排执行的 Barrier 模型。

FIFO
实现原理与全写的共享锁相似,应用长期程序节点实现,每个节点监听比本人序号小的最初一个节点。

Barrier
利用长期节点实现。比方当子节点个数达到 10 后再持续往下执行,过程大略是:将指定节点的数据内容赋值为 10,客户端在指定节点下创立长期节点,而后客户端读取指定节点的数据内容,并对子节点列表注册 watcher。

正文完
 0