Curator: ZooKeeper的使用配方

ZooKeeper 作为分布式的存储方式, 有很多种使用场景, 把典型的使用场景提取出来, 成为"配方", 方便用户参考. Curator 作为这些典型场景的具体实现框架, 进一步简化了用户的使用成本.

Curator 实现了 ZooKeeper 配方文档中列出的所有配方(两阶段提交除外)。单击下面的配方名称以获取详细文档。注意:大多数 Curator 配方将自动创建配方的路径的父节点, 默认值为 CreateMode.CONTAINER (即znode 为容器节点, 用于锁, 选举等功能, 空容器可能会被节点删除)。另请参阅有关“Curator Recipes Own Their ZNode/Paths”的技术说明7。

选举

  • 领导者闩锁 - 在分布式计算中,领导者选举是指定单个流程作为分布在多个计算机(节点)中的某个任务的组织者的过程。在任务开始之前,所有网络节点都不知道哪个节点将充当任务的“领导者”或协调者。然而,在运行了领导者选举算法之后,整个网络中的每个节点都将特定的唯一节点识别为任务领导者。
  • 领导人选举 - Curator 领导人选举配方。

  • 共享重入锁 - 完全分布式锁,全局同步,意味着在任何快照时,没有两个客户端认为它们具有相同的锁定。
  • 共享锁 - 与共享重入锁类似,但不可重入。
  • 共享可重入读写锁 - 可跨 JVM 运行的可重入读/写互斥锁。读写锁保持一对相关的锁,一个用于只读操作,一个用于写入。只要没有写入时,读锁定可以由多个读取器进程同时保持。写锁是独占的。
  • 共享信号量 - 一种适用于跨 JVM 的计数信号量。所有进程使用相同锁定路径的在全部 JVM 中的都将实现进程间有限的租约。此外,这个信号量大多是“公平的” - 每个用户将按照要求的顺序获得租约(从ZK的角度来看)。
  • 多共享锁 - 将多个锁作为单个实体进行管理的容器。调用acquire() 时,将获取所有锁。如果失败,则释放所有已获取的路径。类似地,当调用release() 时,将释放所有锁(忽略失败)。

屏障

  • 屏障 - 分布式系统使用屏障来阻止一组节点的处理,直到满足条件,此时允许所有节点继续运行。
  • 双重屏障 - 双重屏障使客户端能够同步计算的开始和结束。当足够的进程加入屏障时,进程开始计算并在完成后离开屏障。

计数器

  • 共享计数器 - 管理共享整数。观看相同路径的所有客户端将具有共享整数的最新值(考虑ZK的正常一致性保证)。
  • 分布式原子长整形 - 一个尝试原子增量的计数器。它首先尝试使用乐观锁定。如果失败,则采用可选的 InterProcessMutex。对于乐观和互斥两种情况,都有重试策略用于重试增量。

高速缓存

  • 路径缓存 - 路径缓存用于观察 ZNode。每当添加,更新或删除子项时,路径缓存将更改其状态以包含当前子项集,子项的数据和子项的状态。Curator 框架中的路径缓存由 PathChildrenCache 类提供。对路径的更改将传递给已注册的 PathChildrenCacheListener 实例。
  • 节点缓存 - 一种试图保持本地缓存的节点数据的实用程序。此类将监听节点,响应更新/创建/删除事件,下拉数据等。您可以注册一个侦听器, 在发生更改时将收到通知。
  • 树缓存 - 一种实用程序,它尝试在本地缓存 Z K路径的所有子节点的所有数据。此类将观察 ZK 路径,响应更新/创建/删除事件,下拉数据等。您可以注册一个将在发生更改时收到通知的侦听器。

节点

  • 持久节点 - 尝试一直保持在 ZooKeeper 中的节点,即使通过连接和会话中断也是如此。
  • 持久性TTL节点 - 当您需要创建 TTL 节点, 但又不希望通过定期手动设置数据来保持其活动时非常有用。
  • 集团成员 - 集团成员管理。将此实例添加到组中,并在组中保留成员的缓存。

队列

  • 分布式队列 - 分布式队列 ZK 配方的实现。保证排入队列的项目(通过 ZK 的PERSISTENTSEQUENTIAL 节点)。如果单个消费者从队列中取出物品,他们将按FIFO 排序。如果顺序很重要,请使用 LeaderSelector 指定单个消费者。
  • 分布式Id队列 - DistributedQueue 的一个版本,它允许ID与队列项相关联。如果需要,可以从队列中删除项目。
  • 分布式优先级队列 - 一种分布式优先级队列 ZK 配方的实现。
  • 分布式延迟队列 - 一种分布式延迟队列的实现。
  • 简单分布式队列 - ZK分发附带的 DistributedQueue 的替代品。

Curator 名称来源

策展人(curator)的产生于西方博物馆、美术馆体系的建立密切相关。英文“curator”一词在英汉词典中以前通常被翻译成“博物馆馆长”、“掌管者”、或“监护人”等,和艺术关系最为密切的大概是“博物馆馆长”。事实上,在西方语境中,“curator”作为职业最早也主要是指16世纪以来随着私人博物馆的兴起而出现的在馆内负责藏品研究、保管和陈列的专职人员。在某些情况下,curator可能也就是馆长(director),亦需负责博物馆的行政管理、资金筹集和社会关系等。后来,随着艺术品在馆藏中数量增多和重要性上升,出现了专门负责馆藏艺术品研究、保管和陈列的人员。

参考文献

http://curator.apache.org/cur...

Curator: ZooKeeper的使用配方相关推荐

  1. Curator zookeeper异常:Error while calling watcher

    错误 Curator启动后,间断出现异常. 2021-09-17 11:09:52.235 ERROR 14546 --- [ain-EventThread] org.apache.zookeeper ...

  2. java curator_[java,zk]在 linux 上快速搭建 zookeeper curator 开发环境

    在这篇博客中简单介绍一下,如何快速的在 linux 操作系统上搭建使用 zookeeper 客户端 curator 编程的单机环境. 在前几篇博客中,介绍的是使用 zookeeper 原生提供的 AP ...

  3. Apache Curator操作zookeeper的API使用

    curator简介与客户端之间的异同点 常用的zookeeper java客户端: zookeeper原生Java API zkclient Apache curator ZooKeeper原生Jav ...

  4. Zookeeper客户端ZkClient、Curator的使用,史上最详细的教程来啦~

    1 前言 本文主要介绍了操作Zookeeper的几种客户端的基础使用,希望对老铁们会有所帮助. 可以去操作zookeeper创建.删除.查询.修改znode节点 2 Zookeeper服务器客户端分类 ...

  5. 简述Zookeeper作注册中心

    2019独角兽企业重金招聘Python工程师标准>>> Zookeeper的数据模型很简单,有一系列被称为ZNode的数据节点组成,与传统的磁盘文件系统不同的是,zk将全量数据存储在 ...

  6. Dubbo + Zookeeper入门初探

    2018年2月15日,阿里巴巴的dubbo进入了Apache孵化器,社区的加入,希望dubbo能变得更好-Registry:注册中心,相当于房产中介,服务提供者和使用者都需要在这里注册/使用服务, 我 ...

  7. 服务器发送消息到客户端互斥,分布式相关/Zookeeper.md · 。W/Java-info - Gitee.com

    ### Zookeeper 概述 ZooKeeper是一种分布式协调服务,用于管理大型主机.在分布式环境中协调和管理服务是一个复杂的过程.ZooKeeper通过其简单的架构和API解决了这个问题.Zo ...

  8. ZK锦集:Zookeeper的下载和安装 | 真/伪集群的快速搭建| 总结的很详细

    前言 文章力求:通俗易懂.图文并茂.系统全面,语言精练,主要介绍以下知识点: 1.zk基础知识铺路,做到屋里有粮,心中不慌 2.zk的下载.安装.核心参数配置.节点参数释义 3.zk集群快速搭建的两种 ...

  9. Zookeeper 的基本使用

    #博学谷IT学习技术支持# 1.Zookeeper功能和特性 2.节点类型四种!四种!四种! 3.命令简单介绍 3.1 服务端命令 3.2 客户端命令 4.Curator --Zookeeper的ap ...

最新文章

  1. #pragma once与#ifndef
  2. 用Python爬取b站弹幕,看大家还会接受《爱情公寓5》吗?
  3. linux 查看文件内容的几种命令
  4. c++运算符和结合性
  5. 使用Nginx搭建图片服务器(windows7)
  6. Python 小白从零开始 PyQt5 项目实战(1)安装与环境配置
  7. CentOS上快速安装Oracle服务器脚本
  8. python unit test_Python Unittest
  9. python :使用 __getitem__ 和 __iter__ 可以使类成为一个迭代器
  10. 大小文件服务器区别,在提供静态包时,观察到Nginx和Express服务器之间文件大小的差异...
  11. VMware 修复 Workstation、Fusion 和 ESXi中的多个漏洞
  12. javascript 日常
  13. 索引组织表:万物皆索引
  14. php权限无需验证的控制器,Thinkphp6用中间件实现多个控制器判断用户登录权限
  15. 叉乘:基于虚拟线圈法的车流量统计
  16. 学小易电脑端——大学生搜题平台
  17. 用导入导出模板生成系统标准功能单据--销售订单
  18. 中国天气网-天气预报接口api
  19. 四舍五入函数round_如何在R中使用round()将数字四舍五入
  20. ByVal和ByRef区别

热门文章

  1. 关于node.js的web框架的应用及并发性能测试
  2. HDFS小文件优化方法
  3. AOP配置开发入门案例
  4. Vue-devtools 安装浏览器调试
  5. windows python MySQL-python安装过程
  6. SSM开发 | 配合Mybatis,通过泛型实现 BaseService ,抽象增改删查方法
  7. linux进程自动关闭与dmesg的使用
  8. hdu 2295 Radar 重复覆盖+二分
  9. [2009.08.09]博客园北京俱乐部活动暨《博客园精华集:Web标准之道》现场签售通知...
  10. python打开json文件变为字典_Python json读写方式和字典相互转化