【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

区块链的同步及其性能优化方法

  • 2019-11-18
  • 本文字数:2231 字

    阅读完需:约 7 分钟

区块链的同步及其性能优化方法

同步,是区块链中非常重要的流程,从功能上分为“交易同步”和“状态同步”。


交易同步在交易提交时执行,优先保证交易能发往所有的节点,被打包处理。


状态同步发生在某个节点发现自己区块高度落后于全网时,通过状态同步快速追回到全网最高的高度,这样作为共识节点可以参与到最新的共识过程中,而非共识节点能获取到最新的区块数据,以进行存储和验证。

交易同步

交易同步,是让区块链上的交易尽可能到达所有节点,为共识中将交易打包成区块提供基础。



一笔交易(tx1),从客户端上发往某个节点,节点在接收到交易后,会将交易放入自身的交易池(Tx Pool)中供共识去打包。与此同时,节点会将交易广播给其它的节点,其它节点收到交易后,也会将交易放到自身的交易池中。


交易在发送的过程中,会有丢失的情况,为了能让交易尽可能到达所有节点,收到广播交易的节点,会根据自身网络拓扑和网络流量策略,选择一到多个相邻节点,进行接力广播。


交易广播策略


如果每个节点都没有限制的转发/广播收到的交易,带宽将被占满,出现交易广播雪崩的问题。为了避免交易广播的雪崩,FISCO BCOS 设计了较为精巧的交易广播策略,在尽可能保证交易可达性的前提下,尽量减少重复的交易广播。


  • 对于 SDK 来的交易,广播给所有的节点

  • 对于其它节点广播来的交易,随机选择 25%的节点再次广播

  • 一条交易在一个节点上,只广播一次,当收到了重复的交易,不会进行二次广播


通过上述策略,能够尽量让交易到达所有的节点,交易会尽快被打包、共识、确认,让交易能够更快得到执行的结果。


广播策略已经在复杂网络里尽量追求了网络最终到达率,但也会有极小的概率,出现某交易在一定时间窗内无法到达某节点的情况。当交易未到达某个节点,只会使得交易被确认的时间变长,不会影响交易的正确性,也不会漏处理交易,因为有广播机制,网络里还有更多的节点有机会继续处理这个交易。

区块同步

区块同步,能让区块链节点的数据状态保持在最新。


区块链状态的新旧,最重要的标识之一就是区块高度,而区块里包含了链上的历史交易,若一个节点的块高和全网最高块高对齐,则此节点有机会回溯历史交易,以获得区块链的最新状态,只有拥有最新状态的节点,才能参与到共识中去,进行下一个新区块的共识。



当一个全新的节点加入到区块链上,或一个已经断网的节点恢复了网络,此节点的区块高度落后于其它节点,其状态不是最新的。此时就需要进行区块同步。如上图,需要区块同步的节点(Node 1),会主动向其它节点请求下载区块。整个下载过程会将网络请求负载分散到多个节点上。


区块同步与下载队列


区块链节点在运行时,会定时向其它节点广播自身的最高块高。节点收到其它节点广播过来的块高后,会和自身的块高进行比较,若自身的块高落后于此块高,就会启动区块下载流程。


区块的下载通过“请求/响应”的方式完成,进入下载流程的节点,会随机挑选满足要求的节点,发送需要下载的区块高度区间。收到下载请求的节点,会根据请求的内容,回应相应的区块。



收到回应区块的节点,在本地维护一个下载队列,用来对下载下来的区块进行缓冲和排序。


下载队列是一个以块高为顺序的优先队列。下载下来的新区块,会不断插入到下载队列中,按高度排序。


排序好的区块,会依次被节点执行和验证。验证通过后,更新本地的数据状态,让块高增加,直至更新到最新块,块高达到最高。

性能优化

对同步的性能优化,能有效提升系统效率。FISCO BCOS 在这方面做了很多,下面选取了一些关键的优化点。


编码缓存


在交易广播中,需要将交易编码成二进制数据发送给其它节点,其它节点在收到交易二进制数据后,需要解码成程序可识别的数据结构。当交易量很大时,编解码成为交易广播的性能瓶颈。


FISCO BCOS 将交易的二进制编码进行缓存,当要发送交易时,直接从缓存中取出二进制发送,减少编解码的频率,增加交易广播的速率。


负载均衡


区块落后的节点会通过请求的方式从其它节点下载区块。其它节点在收到请求后,会将相应区间的区块发送给落后的节点。


在区块落后很多的情况下,FISCO BCOS 节点会将下载区间均匀切分,向不同的节点发起请求,把下载负载分散到不同的节点上,避免单一被请求节点因承载大量的数据访问请求而影响其运行性能。


回调剥离


在 FISCO BCOS 节点中,有多个回调线程处理网络上收到的包。当网络流量很大时,处理网络包的线程处理不过来,会将网络包放到缓冲队列中。


网络上的包主要为同步包和共识包,共识包优先级更高,直接影响出块速度。为了不影响共识包的处理,FISCO BCOS 将同步包的处理逻辑从网络回调线程中剥离出来,交给另外的独立线程,和共识包的处理解耦和并行了。


验签去重


同步模块在收到交易时,需要对交易进行验签。共识模块收到区块后,从区块中取出交易,也需要对交易进行验签。虽然是同一笔交易,却在同步和共识中都进行了验签。然而验签非常耗时,大大影响了交易执行的 TPS。


FISCO BCOS 在交易执行时做了去重逻辑,无论是同步还是共识,在验签前先查询验签记录,若此交易已验签,则直接从记录中获取验签结果,保证同一笔交易只验签一次。


同时,FISCO BCOS 让同步尽可能地在共识前验签,让共识尽可能直接获取验签结果,减少验签在共识中的耗时。共识得到了加速,链的 TPS 性能表现相应得到提升。

总结

共识与同步是区块链中必不可少的环节。共识打头阵,同步打辅助。同步流程使得整个区块链网络所有节点都达到数据一致性,保证数据全网可验证。同时,在不影响共识的前提下,为共识提前准备好所需的数据,让共识跑得更快更稳定。


本文转载自 FISCO BCOS 开源社区


2019-11-18 21:432698

评论

发布
暂无评论
发现更多内容

Parallels Desktop 18 虚拟机 支持M1

彩云

虚拟机 Parallels Desktop 18

Microsoft Remote Desktop for Mac 远程桌面连接工具

彩云

远程桌面连接 microsoft remote desktop

Redis常用的八种场景

高端章鱼哥

redis

如何建设一个高效的中英文外贸网站?

九凌网络

BetterDisplay Pro for Mac v2.0.11激活版

加油,小妞!

BetterDisplay Pro 显示器校准工具

软件测试/测试开发丨人工智能在软件测试领域的崭新前景

测试人

人工智能 软件测试

【2023云栖】陈守元:阿里云开源大数据产品年度发布

阿里云大数据AI技术

Mac电脑屏幕录像推荐:Iris激活最新版

mac大玩家j

屏幕录制 录屏软件 Mac软件

无服务器开发实例|微服务向无服务器架构演进的探索

亚马逊云科技 (Amazon Web Services)

Serverless 微服务 API Amazon Lambda Amazon API Gateway

「智造」第8期:浅谈国内外对智能制造体系的定义和标准

用友BIP

智能制造

如何构建更简洁的前端架构?

互联网工科生

前端 前端架构

AWS云服务器EC2实例实现ByConity快速部署

乌龟哥哥

AWS

Navicat Premium for Mac(多协议数据库管理工具) 16.2.9永久激活版

mac

数据库管理工具 苹果mac Windows软件 Navicat Premium 16

OpenHarmony Meetup北京站招募令

OpenHarmony开发者

Flask新手教程。

百度搜索:蓝易云

Python sql Linux Web 云服务器

HandBrake Mac版:强大且易用的视频转换工具

晴雯哥

sublime text for Mac(代码编辑器)v4.0(4166)注册汉化版

影影绰绰一往直前

SQL高级之慢查询日志?

百度搜索:蓝易云

MySQL sql 云计算 Linux 运维

科兴未来|全球伯乐计划启动!

科兴未来News

九章云极DataCanvas大模型系列成果发布会重磅来袭,诚邀见证!

九章云极DataCanvas

纯CSS实现炫酷文本阴影效果

南城FE

CSS 前端 动画 阴影

.NET8.0 AOT 经验分享 - 专项测试各大 ORM 是否支持

EquatorCoco

.net ORM AOT

Mirror for LG TV for Mac:简单快捷,实现屏幕镜像投屏

晴雯哥

中台架构下的性能测试实践方法

老张

性能测试 中台战略 全链路压测 稳定性保障

BetterDisplay Pro Mac版:提升显示屏效能,打造卓越视觉体验

晴雯哥

Redis 的集群模式实现高可用

树上有只程序猿

redis

外贸网站被谷歌收录的方法

九凌网络

十个令人惊叹的Go语言技巧,让你的代码更加优雅

这我可不懂

Go 语言

🔥🔥Java开发者的Python快速进修指南:控制之if-else和循环技巧

EquatorCoco

Java 编程语言 项目开发

一点资讯“一号市集”广州开市 赋能车企营销新市景

科技热闻

Xmind for Mac(思维导图软件) 24.01中文版

加油,小妞!

思维导图 mac软件下载

区块链的同步及其性能优化方法_开源_石翔_InfoQ精选文章