绯闻女孩不只会八卦:从“验明正身”到“抓内鬼”,Gossip的进阶玩法
默克尔树
默克尔树(Merkle Tree)是由计算机科学家Ralph Merkle多年前提出,并以他本人的名字来命名,也叫哈希树。默克尔树是一种树形数据结构,通常是二叉树,其中每个叶子节点是数据块的哈希值,而每个非叶子节点是其所有子节点哈希值的哈希。树根的哈希值(Merkle Root)代表了整个数据集的摘要。

比如想验证Y这个值是否被包含在某个区间上,那么只需要验证H(Z)、H(WX)的哈希值,构成默克尔树路径就可以证明。
1)获取Y的哈希值H(Y);
2)通过H(Z)的哈希值,计算得到H(YZ);
3)通过H(WX)+H(YZ)得到哈希值H(WXYZ);
4)将哈希值H(WXYZ)与根节点哈希值对比,完成验证。
默克尔树和反熵可以结合使用。例如,当一个节点需要与另一个节点同步数据时,可以先比较两个节点的默克尔树。如果默克尔树不一致,就说明两个节点的数据可能不一致。然后,可以通过比较默克尔树的不同部分,找出数据不一致的具体位置,从而只同步不一致的数据,而不是全部数据。这样可以大大提高数据同步的效率。
基于Gossip实现节点的故障检测
单点视角检测
集群中的每个节点, 定期向集群中的其它节点发送消息,用于检测对方是否在线。如果接收消息的节点没有在规定的时间内返回消息,那么,发送消息的节点就会将接收消息的节点标注为疑似下线状态(Probable Fail,Pfail)。
检测信息传播
集群中的各个节点会通过相互发送消息的方式来交换自己掌握的集群中各个节点的状态信息,如在线(Success)、疑似下线(Pfail)、下线(Fail)。例如,当节点C通过消息得知节点 A认为节点B疑似下线时,节点C会更新自己保存的集群状态信息,将从A获得的下线报告保存起来。
基于检测信息作下线判决
如果在一个集群里,超过半数的节点都将某个主节点 X 报告为疑似下线,那么,节点 X 将被标记为下线(Fail),并广播出去,所有收到这条 Fail 消息的节点都会立即将主节点 X 标记为 Fail。至此,故障检测完成。

总结:没有银弹,只有权衡
分布式系统是由多个通过网络互连、协同工作的独立计算节点组成的复杂系统,旨在共同完成大规模的存储和计算任务。在其设计与实现过程中,必须面对各种潜在的故障模式,主要包括崩溃故障(节点无响应)和更具挑战性的拜占庭故障(节点行为不可预测甚至恶意)。
为了高效管理海量数据,数据分布策略不可或缺,常见的有哈希分布(均匀但节点变更敏感)、范围分布(利于范围查询但易热点)和一致性哈希(优化节点增删时的数据迁移量)。
为确保数据的持久性和服务的高可用性,副本机制被广泛采用。主流模式包括领导者-追随者模式(强一致性易实现,Leader为瓶颈)和多主复制模式(高写可用性,冲突解决复杂)。选择何种模式取决于对一致性、可用性、写吞吐的具体需求。
在协调节点行为、维护系统状态一致性方面,Lease机制通过有时限的授权来避免“脑裂”等问题,是实现领导者选举和资源互斥的关键。Quorum机制则通过多数派投票原则,为读写操作和共识达成提供了强一致性的数学保障(当W+R > N时)。逻辑时钟,特别是向量时钟,为追踪事件因果关系、检测并发操作和数据冲突提供了有力工具。
Gossip协议作为一种轻量级、去中心化的信息传播方式,在集群成员管理、故障检测和元数据同步等场景中表现出色,尤其适合大规模动态变化的系统。结合默克尔树等技术,可以进一步优化其数据同步效率。
分布式系统的设计本质上是一场复杂的工程权衡。没有万能的“银弹”,主从架构追求强一致性,往往以牺牲部分写性能或增加系统复杂度为代价;而去中心化的多活架构则可能优先保证可用性和分区容忍性,但一致性模型更为宽松(通常是最终一致性),且冲突解决更具挑战。
深刻理解并熟练运用数据分片、副本同步、状态协调以及容错处理这些核心机制,是在性能、可靠性、成本和开发维护复杂度之间找到最佳平衡点,从而构建出卓越分布式系统的关键所在。
很高兴与你相遇!如果你喜欢本文内容,记得关注哦!!!
绯闻女孩不只会八卦:从“验明正身”到“抓内鬼”,Gossip的进阶玩法的更多相关文章
- 网页抓取小工具(IE法)
网页抓取小工具(IE法)—— 吴姐 http://club.excelhome.net/thread-1095707-1-1.html 用IE提取网页资料的好处在于:所见即所得,网页上能看到的信息一般 ...
- 移动端https抓包那些事--进阶篇
上一次和大家介绍了手机端https抓包的初级篇,即在手机未root或者未越狱的情况下如何抓取https流量,但是当时分析应用时会发现,好多应用的https的流量还是无法抓取到,这是为什么呢? 主要原因 ...
- Fiddler抓包原来可以这么玩
Fiddler是一个抓包工具 1 解压压缩包至C\program files (x86) 2 打开C program files (x86) Fiddler Web Debugger V4.6.201 ...
- Fiddler4入门--手机抓包工具安装和使用说明
Fiddler4入门--手机抓包工具安装和使用说明.电脑最好是笔记本连同一个wifi,这样能和手机保持统一局域网内. 很多区块链dapp项目方风控做的很差,利用fiddler抓包分析找一些漏洞,然后利 ...
- 【Oculus Interaction SDK】(五)设置不同的抓握手势
前言 这篇文章是[Oculus Interaction SDK]系列的一部分,如果发现有对不上的对方,可以回去翻看我之前发布的文章,或在评论区留言.如果文章的内容已经不适用于新版本了,也可以直接联系我 ...
- 笔记整理--玩转robots协议
玩转robots协议 -- 其他 -- IT技术博客大学习 -- 共学习 共进步! - Google Chrome (2013/7/14 20:24:07) 玩转robots协议 2013年2月8日北 ...
- 如何优雅地运用 Chrome (Google)
已经在很多工具类文章前言中,提及使用工具的重要性:以至于在写这篇时候,大为窘迫:穷尽了脑海中那些名句箴言,目测都已然在先前文章中被引用.鉴于杳让人心底意识到工具的重要性,并且能践行之,远比介绍如何使用 ...
- re.match re.search re.findall区别
re正则表达式里面,常用的三种方法的区别. re.macth和search匹配得到的是match对象,findall得到的是一个列表. match从字符串开头开始匹配,search返回与正则表达式匹配 ...
- 4天赚4000RMB 引流秘籍 卑鄙无耻之徒
他说:有什么引流秘籍吗? 我说:贴吧.天涯.论坛都不错,只要不明着发广告,每天被动加几十个人轻轻松松的,如果执行力好,几百上千都有可能. 他说:我该怎么操作. 我说:网上找点好的帖子,简单修改一下部分 ...
- 三节课MINI计划第一周
第一部分 产品经理做什么以及需要的能力 (一)用户分析 用户群——行为分析——需求痛点——产品卖点——更多用户群 (二)功能分析 产品调研——产品结构——功能点——关键流程——下一轮产品调研 (三 ...
随机推荐
- 16串口服务器在机房监控console口交换机的应用
16串口服务器在机房监控console口交换机的应用 1.应用场景 目前机房中交换机的接口很多是console 口(RS232串口类型),想要实现网络化登录,便于远程控制管理机房中的交换机.如果机房交 ...
- Transformer模型原理概述
Transformer 是一种基于自注意力机制(Self-Attention)的深度学习模型,最初由 Google 在 2017 年的论文<Attention Is All You Need ...
- vant批量选择删除列表
代码如下 <template> <div class="wrapp"> <button @click="onEdit">{{ ...
- Skill Discovery | DoDont:使用 do + don't 示例视频,引导 agent 学习人类期望的 skill
论文标题:Do's and Don'ts: Learning Desirable Skills with Instruction Videos NeurIPS 2024 poster. arxiv:h ...
- java 学习ing
简介 正式开始重新开始学java 第一个程序一般是hello World 废话不多说开始吧 code public class Welcome1 { public static void main(S ...
- 基于微服务架构,轻量级的ESB平台
ESB企业服务总线是传统中间件技术与XML.Web服务等技术结合的产物.ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素.但相比传统的单体架构的ESB企业服务总线系统,RestClou ...
- [ThingsBoard] 3. 源码解读Actor
一.前言 本文基于 ThingsBoard 4.0.2 编写,对应提交Version set to 4.0.2(01c5ba7d37006e1f8a3492afbb3c67d017ca8dd3). 由 ...
- POLIR-Society-Organization-Psychology-Relationship关系-Feelings感觉: Relationship Emotions : How to Express Feelings in a Relationship
https://www.verywellmind.com/feeling-words-to-help-spouse-2300571 Relationships > Strengthening R ...
- stable diffusion学习笔记
电脑配置:(推荐配置) 显卡:3060i 显存:8G以上 内存:16G以上 stable diffusion安装: 1:python3安装:https://www.python.org/getit/ ...
- 深入指南:在SCSS中高效使用@font-face引入自定义字体
网页设计中90%的视觉信息由文本承载,而字体选择直接影响用户体验.掌握@font-face是前端开发的核心技能之一 一.@font-face基础概念 @font-face是CSS原生的字体引入规则,允 ...