反熵(Anti-entropy)是指每个节点周期性地和邻居节点交换保存的数据,然后对比本地数据和邻居节点所保存的数据,检查是否有缺失或者过期的数据,然后更新本地节点的数据为最新的数据。

超级账本的反熵实现比较简单,每个节点定期(10s)检查本地账本的区块序列号和其他节点账本的序列号。若发现本 地的序列号比网络中其他节点账本的序列号小就在网络中广播一个GossipMessage_StateRequest消息,请求缺失序列号的区块。收到请 求的节点如果有对应序列号的区块,会在网络中广播一个GossipMessage_StateResponse消息,使其包含本地账本中请求序列号的区 块。这种方式是通过直接消息(directMessage)渠道进行的,节点接收到消息后会缓存起来,放到一个PayloadsBuffer的数据结构里 保存起来。

由于TCP/IP网络传输的特点,数据可能不是按序到达的,PayloadsBuffer会在内部保存一个索引, 记录等待提交账本的下一个区块的序列号next。如果接收到的区块序列号小于next,说明是过期的区块,直接丢弃。如果序列号大于 next,PayloadsBuffer把收到的数据放到序列号对应的缓冲区数组里。只要收到的数据和已提交区块序列号连续了,就会把连续的数据区块提交 到账本里,然后删除缓冲区中已提交的数据区块,同时更新索引next。

另外一个更新状态数据的过程是在主节点从排序服务中获取到区块以后,会创建一个类型为 GossipMessage_DataMsg的数据消息广播给其他节点,其他节点接收到区块后同样也会和PayloadsBuffer中的next进行比 较,进行同样的处理。和直接消息方式不同的地方是,从排序服务获取到的GossipMessage_DataMsg消息只包含一个区块,直接消息里可能会 包含多个缺失的区块。

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1076

'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })(); '); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();

4.6 基于反熵的状态同步相关推荐

  1. 网络同步在游戏历史中的发展变化(四)—— 状态同步的发展历程与基本原理(下)...

    前言: 网络同步属于游戏开发中比较重要且复杂的一部分,但是由于网上的资料内容参差不齐,很多人直接拿别人的结论写文章,导致很多人对这一块的很多概念和理解都是错误的.本文参考了大量的相关论文和资料(花了半 ...

  2. 帧同步与状态同步入门

    帧同步和状态同步是游戏客户端和服务器通信的两种方式: 适合帧同步的情况: 1,网络波动较大,比如移动端网络. 2,追求即是反馈,例如FPS.MOBA,SPT(这是啥游戏?) 3,控制大量单位,RTS( ...

  3. GOSSIP PROTOCOL(又被称为反熵Anti-Entropy, 一种弱一致性, 同步信息交换通信的协议)...

    GOSSIP PROTOCOL(又被称为反熵"Anti-Entropy", 一种弱一致性, 同步信息交换通信的协议) 1.它是一种最终一致性算法 2.它是弱一致性的 1.https ...

  4. 复盘王者荣耀手游开发全过程,Unity引擎使用帧同步放弃状态同步

    http://king.shandian.biz/88.html 如今已经大获市场成功的<王者荣耀>一直是业内各方关注的对象,而我们也知道这款产品在成为国民级游戏之前,也遇到过一段鲜有人知 ...

  5. 60秒计时器的仿真电路_基于伏秒平衡的同步整流方案探讨

    为了提高电源的效率和功率密度,尤其是低输出电压的应用场合,同步整流是不可或缺的. 图1-1 反激输出二极管损耗 比如上图的反激电源如果输出二极管 Vf=0.7V,输出电压 Vout=3V 则效率不会高 ...

  6. 多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | 帧同步和状态同步

    今天继续开新坑,尽管过了很多 Unix 套接字编程的坑,但是实际还是有很多不同场景和性能的需求,以及最服务器架构的内容也就接触过 preforking 和 master 带 worker 而已. 所以 ...

  7. 【网络同步】浅析帧同步和状态同步

    前言 谈到网络游戏,不可避免要谈到现有两种比较常见的网游同步技术:帧同步和状态同步 说到这两个名词,大家夸夸奇谈,都能讲上些许自己的见解,我反正啥也不懂 这篇文章就打算着重学习一下这两种技术的基础和原 ...

  8. 状态同步和帧同步的优缺点

    很多人都在问关于状态同步和帧同步的优缺点,我试着总结了几点,希望能够为提问者提供一些思路和建议.有更好的观点欢迎指点. 状态同步 - 优点 1.它的安全性非常高,外挂基本上没有什么能力从中收益. 2. ...

  9. 006基于近似熵、递归量化分析和卷积神经网络的癫痫发作自动检测-2019

    Automatic Detection of Epileptic Seizure Based on Approximate Entropy, Recurrence Quantification Ana ...

最新文章

  1. 8.1 A Bayesian Methodology for Systemic Risk Assessment in Financial Networks(3)
  2. RandomForest:随机森林
  3. 从零开始学android开发-IDE空间不够报错
  4. MySQL默认安装目录
  5. 看风水用什么罗盘最好_兰花用什么花盆栽植最好?
  6. 【转】C#打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件)
  7. spring-test dao空指针异常_014、Java异常机制
  8. 各种系统程序更新链接
  9. Linux(1)-CentOS7下解决ifconfig command not found
  10. 22解析函数的级数表示(一)
  11. Python学习(5)——内置函数
  12. 概率算法(算法分析与设计)
  13. 在虚拟机上安装使用LoadRunner教程
  14. Windows更改鼠标滚轮方向
  15. 非谓语动词作后置定语
  16. 第一节 细胞是生命活动的基本单位
  17. html 图片加载 占位,css实现图片未加载完成时占位显示
  18. antV报错ResizeObserver loop limit exceeded
  19. 2018.08.21 bzoj4668: 冷战(并查集+启发式合并)
  20. sFlow - 简介

热门文章

  1. 全数字锁相环基本原理讲解
  2. 实现一个简单的登录页面
  3. Android Studio底部导航
  4. 【感想】应试教育的死穴
  5. 从事人工智能行业,学什么专业比较好,需要学哪些基础知识
  6. 几款好用的矢量图库网站
  7. Codeforces 844A
  8. 兄dei,帮我开一下门吧~
  9. 【程序源代码】见缝插针游戏
  10. 一个服务器启动两个mysql实例