Windows Cluster 分布式算法

2023-11-11

在分布式系统中,都需要解决分布式一致性问题。那么,在Windows 集群中,使用了什么算法来保证集群的一致性呢——Paxos。Windows Server 故障转移集群 (WSFC) 使用 Paxos 算法在整个系统中同步更改。通过记录 Paxos Tag 值并保留历史记录,可以轻松监控节点之间的集群数据库同步。在分布式系统中,每个节点都存储提案数据。在Windows 集群中,节点和见证磁盘存储提案数据。

注意:文件共享见证并不存储集群数据(历史原因这就不得而知了)

在 Windows Server 集群中,集群数据库是存储集群配置的地方。这是一个名为 CLUSDB 的文件,其中包含一些辅助文件(CLUSDB.1.container、CLUSDB.2.container、CLUSDB.blf),你可以在 C:\Windows\Cluster (%systemroot%\Cluster) 中找到这些文件。

图片

集群数据库也存在于一个注册表配置单元中,该配置单元在集群服务启动时会被加载。数据在 HKEY_LOCAL_MACHINE\cluster。

图片

现在我们知道注册表存在于多个位置并在节点之间进行复制。这种复制对于一个健康的集群来说是至关重要的。你可以在名为 PaxosTag 的集群键下看到一个 DWORD 值(如上图)。这个就是版本号,它跟踪记录集群的任何更改,这对于节点和磁盘见证(如果存在)之间的集群数据库一致性很重要。如果你更改了集群配置,Paxos Tag的数值也将变化。

这是新版的 Paxos Tag 格式,也是使用冒号分隔为三段数据,例如 2021/01/13-07`59`06.363_28:2021/01/13-07`59`06.363_28:123416

每次更改集群配置时,内部同步过程都会向集群中的所有节点发送提案。这由一个序列号(Sequence Numbe)和一个提案号(ProposalNumber)组成。一旦提案者从大多数节点获得共识,它将选择一个值并将其广播给所有其他节点以提交该值。这是Paxos Tag算法的内部工作原理。
 

在Windows Server 2008 故障转移群集中,Paxos Tag由三个数字组成, 每个数字用冒号分隔开,例如 3:3:276。这三个数字表示NextEpochNumber、 LastUpdateEpoch Number和Sequence Number。该数字存储在注册表HKLM\Cluster 的PaxosTag中,在各个节点中应是保持相同的。

图片

当集群形成时,Epoch 数值将改变(新版本为集群形成时间戳)。每次对集群配置进行更新时,都会更最后的改序列号值。集群中的同步过程向集群中的所有节点发送一个提案。该提案由一个序列号和一个提案号组成。集群节点检查其集群配置的本地副本,以查看它是否具有更新的序列号或更高的提案号。如果节点没有更高的数字,则节点将接受提案值并发送回提案节点。如果集群中的大多数节点都接受了同一个提案,那么集群将达成“共识”。

所以,只有当集群恢复正常、或使用/forcequorum 开关(/FQ)启动集群时,Paxos Tag 的Epoch会发生改变。

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

Windows Cluster 分布式算法 的相关文章

  • SQL Server:如果存在会大大减慢查询速度

    正在使用SQL Server 2012 我找到了一些关于查询优化的主题 并将 EXISTS 与 COUNT 进行比较 但我找不到这个确切的问题 我有一个看起来像这样的查询 select from tblAccount as acc join
  • 如何从 Laravel 执行存储过程

    我需要在表单提交数据后执行存储过程 我让存储过程按照我想要的方式工作 并且我的表单正常工作 我只是不知道从 laravel 5 执行 sp 的语句 它应该是这样的 执行 my stored procedure 但我似乎在网上找不到类似的东西
  • 如何在Word 2010中从SQL数据库检索数据?

    我想用 MS SQL 数据库中的数据填充 Word 文档 这可能吗 如果可能的话 如何实现 我过去曾通过多种方式做到这一点 这取决于用户是从 Microsoft Word 外部还是从 Microsoft Word 内部启动操作 From I
  • 重建数据库中的所有索引

    我有一个非常大的 SQL Server 2008 R2 数据库 1 5TB 并将在同一个表中的列之间复制一些数据 我被告知该架构有大量索引 并且想知道是否有默认查询或脚本可以重建所有索引 是否也被建议同时更新统计数据 30 个表中的每一个都
  • 如何关闭与数据库的现有连接

    我想关闭与 MS SQL Server 的现有连接 以便可以通过编程方式对该数据库进行恢复 这应该会断开其他所有人的连接 并使您成为唯一的用户 alter database YourDb set single user with rollb
  • 一张表中按最大日期过滤重复行的 SQL 查询

    我有一个 SQL 数据库 persons 它具有基于 IDNum 列的重复条目 我需要查询条目并仅根据最新创建日期显示行或重复条目 这是查询 SELECT IDNum PersonPGUID CreatedDateTime FirstNam
  • SQL Server 读提交隔离级别到底如何工作?

    恕我直言 我发现两个关于如何进行不一致的描述ReadCommitted有效 均在 MSDN 文档中 https msdn microsoft com en us library ms173763 aspx https msdn micros
  • 在系统托盘中隐藏 tkinter 窗口 [重复]

    这个问题在这里已经有答案了 我正在制作一个程序来提醒我朋友的生日 这样我就不会忘记祝福他们 为此 我制作了两个 tkinter 窗口 1 First one is for entering name and birth date 2 Sec
  • 如果存在多个相同的 ID,则使用 where 子句

    我有下表 ID source Name Age 1 SQL John 18 2 SAP Mike 21 2 SQL Mike 20 3 SAP Jill 25 我希望每个ID都有一条记录 这背后的想法是 如果 ID 仅出现一次 无论来源如何
  • SQL Server 每年的第一个星期一

    如何使用 T SQL 查找 一年中的第一个星期一 这是 ngruson 发布的链接中的示例 http sqlbump blogspot nl 2010 01 first monday of year html http sqlbump bl
  • SQL Server 中全文搜索的奇怪行为

    我的 MyTable 带有列消息 NVARCHAR MAX ID 为 1 的记录包含消息 0123456789333444 Test 当我运行以下查询时 DECLARE Keyword NVARCHAR 100 SET Keyword 01
  • INTEGER 到 DATETIME 的转换与 VB6 不同

    我正在查看一些遗留的 VB6 代码 比我的时代早很多年 它对 SQL 2005 数据库运行查询 它提供了日期限制WHERE子句 其中日期作为整数值给出CLng VB6 中的日期 e g WHERE SomeDateField gt 4006
  • Razor C# - 从数据库获取数据

    我正在使用 WebMatrix 我创建了一个数据库并放置了一个包含几行数据的表 我可以连接到它并获取数据WebGrid 但它只提供了一种使用表格输出数据的方法 这是我的 shows cshtml 代码 var db Database Ope
  • 如何安全地使用保留的 SQL 名称?

    我正在使用 Cakephp 3 使用 sqlserver 作为数据源服务器 我确信我的数据库连接没有问题 因为 home ctp 提示我已连接到我的数据库 并且我还使用迁移插件来创建我的表 似乎使用它没有问题这些工具 但是在我烘焙 MVC
  • SSRS ReportViewer 与 XML 嵌入数据源相关的问题

    我有 C WPF 应用程序 我想在 ReportViewer 控件中显示 SSRS 报告 本地报告文件中嵌入了 XML 数据源 从 SQL Server Business Intelligence Development Studio 运行
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • T-SQL 平均值四舍五入到最接近的整数

    我不确定以前是否有人问过这个问题 但是如何在 T SQL 中将平均值四舍五入到最接近的整数 这应该可以做到 根据您要寻找的平均值 您可能需要在末尾使用 GROUP BY SELECT CONVERT int ROUND AVG Column
  • Java Hibernate 和 SQL Server 中 UUID 的不同表示

    我正在尝试绘制一个UUID使用 Hibernate 将 POJO 中的列转换为 SQL Server 表列 注释的应用如下 Id GeneratedValue Column name Id columnDefinition uniqueid
  • 从一条记录中获取多条记录

    我有一个包含 2 列的表 名称为字符串 数量为整数 例如我需要每条记录的数量 X 数量字段 Name Qty Dave 25 Nathan 10 Chaim 8 我需要 Dave 提供的来自 nathan 10 和 chaim 8 的 25
  • 如何在 ssis 包 2016 中捕获毫秒时间戳

    如何在 ssis 包 2016 中捕获当前时间戳 我声明了一个变量并使用表达式 但缺少毫秒 currenttimestamp DT WSTR 50 DT DBTIMESTAMP System StartTime 我也想要毫秒 Thanks

随机推荐

  • JDBC连接数据库的几种方法与简单解析

    首先要知道jdbc 使用Java代码发送sql语句的技术就是jdbc技术 即jdbc是一个接口 用于不同的数据库 oracle mysql sqlserver 的操作 使用jdbc发送sql语句的前提 登录数据库服务器 连接数据库服务器 数
  • windows杀死进程命令

    有时候由于病毒或其他原因 启动了一系列的进程 并且有时杀了这个 又多了那个 这时候我们可以特定选择一种杀 很多人对windows杀死进程命令比较感兴趣 所以今天小编就为大家来详细讲一讲windows命令行关闭进程教程 感兴趣的用户一起来看看
  • LNK2001无法解析的外部符号 _vfprintf

    legacy stdio definitions lib
  • 感动了千千万万人们的西单女孩

    任月丽出生在河北涿州偏僻的农村 由于父母多病 自小由奶奶带大 为了减轻家庭负担 年仅16岁的她孤身一人来到北京 开始在一小餐馆打工 满1个月后老板没给工资 流浪街头时看到有地下歌手在卖唱 从小就喜欢唱歌的她萌生了也要唱歌的想法 遂与一流浪歌
  • 步步为营--深入研究react技术栈 系列一 (jsx、组件、数据流)

    相关技术博客 1 步步为营 深入研究react技术栈 系列一 jsx 组件 数据流 2 步步为营 深入研究react技术栈 系列二 事件 组件性能优化 更多系列文章持续更新中 一 React简介 React 是一个用于构建用户界面的 Jav
  • python出现indexerror,Python:IndexError:列表索引超出范围错误

    Updated look bottom I am stuck I get a IndexError list index out of range Error def makeInverseIndex strlist numStrList
  • 常用4线风扇接口定义

    4根线分别是GND VCC FG PWM 位置可能不同 FG是转速信号 用于CPU侦测转速 转速 频率 30 4极风扇 PWM通过方波占空比控制转速 PWM接地 最低转速 PWM不接最高转速 频率25KHZ 一般Duty 0 20 转速是相
  • 图灵赠书——程序员11月书单

    10月书讯中奖名单 wudalang gd 精通Git 第2版 chszs CCNA学习指南 路由和交换认证 第2版 sujun10 同构JavaScript应用开发 dongfeng9ge 学习JavaScript数据结构与算法 第2版
  • 目标检测基础

    什么是目标检测 简单来说就是 检测图片中物体所在的位置 本文只介绍用深度学习的方法进行目标检测 同过举出几个特性来帮助各位理解目标检测任务 同时建议学习目标检测应先具备物体人工智能算法基础和物体分类现实基础 特性1 Bounding Box
  • 解决华为手机不能用USB链接电脑的问题

    可能是由于USB空松动 所以总是安装不完驱动程序 USB调试开关自动关闭 导致安装不完驱动程序 手机的USB调试开关就关闭了 可以这样解决 以下为花粉俱乐部转载 我们经常这样的事情 打开USB调试之后 本来用得好好的 点了下USB连接选项
  • VS 静态库lib如何依赖动态库dll

    一般来说 vs可以提供正常的依赖输入窗口用于依赖动态库 但是当工程设置生成静态库之后 VS默认不支持给静态库增加依赖动态库 链接器选项没有了 此时只能够把静态库所依赖的动态库也改成静态库 这样这个静态库才能被正常编译 否则编译的时候会报错
  • golang并发编程基础

    go并发编程 1waitgroup WaitGroup就是等待所有的goroutine全部执行完毕 add方式和Down方法要配套使用 package main import fmt sync func main var wq sync W
  • 【STM32技巧】HX711称重芯片详细说明

    概述 HX711 模块 A 通道带有 128 倍信号增益 可以将 5mV 的电压放大 128 倍 然后采样输 出 24bit AD 转换的值 单片机通过指定时序将 24bit 数据读出 如何计算传感器供电电压 HX711 可以在产生 VAV
  • PAT_B_1094 谷歌的招聘 (20 分)【测试点3,5】

    本题要求你编程解决一个更通用的问题 从任一给定的长度为 L 的数字中 找出最早出现的 K 位连续数字所组成的素数 输入格式 输入在第一行给出 2 个正整数 分别是 L 不超过 1000 的正整数 为数字长度 和 K 小于 10 的正整数 接
  • [HarekazeCTF2019]encode_and_encode

    HarekazeCTF2019 encode and encode 打开环境 得到源码
  • python+postgresql+psycopg2实现自动化数据库生成(数据库迁移)

    python pgsql psycopg2实现一键数据库生成 1 tips Navcat转储sql文件 存在主键自增 加入下面代码 CREATE SEQUENCE IF NOT EXISTS t 表名 id seq START 1000 手
  • FastDfs在NET下的使用

    FastDfs是一个开源的轻量级分布式文件系统 其原理可以查看http blog chinaunix net uid 20196318 id 4058561 html 然后部署安装部分可参考http blog csdn net poecha
  • codeblocks安装常见问题和版本区别

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 目前codeblocks有4个版本8 02 10 05 12 11 13 12 之前一直在用10 05的版本 很好用的 后来在做gtk是出现版本不匹配问题 就换了13 12
  • Java框架SSM学习——持久层Mybatis之动态SQL

    动态SQL 为什么要用动态SQL 如果使用JDBC或者类似Hibernate等其他框架 很多时候需要去根据需要去拼接SQL语句 这是一个很麻烦的事情 因为在某些查询中 需要多个条件 在使用其他框架的时候 需要用大量的Java代码进行判断 可
  • Windows Cluster 分布式算法

    在分布式系统中 都需要解决分布式一致性问题 那么 在Windows 集群中 使用了什么算法来保证集群的一致性呢 Paxos Windows Server 故障转移集群 WSFC 使用 Paxos 算法在整个系统中同步更改 通过记录 Paxo