分布式系统-3-同步网络算法

游戏思考04:网络游戏同步算法产生原因和相关介绍:跟随(插值)、预测、延迟补偿,三种算法(未完待续02/07) 文章目录一、网络同步的典型场景二、简单粗暴的数据同步为何行不通?(帧同步的难题)1)网络同步的流程2)网络延迟和抖动的直观解释3)产生卡顿、瞬移的原因分析4)测试网速网速三、网络同步的优化算法(同步算法,目的是缓解网络延迟抖动的问题)0)直接网络同步1)插值算法(跟随算法)2)预测算法3)延迟补偿算法四、「帧」的切确含义(帧同步的内容)1)状态同步和指令同步2)延迟执行3)锁帧算法4)严格帧同步、乐观帧同步5)帧同步的应用场景和注意事项五、参考资料 一、网络同步的典型场景 赛车游戏、MMORPG游戏、王者荣 阅读详情
引言

上一篇文章讲了同步网络中的leader选举算法。考虑一个问题,当网络中有消息需要广播时,如果在网络中以最快的速度完成广播?或者如何计算图的直径?接下来就会一步一步解决这些问题

将在这篇文章中讲述分布式同步网络中广度优先搜索、最短路径和最小生成数算法。

广度优先搜索

利用广度优先搜索来构造方便用于广播通信的树,BFS树最小化最大通信时间

SynchBFS算法
  • 前提假设

    1. 假设进程有uid
    2. 不知道网络大小和直径
    3. 给定初始root i0i_0i0​
  • 进程维护状态

    1. parentparentparent:记录进程的父节点是谁
    2. markedmarkedmarked:记录是否被标记
  • 算法流程

    • 选择一个节点作为初始节点,定为i0i_0i0​,设置为已标记,i0i_0i0​发送一条search消息到节点iii的out−nbrsout-nbrsout−nbrs
    • 对于任意一个节点,如果节点还未被标记,并且收到search消息,则它将自己标记,并且将发送search消息的节点设置为它的parent,然后发送search消息到它的out−nbrsout-nbrsout−nbrs
  • 算法图解

    • 初始化选择4(可以随意选择)为root节点i0i_0i0​

      在这里插入图片描述

    • 第一轮search消息,4只有一个out−nbrsout-nbrsout−nbrs,所以只有一条消息,5被标记,其parent节点为4,红色箭头代表search消息

      在这里插入图片描述

    • 第二轮search消息,5有两个out−nbrsout-nbrsout−nbrs

      在这里插入图片描述

    • 第三轮,因为是分布式系统,所以进程2和进程6是同时进行的

      在这里插入图片描述

  • 复杂度分析

    • 时间复杂度:最多为daim轮,为图的直径,实际上可能更小,是i0i_0i0​到它最远的节点
    • 通信复杂度:通信复杂度:图的边数,∣E∣|E|∣E∣
  • 如何确定child节点:双向网络中非常容易,child发送一条消息给parent。在单向网络中,需要间接节点将消息传递给它的parent节点,因此可以用SynchBFS算法实现这个过程,如果每一轮中一条链路只能发送一条消息,那这些消息可以合并成一条消息

    • 复杂度分析
      • 双向通信网络
        1. 时间复杂度:O(diam)O(diam)O(diam)
        2. 通信复杂度:O(∣E∣)O(|E|)O(∣E∣),因为child可以直接发送消息给parent,因此总消息数为2⋅∣E∣2\cdot|E|2⋅∣E∣
      • 单向通信网络
        1. 时间复杂度:O(diam)O(diam)O(diam),因为额外的消息可以并行发送
        2. 通信复杂度:O(diam⋅∣E∣)O(diam\cdot|E|)O(diam⋅∣E∣),因为需要发送额外消息,因此每一轮中每条边都可能会发送消息,总共有diamdiamdiam轮,所以总消息最多为diam⋅∣E∣diam\cdot|E|diam⋅∣E∣
  • SynchBFS算法终止

    • 核心思想:当消息传递到叶子节点时,叶子节点标记自己后,发送消息让parent知道其已经完成,当parent收到所有其子节点的确认完成消息后,parent发送消息给它的parent,循环这个过程直到确认消息到达root节点i0i_0i0​
    • 复杂度分析
      • 双向通信网络
        1. 时间复杂度:O(diam)O(diam)O(diam),因为叶子节点返回确认完成消息是并行执行并且可以直接发送给parent,因此,时间最多为2⋅diam2\cdot diam2⋅diam
        2. 通信复杂度:O(∣E∣)O(|E|)O(∣E∣)
      • 单向通信网络
        1. 时间复杂度:O(diam2)O(diam^2)O(diam2),因为在发送确认消息时,每一级parent都是执行一次SynchBFS算法,每一层级的节点不能并行执行,因为不能确定,该级的parent是否收到了所有child的确认消息,因child是通过间接的节点传递消息,因此可能绕了一个diam的路径,最多有diam个层级,因此时间复杂度为O(diam2)O(diam^2)O(diam2)
        2. 通信复杂度:O(diam2⋅∣E∣)O(diam^2\cdot|E|)O(diam2⋅∣E∣),和确认child节点类似,虽然每个层级的节点确认完成消息不能并行执行,但是不同节点的确认可以并行执行,因此每一轮最多有|E|消息,每一层级的确认消息最多需要diamdiamdiam轮,因此每一层级的确认需要消息最多为diam⋅∣E∣diam\cdot|E|diam⋅∣E∣,最多需要diamdiamdiam轮才能完成到rootrootroot的确认,因此通信复杂度为O(diam2⋅∣E∣)O(diam^2\cdot|E|)O(diam2⋅∣E∣)
  • 算法应用

    • 广播:一条消息的广播可以建立在BFS tree上,利用SynchBFS构造的一颗每一个非叶子节点都包含其子节点的BFS树,因此广播一条消息只需从root一直向前传播,时间复杂度为O(diam)O(diam)O(diam),通信复杂度为O(n)O(n)O(n)
    • 全局计算:比如网络中所有节点求和,利用BFS tree从叶子节点开始,发送一个值给parent节点,非叶子节点等到汇集了所有子节点的输入,sum后发送给它的parent节点,直到root节点。如果在双向网络中,时间复杂度为O(diam)O(diam)O(diam),通信复杂度为O(n)O(n)O(n)
    • leader选举:所有节点初始并行发送消息进行选举,利用最大uid构造树,在双向网络中,时间复杂度为O(diam)O(diam)O(diam),通信复杂度为O(diam⋅∣E∣)O(diam\cdot|E|)O(diam⋅∣E∣)
    • 计算图的直径(FloodMax需要用到):所有节点并行发送消息执行SynchBFS算法,每个进程利用max−distimax-dist_imax−disti​来构建树,得每个节点得到一个最大值,然后在第二轮中,整个网络利用SynchBFS求出最大值。如果是双向网络,时间复杂度O(n)O(n)O(n),通信复杂度O(diam⋅∣E∣)O(diam\cdot|E|)O(diam⋅∣E∣)
最短路径

SynchBFS解决了未带权边的搜索,但是实际环境中,有很多场景并不是这样简单的,通常节点间通信都是有开销的,这个开销我们可以抽象为权重,比如通信的延迟,或者通信的带宽等,接下来将介绍带权网络的算法

BellmanFord算法
  • 前提假设

    1. 有向网络
    2. 有向边关联了一个权重
    3. 每个节点知道连接边的权重
    4. 每个节点知道网络的大小
  • 进程维护状态

    1. distdistdist:从i0i_0i0​到该节点的最短距离,i0i_0i0​初始化为0, 其他初始化为∞\infin∞
    2. parentparentparent:最短路径的父节点,初始化为undefineundefineundefine
    3. roundroundround:轮数,当roundroundround为n-1时结束
  • 算法描述

    • 消息生成算法

      if round <= n-1 then
      	send (dist, uid) to out-nbrs
      
    • 进程状态转换算法,每一轮收到消息M的(dist,uid)(dist,uid)(dist,uid),收到M集合U

       if round <= n-1 then 
      	min := min(U.dist)
      	if min+weight < dist then 
      		dist := min.dist+weight
      		parent := min.uid 
      	round := round+1;
      
  • 算法图解

    • 初始状态

      在这里插入图片描述

    • 第一轮,红色的线表示最短路径

      在这里插入图片描述

    • 第二轮

      在这里插入图片描述

    • 第三轮,可以看到节点1,最短路径已经有更小的值,其父节点也换成了2,直到n−1n-1n−1也就是round=5时,算法结束

      在这里插入图片描述

  • 复杂度分析

    • 时间复杂度为n−1n-1n−1
    • 通信复杂度(n−1)⋅∣E∣(n-1)\cdot|E|(n−1)⋅∣E∣
最小生成树
SynchGHS算法
  • 前提假设

    1. 带权无向图
    2. 节点有uiduiduid
    3. 图大小已知
  • 进程维护状态

    1. leader:记录component(一个子树结构)的leader的uiduiduid,
    2. k:level,每个level至少有2k2^k2k个节点
  • MWOE(最小权重出边):指连接两个component的最小权重的边,一个简单的图说明,橙色和蓝色分别是两个不同的component,两条红色的边都是两个component的连接边,权重11的边就是要找的MWOE
    在这里插入图片描述

  • 算法原理

    • 初始时,所有单个节点是一个component,每个节点的leader即是自己,每个component找出最小权重的出边MWOE,当一个component有多个节点时,会采用广播让各个节点找到MWOE,然后发送测试消息,看另一端的节点是否属于同一component,然后汇集MWOE到leader,leader得到整个component的MWOE。比如1只有一个边12,而3和2正好有同一条最小边0,所有这些操作都是并行执行的。

      在这里插入图片描述

    • 合并,leader通知component的MWOE的节点进行连接操作,节点将边加入树并通知端点节点进行同样的操作,然后节点uid大的端点节点利用树广播leader信息,宣布自己是leader,当有多个component合并成一个时,因为多个节点会广播leader信息,因此最终,整个component都会得到最大uid的leader信息,新component拥有了新的标识.(这里我的理解是可以直接使用当前component的Leader,但是书中描述的是用MWOE的端点uid大的作为新的leader)

    在这里插入图片描述

    • 算法终止,当所有的节点都联成一个图后,leader通知各节点寻找MWOE时,将没有MWOE了,因此leader通知各节点算法结束

      在这里插入图片描述

  • 复杂度分析

    • 时间复杂度:因为每一级合并至少有两个component合并,因此最多需要log⁡(n)\log(n)log(n)级可以完成MST构建,每一级需要的时间为O(n)O(n)O(n),因此时间复杂度为O(n⋅log⁡(n))O(n\cdot\log(n))O(n⋅log(n))
    • 通信复杂度:每一级,leader需要发送消息通知树的各个节点寻找MWOE,图中共有n个节点,找到之后还要汇集结果,因此消息数为2⋅n2\cdot n2⋅n,因此通信复杂度为O(n)O(n)O(n),各个节点探测MWOE时,可能每条边都要探测,因此还需要额外的∣E∣|E|∣E∣通信消息,因此整体的通信复杂度为O((n+∣E∣)log⁡(n))O((n + |E|)\log(n))O((n+∣E∣)log(n))
  • 优化:在测试边时,如果是一条内部边也就是端点都是同一component,那么就标记为"rejected",当探测时,如果一条边是rejected,那就不需要发送探测消息,因此探测通信总共只需要执行∣E∣|E|∣E∣次,因此通信复杂度为O(nlog⁡(n)+∣E∣)O(n\log(n) + |E|)O(nlog(n)+∣E∣)

最大独立集(MIS)
  • 定义:假设有无向图G=(V,E)G=(V,E)G=(V,E),其中I⊆VI \subseteq VI⊆V是图的独立集,当且仅当i,j∈I(i,j)∉Ei,j \in I (i,j) \notin Ei,j∈I(i,j)∈/​E,通俗的讲就是最大独立集中的任意两个节点之间没有边相连,因此MIS不是唯一的。III是最大独立集当任意I‘I^`I‘包含III且I‘I^`I‘不是独立集
  • 前提假设
    1. 知道图的大小nnn
    2. 不假设节点有uiduiduid
  • 算法核心思想:每次选择独立集I‘I^`I‘,然后将I‘I^`I‘执行操作I:=I⋃I‘I := I\bigcup I^`I:=I⋃I‘,然后从图GGG中删除I‘I^`I‘的邻居,直到GGG为空,因此问题的关键是求I‘I^`I‘
LubyMIS算法

利用随机化算法求I′I^{\prime}I′

  • 算法思想:每个节点iii随机选择一个随机数valival_ivali​(范围1≤vali≤4n1 \le val_i \le 4^n1≤vali​≤4n),然后相邻节点之间发送消息valival_ivali​的最大为winnerwinnerwinner,winnerwinnerwinner会通知它的相邻节点为loserloserloser。loserloserloser会被从图GGG中移除

  • 进程维护状态

    1. roundroundround:取值{1,2,3},初始值1
    2. valvalval:取值{1≤val≤4n}\{1 \le val \le 4^n\}{1≤val≤4n},初始任意值
    3. awakeawakeawake:boolean值,初始值true
    4. rem−nbrsrem-nbrsrem−nbrs:剩余没有选择的邻接节点,初始化为图的所有邻接节点
    5. statusstatusstatus:{unknown,winner,loser}\{unknown, winner, loser\}{unknown,winner,loser},初始值unknownunknownunknown
  • 算法描述

    • 随机数生成

       if awake and round = 1 then val := random
      
    • 消息生成算法

      if awake then
      case
      	round = 1:
      		send val to all nodes in rem-nbrs
      	round = 2:
      		if status = winner then
      			send winner to all nodes in rem-nbrs
      	round = 3:
      		if status = loser then
      			send winner to all nodes in rem-nbrs
      endcase
      
    • 状态转换算法

      if awake then
      case
      	round = 1:
      		if val > v in all incoming values v then status := winner
      	round = 2:
      		if a winner message arrives then status := loser
      	round = 3:
      		if status in {winner,loser} then awake:=false
      			rem-nbrs := rem-nbrs - {j: a loser message from j}
      endcase
      round := (round+1) mod 3
      
  • 算法图解

    • 初始状态,注意LubyMIS算法并不需要uiduiduid,图中的字母编号仅仅是为了方便图的说明,不是uiduiduid,初始时所有节点awakeawakeawake都是true,状态都是unknownunknownunknown,valvalval任意值,统一初始化为0

    在这里插入图片描述

    • 第一阶段结果示意图,每个阶段有三轮,这里只展示结果,橙色节点代表winnerwinnerwinner节点,蓝色节点代表loserloserloser节点,注意观察,不管蓝色节点还是橙色节点awakeawakeawake都是false,也就是它们已经结束不会再参与算法运行,可以看到已经只有a、k节点会进入下一阶段

      在这里插入图片描述

    • 第二阶段结果示意图,经过第二轮,重新生成随机数,所有节点awakeawakeawake都是false,全部节点都已经运行结束,因此该图的最大独立集为(a,c,e,h,k)(a,c,e,h,k)(a,c,e,h,k)

      在这里插入图片描述

  • 随机化算法作用:主要作用是打破对称性,是一个非常常用的小技巧,比如在解决活锁,在raft协议选举失败时为了避免所有节点同时发起选举,失败后都会随机等待一段时间后发起选举

总结

本文主要讲了分布式同步网络中的BFS、最短路径、MST问题,接下来的文章将简单介绍分布式同步网络另一个关键性问题,一致性问题

【分布式系统】Ch 6 同步 Synchronization (时钟同步、互斥、选举) 阅读详情

相关推荐

Unity3d 网络同步算法

竞技游戏的同步算法需要达到非常高的准确度,对于一定范围的网络延迟需要保持游戏的准确性。 对于非竞技性游戏而言,也需要有一定的准确度,但并不一定需要本算法,但可以以此算法进行借鉴性研究,因为网络同步的原理是相同的

网络游戏知识——【同步算法】

同步是网络游戏的一大难题,不同类型的游戏对同步有着不同程度的要求,如何解决好同步产生的问题?同步方案(帧同步,状态同步,状态帧同步)的区别和联系?网络传输协议(TCP,UDP,可靠UDP)的区别和联系?下面就让我们一起来学习下吧。

qq_53045580的博客 1941

Distributed-Minimum-Spanning-Tree:C++中的分布式最小生成树

分布式图算法 这是一个用 C++ 实现分布式最小生成树的分布式程序。 也称为 GHS 算法。 Gallager、Humblet 和 Spira 的 GHS 算法是分布式计算理论中最著名的算法之一。 分布式最小生成树 (MST) 问题涉及在节点通过消息传递进行通信的网络中通过分布式算法构建最小生成树。 相反,如果有多个进程,我将使用多个线程来模拟真实世界的场景。 如果有人想使用此代码,您可以自由使用。 如果你有任何疑问,那么你可以给我发电子邮件。 我很乐意提供帮助:)

网络同步(帧同步和状态同步)

网络同步有3种:帧同步、状态同步、实时广播同步,开发过程中可以混合使用。网络同步的目标就是时刻保证多台机器的游戏表现完全一致。

不负青春 4697

游戏经济数值模型的搭建过程——以标准卡牌游戏为例

一、总体规划 1.玩家分类 首先我们按照下表对玩家进行分类 付费能力即为充值额度;充值行为比如购买月卡/购买钻石;消费行为比如用钻石抽卡 在这里我们假设玩家是理性的,即玩家会以追求更高的性价比为目标进行充值与消费(即小R会优先买首冲+月卡,而不是买一个无用的无属性皮肤) 不同类型玩家之间的差异,实际上就主要由这些行为的差异而决定。 注:早期游戏制作的时候,活跃程度也是区分玩家类型的一个重要依据。不过目前现在游戏中有各种手段抹平了不同活跃玩家的差异(体力限制,活跃时间长的收益递减)..

dudu3332的博客 4229

【ESP32】ESP32连接JY61P并通过WIFI发送给电脑

ESP32S连接JY61P并通过WIFI把姿态数据发送给电脑1.采用Arduino IDE编译器;需要安装ESP32的开发板管理器;2.电脑接受数据是基于python的;

Doudou_Nai的博客 1133

4. 分布式系统中的同步

分布式算法的基本属性 一般来说,去中心化的算法具有以下特性。 相关信息分布在多台计算机上。 流程只根据当地信息做出决定。 不应该有一个关键点,其失败会导致算法的崩溃。 没有共同的时钟或其他准确的全球时间来源。 前三点都指出,在一个地方收集所有的决策信息是不允许的。 在没有集中化的情况下确保同步,需要采取不同于传统操作系统的方法。 最后一点也非常重要--在分布式系统中,要及时达成协议一点也不容易。 ...

JiangTao2333的博客 2338

AD936x Evaluation Software 详细配置

作者:ShownSun 工作室:时沿科技 文章目录AD936x Evaluation Software详细配置1 系统概述2 AD9361 Wireless Transceiver Evaluation Setup2.1 标签描述2.2 用户参数2.3详细配置3 AD936x RF Wizard3.1 标签描述3.2 用户参数3.3 详细配置4 AD936x Digital Filter Wizard4.1 标签描述4.1.1 时钟配置4.1.2 滤波器配置4.1.3 接收滤波器配置4.1.4 发射滤..

ShownSun博客 5195

游戏网络同步算法

大体的思路是利用玩家角色的SOI(Spheres of Influence,和AOI概念差不多),两个玩家如果相距很远互不影响,就采用本地时钟向前推进(非Lockstep方式同步),如果互相靠近并可能影响到对方就变回到严格的LockStep同步,这里并不保证他们的帧序列是完全一致的。有可能socket发出去的一个包给客户端,客户端会接收到2个不同的帧,合并在一起,有可能因为网络缘故去把帧接收慢了,表现上有误,那都是客户端的优化了。作用于网络,防止过多的数据注入网络,避免网络过载拥塞控制。

CherryBlossom_的博客 592

数字后端:版图基础seal ring

seal ring结构是为了防止划片或封装对芯片造成破坏,从而在芯片与划片道(scribe line)之间添加的一圈保护环

m0_61544122的博客 1万+

SAP SD模块定价过程后台配置简介

只有手工输入定价时(例如,在定价中的定价浏览屏幕中),或者只有从外部处理转移这些定价时(例如,成本核算),才将这些定价包括在确定(价格确定、输出确定,批次确定)之中。定价过程的定义和分配是SD模块中最核心的配置,包含了条件表、条件类型、存取顺序、发票类型、客户定价过程等,确定了销售订单已什么价格销售、税率、附加折扣等多个条件行程有一个定价过程。12、小计:记录该条件类型在VBAP表中是否存储,以及其后续用途,如记入信贷,占用信贷额度,记入成本等,如果需要金额暂用信贷额度的话,在小计这里选择A即可。

我小时候很黑的博客 3783

保证事务ACID特性

1)2pc 二阶段提交 第一阶段:提交事务请求:事务没有真正提交,只是请求过去执行。 第二阶段:真正提交,或者中断事务。 中断事务:1、发回滚请求 2、参与者节点回滚 3、参与者反馈结果给协调者 4、协调者接受参与者ack(完整无误后)后回滚 问题:存在同步阻塞(参与者节点在提交处于同步阻塞状态,无法做其他操作,卡)、单点问题(协调者节点出故障,会破坏事务一致性)、脑裂导致数据不一致(服务宕机或阻塞时)等问题 2)3pc 三阶段提交 将提交事务请求分为了两步走,三个阶段分别是CanCommit、PreCom

cm4002的博客 303

12、认知地图的建模与学习

本博客系统介绍了认知地图的定义、背景及其在机器智能领域的应用,重点探讨了模糊认知地图(FCMs)的建模方法与优势。文章还对比分析了几种主流的认知地图模型(如Axelrod模型、Kosko模型等),并讨论了模型的稳定性条件及实际应用前景。通过智能制造和医疗诊断的具体案例,展示了认知地图在复杂因果推理中的强大能力,并提出了模型优化方向与未来研究展望。

plant的博客 210

漫画:如何给女朋友解释什么是 3PC ?

作者 | 漫话编程本文经授权转载自漫话编程(ID:mhcoding)一顿愉快的小火锅之后,悠哉悠哉的回家了,于是只能开始新一轮的家庭科普了。分布式一致性幸好在《漫话:如何给女朋友解释什么...

程序人生的博客 1515

利用ADS建立MIPI D-PHY链路仿真流程

由于MIPI D-PHY的速率并不算高,因此,PCB设计难度通常不大,主要做好差分线的等长、阻抗的连续性、端口处的阻抗优化以及控制好走线的长度,拿到满意的结果还是较为轻松的,最后,建立流程化的仿真工程文件,可以保存为模板,方便日后的设计复用,非常方便。

一只豌豆象的博客 3571

Python爬虫教程:微博热点话题抓取与社交媒体分析

微博是中国最大的社交媒体平台之一,拥有海量的用户和丰富的讨论话题。通过爬取微博的热门话题和讨论内容,我们可以深入分析用户的兴趣、舆论走势、社会情绪等。通过爬取微博的热点话题和讨论内容,我们可以获得关于当前热门话题的宝贵数据,并基于这些数据进行多种社交媒体分析。本文将通过Python爬虫技术,详细介绍如何抓取微博上的热门话题、话题讨论内容,并进行社交媒体分析。希望本文为你提供了一个全面的微博数据抓取与分析的指南,帮助你在社交媒体数据分析的道路上迈出坚实的第一步。微博上的一些页面内容是静态的,可以直接通过。

2201_76125261的博客 590

分布式集群系统-一致性协议、基本理论和算法

分布式系统存在的问题 通信异常 网络分区 节点故障 三态 分布式系统特有的三态概念:成功、失败、超时。 网络异常的情况下出现***超时***: 1、请求没有被成功发送到接收方; 2、接收方处理成功后,响应反馈给发送方过程中,发生了消息丢失现象。 一致性有哪几种? 弱一致性 单调读一致性 因果一致性 最终一致性 分布式理论 1、CAP理论(一致性、可用性、分区容错性) 所有副本数据一致(即强一致性) 系统一直可用 节点故障或网络分区故障时,仍能够满足一致性和可用性 一般情况不会考虑舍弃P,而是考虑

越自律越自由 995

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

2PC与3PC的区别

也就是说,除了引入超时机制之外,3PC把2PC的准备阶段再次一分为二,这样三阶段提交就有。

txy1813932938的博客 1270

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

MCP哨兵机制:分布式系统数据一致性解决方案

分布式系统中的数据一致性是确保跨节点操作准确性的关键技术挑战,涉及两阶段提交(2PC)、Paxos等核心算法。现代系统通过智能监控和仲裁机制在可用性与一致性间取得平衡,MCP哨兵机制创新性地采用动态探针网络和分级一致性策略,显著降低金融支付等关键业务的数据差错风险。该技术结合Kubernetes部署与eBPF无侵入监控,在千万级交易场景中实现毫秒级延迟检测,为电商、金融等高并发系统提供可靠的一致性保障。

weixin_34392435的博客 359

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

分布式一致性原理之(分布式架构以及Paxps协议)

分布式系统是一个硬件或软件组成分布式在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统、

qq_24872115的博客 502

分布式系统的时间同步:NTP与Paxos算法

1.背景介绍 时间同步是分布式系统中非常重要的一个环节,因为在分布式系统中,各个节点需要协同工作,但是由于网络延迟等因素,各个节点之间的时钟可能会偏差。因此,需要有一个高效、准确的时间同步算法来保证分布式系统的正常运行。 在本文中,我们将介绍两种常见的时间同步算法:NTP(Network Time Protocol)和Paxos算法。NTP是一种基于客户端-服务器模型的时间同步协议,它通过与互...

AI天才研究院 2477

分布式系统时钟同步

本文是《分布式系统原理与范型》读书笔记 集中式系统中,时间是明确的。 1、Cristian算法 它适用于只有一支机器上有WWV 接收器,其他所有机器都要与那台机器同步的系统。 拥有WWV接受器的机器叫做时间服务器。 每台机器义不大于x/2p秒的周期定期向时间服务器发送消息询问当前时间,时间服务器收到消息后就尽快发送含有当前时间的Cutc的消息应答。 存在两个问题: a、时间不能倒退,

huangwei19892008的专栏 1万+

分布式系统中节点之间的同步形成区块链

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 分布式系统中节点之间的同步形成区块链 分布式系统由Tanenbaum定义,“分布式系统是一组独立的计算机,在”分布式系统 — 原理和范例“中作为用户的单一,连贯的系统出现”。 区块链通过构建全球分布式系统,尝试实现分散的新数据存储和组织结构。 首先,定位到分布式系统的原因主要是可扩展性,位置和可用性。区块链也...

weixin_44172023的博客 2973

分布式系统----时钟同步

https://www.cnblogs.com/aspnetdream/p/Java.html 一、问题产生 时间是一个绝对量,而实体计算机的时间是相对量 1、 物理天地本身导致的时间不一致,地球自转、闰年、闰秒 2、 现实的不能绝对一致性,A机器时间同步至B机器,网络传输时间是不确定性的,AB存在绝对不一致性 如上图,computer A在2144 Tick点执行分布式任务 ...

北极洲的博客 3076

分布式系统阅读笔记(二十二)-----时钟和时钟同步

时钟的基本概念 时钟 时钟在一般意义上指的是一个计算机的物理时间,每个计算机都会包括他们自己的物理时钟,不同的计算机的物理可能会不同。 时钟漂移 经过在同个地方的计算机,他们的物理也有可能会不一样,如果他们从刚刚开始相同的时间计时开始,过了1过月,1年也可能会有快又慢,这在专业名词上讲叫做时间漂移。本质的原因是每秒的时间偏移,经过日记月累之后,就会有可能达到1秒钟的差距,解决的办法很简单,

走在前往架构师的路上 1万+

分布式系统架构设计原理与实战:非同步与同步调用

1.背景介绍 分布式系统是现代软件架构中不可或缺的一部分,它允许多个计算节点在网络中协同工作,共同完成大型复杂任务。在分布式系统中,非同步与同步调用是两种重要的通信方式,它们各自具有不同的优缺点和适用场景。本文将深入探讨分布式系统架构设计原理与实战,揭示非同步与同步调用的核心算法原理、最佳实践和实际应用场景。 1. 背景介绍 分布式系统的核心特点是分散性、并行性和自主性。这些特点使得分布式系...

AI天才研究院 1055
上一篇: 分布式系统-2-同步网络Leader选举算法
下一篇: 分布式系统-4-同步网络一致性算法
VioletCherry
博客等级 码龄14年 21粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值