Zookeeper原理
一、概念
- Zookeeper是一个开源的、分布式的,为分布式应用提供协调服务的Apache项目。封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
二、选举机制
- 首先是几个概念:
- myid:节点的唯一标识,在启动节点之前需要配置好;
- zxid:在数据修改后会增加,zxid越大证明这个节点里的数据越新。
- leader:leading 角色与状态
- follower:following
- observer:looking
- 过程
- 只有两种情况下会产生选举:
- 集群初始化(没有leader);
- leader不能与其他节点保持稳定连接;
- 第一轮:一开始都是looking状态,第一个节点都自己投票(因为没超过半数,所以继续下一轮投票)
- 然后节点2也给自己投票,然后互相交换投票结果(会检查有效性)。选票的形式为(myid,zxid)。
- 选票比较机制:会比较zxid,保留zxid较大的选票,如果zxid都一致,那么保留myid最大的选票。
- 第二轮将通过比较取舍后的选票互相发送,然后判断是否有超过半数的节点保留了相同的选票,如果是,则选票决定了leader;如果否,则节点2为looking状态,继续开启第三个节点进行选票。
- 添加一个节点时,如果已有leader,则新加节点自动变成follower。
- 整体而言,就是挨个启动节点,然后投一次票比一次id:带你搞明白Zookeeper选举机制_qu_smalldoubao的博客-CSDN博客
- 只有两种情况下会产生选举:
- ZAB协议
-
zab协议是为zk专门设计的一种支持崩溃恢复的原子广播协议,zk依赖zab实现分布式数据一致性,来保证住呗模式的系统架构中各个副本之间的数据一致性。zab协议包括两个模式:崩溃回复(新选举leader)和消息广播(选举出Leader服务器之后,进入消息广播模式,开始接收处理客户端的请求)
-
相关文章:
Zookeeper原理
一、概念 Zookeeper是一个开源的、分布式的,为分布式应用提供协调服务的Apache项目。封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 二、选举机制 首先是几个概念: myid:节点的唯一标识&…...
关于FPGA如何快速生成模块的例化模板(实用)
关于FPGA如何快速生成模块的例化模板(实用) 语言 :Verilg HDL 、VHDL EDA工具:ISE、Vivado、Quartus II 关于FPGA如何快速生成模块的例化模板(实用)一、引言二、快速生成例化模块的几种方法1. IP核的例化模…...
在 Python 中将字符串转换为集合
使用 set() 类将字符串转换为集合,例如 my_set set(my_str)。 set() 类将通过拆分其字符将字符串转换为集合。 my_str one# ✅ 通过拆分字符将字符串转换为集合 my_set set(my_str) print(my_set) # 👉️ {n, o, e}# -----------------------------…...
大数据Flink进阶(十三):Flink 任务提交模式
文章目录 Flink 任务提交模式 一、会话模式(Session Mode) 二、单作业模式(Per-Job Mode) 三、应用模式(Application Mode) Flink 任务提交模式 Flink分布式计算框架可以基于多种模式部署,…...
day11—编程题
文章目录1.第一题1.1题目1.2涉及的相关知识1.3思路1.4解题2.第二题2.1题目2.2思路2.3解题1.第一题 1.1题目 描述: 将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法࿰…...
CentOS下安装crontab及cron表达式解析
目录安装依赖服务启停任务操作参数简要说明1、参数说明2、cron表达式解析(1)定义(2)结构(3)字段含义(4)注意事项(5)常用表达式例子crontab示例结尾安装依赖 # vixie-cron软件包是crontab的主程序 # crontabs软件包是用来安装、卸装、或列举用来驱动crontab守护进程的表格的程序…...
python 绘制训练曲线--基于Numpy.convolve曲线平均滤波
文章目录1 训练曲线--震荡的非常厉害2 基于Numpy.convolve曲线平均滤波3 python 绘制训练曲线 平滑处理--Savitzky-Golay 滤波器曲线平滑4 python 绘制训练曲线--插值法 曲线平滑处理1 训练曲线–震荡的非常厉害 上一篇文章用python自己绘制训练曲线震荡的非常厉害(…...
状态管理插件vuex
概念: 专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。 作用: 如果我们使用全局总线要让所有的组件…...
arthas—阿里开源的Java诊断工具
一、arthas简述Arthas 是阿里开源的Java诊断工具。安装在系统所在服务器,有着强大的能力,是一个开发运维神器。主要功能在线热替换代码/代码增强全局视角的性能分析查看方法执行情况,帮助跟踪偶现的bug支持JDK6二、官方资料官方文档的介绍非常…...
Java学习记录
阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!! 文章目录阅读前请看一下:我是一…...
OpenGL API 之 glVertexAttribPointer
glVertexAttribPointer 定义通用顶点属性数据的数组 C Specification format void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const void * pointer); Parameters nametypedescriptionindexGLuint Specifies the inde…...
蓝桥杯真题4
[蓝桥杯 2017 省 AB] 分巧克力 题目描述 儿童节那天有 KKK 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 NNN 块巧克力,其中第 iii 块是 HiWiH_i \times W_iHiWi 的方格组成的长方形。 为了公平起见,小明需要从这 NN…...
day02_基本语法
今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记Java2307_沐沐霸的博客-CSDN博客 零、复习昨日 一、程序&Java介绍 二、安装JDK&配置环境变量 三、DOS命令 四、第一个程序[重点] 五、Java语言规范[重点] 六、运行机制 七、Typora工具使用 附录:…...
多线程之单例模式
前言 本篇介绍的是wait与notify方法,通过wait来顺序控制执行一些代码,了解单例模式,进行单例模式的简单实现,介绍饿汉模式下出现线程不安全的问题与解决;如有错误,请在评论区指正,让我们一起交…...
2023年绿色建筑国际会议(ICoGB 2023) | Springer独立出版
会议简介 Brief Introduction 2023年绿色建筑国际会议(ICoGB 2023) 会议时间:2023年5月21日-23日 召开地点:瑞典斯德哥尔摩 大会官网:www.icogb.org 2023年绿色建筑国际会议(ICoGB 2023)将围绕“绿色建筑”的最新研究领域而展开,为…...
Python中进程和线程到底有什么区别?
人生苦短,我用python python 安装包资料:点击此处跳转文末名片获取 一、进程和线程的关系 线程与进程的区别可以归纳为以下4点: 地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。…...
2023美赛春季赛F题思路数据代码论文分享
文章目录赛题思路赛题详情参赛建议(个人见解)选择队友及任务分配问题(重要程度:5星)2023美赛春季赛F题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片,加入获取…...
念一句咒语 AI 就帮我写一个应用,我人麻了...
原文链接:https://forum.laf.run/d/232 作为人类,我们时常会有自己独特的想法和脑洞大开的创意。然而,这些想法往往因为成本过高而无法实现,毕竟每个人的能力和精力都是有限的,尤其是对于程序员而言,不可能…...
开放平台设计之接口签名认证
前言 当前时代,数据是王道!当我们自己的平台有了足够大的数据量,就有可能诞生一个开放平台宫第三方分析、使用。那么我们怎么去实现对外部调用接口的控制与鉴权呢?这是我们今天的重点——接口签名认证!!&a…...
Vue自创插件发布到npm以及使用方法
Vue自创插件发布到npm以及使用方法 目标:创建my-popup-selector下拉框组件,并发布到npm,效果如下图: 禁用时样式: ①创建vue项目: my-popup-selector ②项目目录结构截图如下: ③在项目根目录…...
深圳清关代理口碑爆棚,不找它你就亏大啦!
事件经过某外贸公司近期有一批从国外进口的电子产品要在深圳口岸清关。该公司原本以为按照常规流程操作即可顺利完成清关,便自行准备了相关单证资料。然而,当货物到达深圳口岸进行报关时,却遭遇了清关受阻的情况。海关在合规审核过程中发现&a…...
如何用XUnity.AutoTranslator打破游戏语言壁垒:终极实时翻译插件指南
如何用XUnity.AutoTranslator打破游戏语言壁垒:终极实时翻译插件指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂的外语游戏而烦恼吗?XUnity.AutoTranslator正是你…...
质子CT技术:原理、系统设计与临床应用
1. 质子CT技术概述:从原理到临床需求在放射治疗领域,质子治疗因其独特的布拉格峰(Bragg Peak)特性而备受关注。与传统X射线治疗相比,质子束在组织中沉积的能量分布具有明显的物理优势——在射程末端释放最大剂量后迅速衰减。这一特性使得肿瘤…...
高速SerDes技术解析:从差分传输到时钟恢复的硬件设计实战
1. 从并行到串行:高速通信的基石SerDes在数字电路的世界里,数据最初大多以并行的形式存在,比如我们熟悉的32位或64位数据总线。但当我们需要把数据从一个芯片发送到另一个芯片,或者从一块电路板传到另一块,尤其是在高速…...
ESJsonFormat-Xcode与MJExtension完美结合:构建高效iOS数据模型
ESJsonFormat-Xcode与MJExtension完美结合:构建高效iOS数据模型 【免费下载链接】ESJsonFormat-Xcode 将JSON格式化输出为模型的属性 项目地址: https://gitcode.com/gh_mirrors/es/ESJsonFormat-Xcode ESJsonFormat-Xcode是一款专为iOS开发者打造的JSON转模…...
5分钟搞定Android Studio中文界面:免费汉化插件完整指南
5分钟搞定Android Studio中文界面:免费汉化插件完整指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Androi…...
搞懂USB2.0 Reset:从Hub发信号到设备握手的完整流程拆解
USB2.0 Reset全流程解析:从信号触发到高速模式切换的工程实践 当你的USB设备频繁掉线或枚举失败时,逻辑分析仪上那些跳变的波形到底在诉说什么?作为嵌入式开发者,我们常常需要像侦探一样解读这些电子信号背后的协议语言。本文将带…...
大语言模型在模块化布局优化中的应用与实战
1. 项目概述:当大语言模型遇见模块化布局优化在芯片设计和建筑规划领域,模块布局优化一直是个令人头疼的NP难问题。想象一下,你面前有16个形状各异的乐高积木(模块),需要将它们严丝合缝地拼成一个矩形底板&…...
基于GeoDa与R语言的空间数据回归实践技术应用
空间数据是常见的数据形式之一,因此空间数据回归也是最常用的方法之一。由于空间数据之间往往有相关性,它们不满足经典统计学的数据独立性假设,所以回归的理论和建模方式与普通回归模型相比既陌生又复杂。GeoDa与R语言是建立空间回归模型最合…...
MySQL 跑得稳不稳,Prometheus 得能抓到这个数据才能说清楚
前言 数据库出问题的时候,最怕的不是故障本身,而是故障发生了却没人知道,等用户反馈过来才去翻日志,慢了不止一拍。 MySQL 本身有一些状态变量能反映运行状况——连接数、QPS、缓冲池命中率、慢查询数量——但这些数据要么存着没…...
