IT袋

当前位置:主页 > 经验教程 > 建站编程 >

zookeeper详解

zookeeper详解 深入解析Zookeeper(3)

时间:2024-01-16 13:59:56 来源:IT袋 作者:马勇
导读:zookeeper详解,权限模式(Scheme):授权的策略 授权对象(ID):授权的对象 权限(Permission):授予的权限 所谓的ACL就是每个Znode创建时都会有一个列表,用于决定谁可以

zookeeper详解

  • 权限模式(Scheme):授权的策略
  • 授权对象(ID):授权的对象
  • 权限(Permission):授予的权限

所谓的ACL就是每个Znode创建时都会有一个列表,用于决定谁可以对它执行何种操作。

什么是Zookeeper中的Watch

Watcher在Zookeeper中是一个核心的功能,Watcher可以监控目录节点变化以及目录的变化。一旦这些状态发生变动,服务器就会通知所有设置在这个目录节点上的Watcher,从而每个客户端可以很快知道它所关注的目录节点的状态发生了变化,以便做出对应的处理。

  • 在Zookeeper中可以设置观察的操作有:existsgetChildrengetData
  • 在Zookeeper中可以触发观察的操作有:createdeletesetData

Zookeeper中的Watch整体思路很像是分布式环境下的观察者模式。

Watch在客户端的大致实现流程

  • 客户端会发送请求将信息封装成Packet对象。
  • 发送时会采用Java NIO/Netty的方式,如果注册了Watch,会向服务器发送Watch信息
  • 发送完成后,客户端通过回调方法获取ZKWatchManager中对应的Watch Map,在Map中注册相关的Watch。

注意:getWatch的过程没有加锁,注册Watch时通过synchronized关键字来保证原子性。因为只有写操作下才有可能出现线程安全问题。

Watch在服务端大致的实现流程

  • 当Zookeeper服务端接收到一个客户端请求时,首先会对请求进行解析,判断该请求中是否包含了Watch事件,如果包含,则将Watch事件存储到WatchManager中。
  • 在Zookeeper中底层是通过FinalRequestProcessor#processRequest方法实现的。

利用Zookeeper的Watch机制衍生的应用有哪些

  • 配置中心

我们可以把类似数据库配置信息存储在Zookeeper数据节点中。服务器集群客户端对该节点添加Watch事件监控,当即群众的服务启动时,会读取该节点数据获取数据配置信息。而当该节点数据发生变化时,【Zookeeper服务器会发送Watch事件给各个客户端(推)】,集群中的客户端在接收到该通知后,【重新读取节点中的数据库配置信息(拉)】

  • 注册中心

Dubbo项目中采用Zookeeper作为注册中心(CP),原理和配置中心类似,其与Eurka的AP设计形成了鲜明对比。

Zookeeper是如何保证创建节点的唯一性的

Zookeeper主要通过两方面来保证节点创建的唯一性:

  1. 所有的写请求都会由Leader进行,即使是请求到Follower节点,也会被转发到Leader节点上执行
  2. 在Leader上写入数据的时候,通过加锁(synchronized)和CAS(ConcurrentHashMap)操作,保证了并发情况下只有一个线程添加成功

相关阅读

  • OSPF点对多点非广播网络类型特点以及工作原理

    OSPF点对多点非广播网络类型特点以及工作原理

    本文导读:OSPF点对多点非广播网络类型特点以及工作原理的相关知识,接下来分享详细内容。 特点 点对多点非广播网络类型适用于一个路由器与多个其他路由器直接相连的情况,并且不支持

  • 减少数据中心网络拥塞的6种方法 优化数据中心网络减少拥塞的6种策略

    减少数据中心网络拥塞的6种方法 优化数据中心网络减少拥塞的6种策略

    小编为大家讲一讲减少数据中心网络拥塞的6种方法方面的讲解,下面IT袋网为您详细介绍 数据中心网络的拥塞问题对于网络性能和用户体验至关重要。 为了解决这个问题,我们可以采取一系列

  • 什么是堡垒机 有哪些特点?

    什么是堡垒机 有哪些特点?

    小编为大家说一说什么是堡垒机的话题,下面为详细的介绍。 堡垒机(Bastion Host)是一种位于内部网络和外部网络之间的中间服务器,用于控制和监管对内部服务器的访问。 它充当了一座“堡

  • 什么是FTP服务器? 如何配置和运行FTP服务器教程

    什么是FTP服务器? 如何配置和运行FTP服务器教程

    一篇方法教程,与您分享什么是FTP服务器方面的内容,接下来分享详细内容。 FTP服务器是一个用于在网络上存储和传输文件的服务器。FTP是File Transfer Protocol(文件传输协议)的缩写,是一个基