如何使用kazoo客户端进行leader选举?

2024-02-04

这是 kazoo readthedocs 上提到的代码

election=zk.Election("/electionpath", "my-identifier")

要传递哪些输入参数才能使特定节点成为领导者? (即 /electionpath 和 my-identifier 在这里指什么?)


简而言之:“/electionpath”是您感兴趣的路径,您将在其中创建节点、添加数据并使用 dataWatchers 监视节点。 “my-identifier”是不可重入锁的标识符,它将用于验证谁是竞争者中的领导者,并只允许写入领导者。

详细地: 为了简化它,首先解释为什么动物园管理员应该有领导者。领导者负责执行所有写入操作和连接相关处理。 考虑以下示例来理解领导者选举的概念。

  1. A、B、C 是我的集群下可用的服务器(zookeeper 术语中的节点)。
  2. '/test_zk/path_of_interest/'(您的“/electionpath”)是我感兴趣的路径,我将在其中创建节点、添加数据并使用 dataWatchers 监视节点。
  3. 在此路径下创建临时节点。

在[1]中:zk_client.create('test_zk/path_of_interest/test_ephemeral', 短暂=真实)

  1. 集群的每个节点在内部存储此临时节点信息。

在[9]中:zk_client.get(“test_zk/path_of_interest/test_ephemeral”)

输出[9]: ('',ZnodeStat(czxid=678608988239, mzxid=687195015354, ctime=1476960597584,mtime=1477310417594,版本=1145,cversion=0, 厌恶=0,临时所有者=0,数据长度=185,numChildren=0, pzxid=678608988239))

  1. 在领导者选举过程中,创建id(czxid)最小的节点将被选举为领导者。

  2. 领导者选举在内部为当选节点(最小的 czxid)提供不可重入锁,并为该锁设置一些标识符,该标识符将用于验证谁是竞争者中的领导者(您的“我的标识符”)。

现在让我们看看选举领导者的实际代码。

In [7]: election = zk_client.Election('/test_zk/path_of_interest', 'test-election')

In [8]: def leader_func():
   ...:     print 'Election Completed...!'
   ...:     

In [9]: election.run(leader_func)
Election Completed...!

可调用对象被传递给 run 方法来执行一些选举后的操作。

我希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用kazoo客户端进行leader选举? 的相关文章

  • Python BigQuery 存储。并行读取多个流

    我有以下玩具代码 import pandas as pd from google cloud import bigquery storage v1beta1 import os import google auth os environ G
  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • 如何在刻度标签和轴之间添加空间

    我已成功增加刻度标签的字体 但现在它们距离轴太近了 我想在刻度标签和轴之间添加一点呼吸空间 如果您不想全局更改间距 通过编辑 rcParams 并且想要更简洁的方法 请尝试以下操作 ax tick params axis both whic
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • 从基类方法返回对派生类的引用

    我的任务是实现一个简单的 SVG 生成器 我需要支持圆 折线和文本 这三者至少有 4 个常用方法 设置描边颜色 设置填充颜色 设置描边宽度 字符串 主要要求之一是支持链接 例如 折线 SetStrokeColor 白色 SetFillCol
  • 按相同键对 JavaScript 数组对象进行分组

    我有一个对象数组 其中一些具有相同的月份名称 但基于日期的值不同 我们如何根据相同的属性值对数组对象进行分组 例如 month Jan value 3 month Jan value 3 5 month Feb value 2 1 mont
  • 什么任务最适合以函数式编程风格完成?

    我最近刚刚发现了函数式编程风格 我相信它将减少开发工作 使代码更易于阅读 使软件更易于维护 然而 问题是我很难说服任何人 嗯 最近我有机会就如何减少软件开发和维护工作进行演讲 我想向他们介绍函数式编程的概念以及它如何使团队受益 我的想法是向
  • 在项目的浏览器列表中配置的一个或多个浏览器

    我是离子框架的新手 启动离子应用程序时收到以下警告 请提出修复建议 ng One or more browsers which are configured in the project s Browserslist configurati
  • 鼠标移动/滚动到下一个哈希

    我添加了以下代码以便用鼠标滚动 通过单击 拖动滚动 而不是通过鼠标滚轮滚动 到目前为止 一切都很好 就像魅力一样 var clicked false clickY document on mousemove function e click
  • 枚举两个大数组的快速方法?

    我有两个大数组要处理 但让我们看一下下面的简化示例来了解一下这个想法 我想查找是否有一个元素data1与中的元素匹配data2并返回两者的数组索引data1 and data2如果以新数组的形式找到匹配项 index of data1 in
  • Aurelia 中 fetch() 的错误处理

    我有一个 API 其中包含服务器引发错误 状态 500 时出现的问题的有用描述 该描述作为响应文本的一部分 我的客户端代码使用 Aurelia 通过以下方式调用 apiaurelia fetch client使用通用方法进行调用 funct
  • AADB2C90077:用户没有现有会话,请求提示参数的值为“无”

    我有一个 Angular 应用程序 它使用MSAL js https github com AzureAD microsoft authentication library for js当我尝试获取访问令牌时 我收到以下错误 AADB2C9
  • 如何在 Sublime Text 3 中切换 XML 行注释

    我正在使用 Sublime Text 3 我遇到了问题 我不知道如何切换 XML 行注释 我知道有一个Toggle CommentSublime Text 3 中的函数 我尝试过 然而 结果却和我想象的不一样 例如 我想切换注释以下 XML
  • 是否可以从 MatLab 代码生成流程图? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我继承了一个 MatLab 项目 其中有一堆我需要重构的 MatLab 文件 能够生成流程图或类似的内容对我有很大帮助 我用谷歌搜索了
  • vs code live sass 编译器不更新文件

    所以有人之前问过类似的问题但没有得到答案 我正在学习 SASS 并在 vs code 中使用实时 sass 编译器 但它没有更新任何内容 我可以让 app css 文件显示更改的唯一方法是按下观看按钮并基本上重置该内容 以前没有这样做过 我
  • macOS 更新后 Git 无法工作(“xcrun:错误:无效的活动开发人员路径 (/Library/Developer/CommandLineTools”)

    我更新到最新的操作系统 和 或重新启动计算机 每次重大更新都会发生这种情况 但这一次我所做的只是在 2022 年 9 月 13 日重新启动计算机 今天早上 我在我的命令行中导航到我的工作代码库MacBook Pro https en wik
  • 我是否应该对共享进程生命周期的对象调用 dispose ?

    我知道所有实现的对象IDisposable一旦不再需要它们就应立即处置 以释放其非托管资源使用的内存 我的问题与我所知道的物体有关事实上将一直存活到主机进程本身终止 如果我处理掉它们 会有什么影响吗 进程终止时是否有可能内存未被释放 GDI
  • Swagger 不显示真正的错误消息

    我们使用 NET WebAPI 框架 并在 Web API 之上使用 swagger 来进行注释和开箱即用的 UI 体验 到目前为止 它运行得很好 但是 当我从 WebAPI Http 400 返回错误时 代码如下 return BadRe
  • 如何解决 IndexError: 在 Python 中使用循环内的数组列出赋值索引超出范围

    我是蟒蛇新手 我正在创建 2 个数组file name 存储文件的名称 和path 存储文件的路径 的价值观path数组在 while 循环内分配 但我收到错误 IndexError Python 中的列表赋值索引超出范围 我已经在这上面浪
  • 我可以在同一台机器上拥有/使用不同版本的导轨吗

    我实际上正在阅读一本为 Rails 2 3 5 编写的 Rails 书籍 我也想测试 Rails 3 beta 我的 Mac OS leopard 中是否可以进行这样的设置 我尝试过使用 gem list drails 我的Mac中存储了许
  • Qt 小部件的命名约定

    我正在与一群其他程序员合作开发一个使用 C 和 Qt 构建的开源项目 现在 我们需要一个小部件 以及其他变量 的命名约定 以将其用作所有代码中的标准 以便代码获得更好的可读性 并且我们可以在程序员之间获得更好的协调 有什么建议吗 编辑 我不
  • 如何检查 Observable 数组的长度

    在我的 Angular 2 组件中 我有一个 Observable 数组 list Observable
  • 如何在 Flutter 中将 textEditiing 控制器与 Provider 结合使用

    我正在使用提供程序进行状态管理 我的情况是我的表单中有多种类型的字段 问题出在文本字段上 每当我更改文本时 它都会表现得很奇怪 就像输入的文本以相反的顺序显示一样 class MyProvider with ChangeNotifier S
  • 如何使用kazoo客户端进行leader选举?

    这是 kazoo readthedocs 上提到的代码 election zk Election electionpath my identifier 要传递哪些输入参数才能使特定节点成为领导者 即 electionpath 和 my id