美文网首页
时钟容错同步算法之FTA

时钟容错同步算法之FTA

作者: NewBornCyanide | 来源:发表于2019-07-12 11:02 被阅读0次

相关概念:

节点的时间信息:在本算法中指的是节点的本地全局时间计数器

微节拍:周期性的、用以增加计数器值的事件

时间粒度:连续两个微节拍间的时间区间

全局时间:每个本地时钟选择一个微节拍子集,作为该时钟本地可见的全局时间的节拍,全局时间是抽象的

内同步精度:任意时钟的微节拍的时间戳偏移都不得超过的数

算法目的:发生拜占庭错误时实现分布式容错时钟的再同步(解决集中式主控同步中主控节点失效的问题)

前置条件:时钟总数N>=(3k+1),k是拜占庭时钟的数量

算法流程:

1. 每个节点与其他节点交换信息以获取其他全部节点的全局时间计数器状态,这里需要减去时间信息(前面提到的其他节点的本地可见的全局时间)传输时的时间延迟抖动(系统收发、解释同步消息的时间,包括调度、操作系统、协议栈的消息队列、消息重传策略、介质访问延迟、接收端的中断延迟、调度延迟);

2. 执行收敛函数FTA计算本地全局时间计数器的校正值,如果校正值大于系统规定的精度值,则自身无效,在FTA中,由于拜占庭时钟提供的时钟值必定大于或小于正常值,故它在处理阶段中被剔除,从而屏蔽了它对其他正常时钟的影响

3. 调整本地时间:状态校正、速率校正

状态修正:直接用校正项修改本地时间值

速率修正(建议):用校正项修改本地时钟运行速率,使其在下一个再同步间隔期间加快或减慢,改变微节拍数或调节晶振电压,系统中所有的速率修正项平均值接近0

流程图:

环境搭建:

四台通过局域网连接的计算机。设置组播地址为224.0.0.111,端口为8000,修改所有电脑的网卡名称统一为eno1,对于linux系统,输入命令sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eno1(其中224.0.0.0是网段地址)加入D级多播网络的IP路由,选择一台制造拜占庭错误,其余三台不做改动,四台电脑均设置成不通过互联网校正时间,先每台电脑互相发送一段数据确定彼此间的传输延迟,通过配置文件确定一个时间使所有的程序同时(各自的本地时间)开始第一次组播,之后每台电脑每1分钟(可配置)组播一次(按照本地时钟的频率),组播后启动计数器计算收到的其他节点的组播的时间,并记成收到消息时的本地时间,进行FTA。

程序分为服务端线程与客户端线程。服务端负责发送组播数据,客户端负责监听组播数据,当收到3个组播数据后就执行FTA校正本地时间。

项目地址:https://github.com/carduswork/FTA

相关文章

  • 时钟容错同步算法之FTA

    相关概念: 节点的时间信息:在本算法中指的是节点的本地全局时间计数器 微节拍:周期性的、用以增加计数器值的事件 时...

  • 常见分布式算法

    1.分布式同步算法:逻辑时钟,又称Lamport算法 时间同步不需要绝对的精确时间,如果进程间没有相互作用...

  • 2018-07-20小白学区块链——拜占庭容错

    前文我们谈了算力51%的问题,比特币网络为了解决这个问题,设计者中本聪引用了拜占庭容错算法。在谈拜占庭容错之...

  • Tendermint 共识算法

    介绍 分布式一致性算法一般可以分为两类:拜占庭容错和非拜占庭容错。非拜占庭容错算法如 Paxos, Raft 等在...

  • IJK阅读笔记

    音视频同步有三种方案: 同步音频到视频,同步视频到音频,或者都同步到外部时钟(例如你的电脑时钟) IJKpalye...

  • 【蜗牛黑板报】Soc时钟系统是什么

    一、什么是时钟?SoC为什么需要时钟? (1)时钟是同步工作系统的同步节拍。 (2)SoC内部有很多器件,譬如CP...

  • 串口通信

    串口通信的通信方式: 同步通信方式:带时钟同步信号SPI、IIC通信接口2.异步通信方式:不带时钟同步信号UART...

  • linux 时钟同步

  • 六西格玛管理之20种六西格玛管理工具(详细版上)

    六西格玛管理工具之1— FMEA和FTA分析 故障模式与影响分析(FMEA)和故障树分析(FTA)均是在可靠性工程...

  • 细说区块链共识机制之PBFT

    PBFT意为实用拜占庭容错算法,这个算法是卡斯特罗和利斯科夫在1999年提出来的。解决了原始拜占庭容错算法效率不高...

网友评论

      本文标题:时钟容错同步算法之FTA

      本文链接:https://www.haomeiwen.com/subject/rvqekctx.html