FISCO BCOS 《新摩登时代》:卓别林演绎共识与同步流程优化

作者:石翔|FISCO BCOS 核心开发者

共识与同步的流程优化,是FISCO BCOS性能优化迈开的第一步。仅依靠这一流程优化,就给系统TPS带来可观的1.75倍提升但这不是目的,其目的在于确定了共识的主导地位,排除了同步给共识带来的性能影响,让之后的性能分析更好地聚焦在共识流程中。

基础讲解

在卓别林的电影《摩登时代》里,卓别林扮演一个工人,日复一日地重复着拧螺丝的动作:提起扳手,找到零件,对准螺丝,拧紧,再提起扳手,再找到下一个零件,再对准螺丝,再拧紧…… 在FISCO BCOS的设计里,共识和同步也在干着这样重复的事情。

共识与同步是个啥?

共识与同步,是FISCO BCOS节点中的两个核心流程。它们相互配合,实现了区块链的核心功能:生产出一条在每个节点上都一致的区块链。在FISCO BCOS节点的实现里,共识和同步的实体,我们称为共识模块和同步模块。

  • 共识模块:负责生产区块,让节点产生的区块都是一模一样的
  • 同步模块:负责广播交易,让用户发出的交易尽可能地到达每个节点

共识与同步在干啥?

我们来看看共识模块和同步模块的工作环境:

  • 交易池:节点中缓存未被处理交易的容器
  • 网络模块:接收其它节点发来的消息包,也可向其它节点发送消息包 那么,共识模块与同步模块在干啥?

共识模块

不断进行共识消息的处理和发送,让所有节点上的区块达到一致,此处以PBFT的共识为例。

  1. 打包区块:从交易池拿取出交易,打包成区块广播出去,或处理从网络模块拿到的其它节点的区块
  2. 执行区块:解码区块,验证区块,执行区块,将区块的执行结果签个名广播出去
  3. 收集签名收集其它节点执行结果的签名,如果收集到的签名达到一定数量,就向其它节点广播“commit消息”
  4. 收集commit:收集其它节点的commit消息,当收集到的commit消息达到一定数量,说明区块已经一致,可以落盘了
  5. 落盘:把区块连接到现有区块链的末端,形成区块链,存储到DB

../../../../_images/IMG_5231.JPG

同步模块

不断进行交易的收发,让每一笔交易尽可能地到达每个节点。

  1. 取交易:从交易池中取出未发送的交易
  2. 发交易:把未发送的交易广播给其它节点
  3. 收交易:从网络模块收取其它节点的交易
  4. 验交易:对交易进行解码和验签
  5. 存交易:把验签通过的交易存到交易池中

../../../../_images/IMG_5232.JPG

问题与优化

卓别林和他的伙伴各司其职,井然有序,看似非常和谐。可当工厂落后的生产力跟不上旺盛的市场需求,即便是卓别林这种熟练工,加班加点也干不完。这个时候,卓别林不得不开始思考自己和伙伴在生产关系上的问题。

  • 以往的设计中,共识模块和同步模块并没有优先级的区分,导致它们在争夺资源时浪费了大量的时间。
  • 同时,共识模块和同步模块中还有很多重复的操作,也浪费了时间。

因此,应该将共识模块和同步模块的执行流程一并考虑,优化流程,提高效率。在经过详细分析和缜密验证后,FISCO BCOS将共识模块和同步模块流程进行了优化。优化基于以下思想:

  • 共识模块负责主导整个区块链出块的节奏,应让共识模块先行
  • 而同步模块,理应扮演好配合的角色,辅佐共识模块更快出块。

基于上述思想,我们来看看其中几个问题的优化方法。

问题1:工作阻塞

共识模块与同步模块都是从网络模块中获取消息包,再根据相应消息包进行下一步操作。

但是,由于网络回调线程数量的限制,同步模块在处理消息包时,占用了网络的回调线程,导致共识模块无法及时处理其它节点发来的共识消息,共识流程被阻塞。

../../../../_images/IMG_5233.JPG

如何解决?——将同步消息的处理操作从网络回调线程中剥离

基于共识模块先行的思想,应让共识模块更及时地收到共识消息,不能让同步模块占用网络回调线程太久。

因此,同步模块在拿到消息时,不是直接在回调线程中对交易进行解码和验签,而是将同步消息包缓存起来,用另外一个线程“私下”慢慢处理

这样一来,同步消息的处理不会长时间占用网络回调线程,能让共识消息响应得更快。

../../../../_images/IMG_5234.JPG

问题2:编解码冗余

同步模块收到同步消息中的交易,是经过编码的,同步模块需将其解码成节点代码中的数据结构,再存入交易池中。

共识模块打包区块时,把交易从交易池中取出,将交易进行编码,打包成区块,再将区块发送出去。

在这个过程中,交易先被解码,又被编码,操作存在冗余。

../../../../_images/IMG_5235.JPG

如何解决?——交易编码缓存

共识优先级高于同步,应尽量减少共识模块中不必要的操作。

因此,

在同步模块存交易时,一并将交易的编码存入交易池

共识模块取交易时,直接从交易池中拿出编码好的交易,免去了编码操作。

../../../../_images/IMG_5236.JPG

问题3:重复验签

同步模块在收到交易后,需对交易的签名进行验证(简称“验签”),

共识模块在收到区块后,也需要对区块中的交易进行验签。

同步模块和共识模块所验签的交易,有很大概率是重复的。

验签是一个非常耗时的操作,每进行一次额外的验签,都会消耗大量的时间。

../../../../_images/IMG_5237.JPG

如何解决?——验签去重

无论是同步模块还是共识模块,在验签前,都去交易池里查询该笔交易是否存在。如果存在,就省略验签操作。如此一来,一笔交易只验签一次,减少了不必要的验签开销。

../../../../_images/IMG_5238.JPG

解决方案可否更优?——尽量让同步验签,减少共识模块验签的次数

仍然是共识模块优先的思想,尽量减少共识模块验签的操作。

因此,同步模块必须比共识模块跑得快,在共识模块处理一笔交易前,同步模块先拿到交易,优先对交易验签。

../../../../_images/IMG_5239.JPG

FISCO BCOS在此处对同步模块采取的策略是:对交易进行全量的广播

在一个打包节点拿到交易时,其它节点的同步模块也收到了相应的交易。

在其它节点收到打包节点发过去的区块时,区块中所包含的交易早已被同步模块验签后写入交易池中。

同时,为了让同步模块在相同操作的处理速度上不低于共识模块,同步模块的交易编解码,也采用了和共识模块一样的“并行编解码”和“交易编码缓存”。

结果如何?

共识与同步的流程优化,一定程度上也提高了交易处理的TPS。经测试,交易处理的TPS提高至原来的1.75倍!更重要的是,通过流程优化,确定了共识的主导地位,排除了同步给共识带来的性能影响,让之后的性能分析更好地聚焦在共识流程中!

消除了阻塞,消除了编码冗余,消除了重复验签,卓别林和他的伙伴工作得更轻松,更顺畅了!

https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/articles/3_features/31_performance/consensus_and_sync_process_optimization.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26264.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

脏话越多,代码越好!

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇 作者丨程序员月亮 来源丨了不起的程序员(ID:great_developer) 你好呀,我是月亮,一个90后的老程序员啦~ 平…

基于langchain 的文档问答 最佳实践(附源码)

文档问答的原理 文档读取并切割,用句向量 向量化,存入向量数据库问题向量化,在向量数据库中进行相似性检索,并存出top K把问题和top K 答案组成 prompt 并发给大模型,等大模型答案 这里面涉及到的技术点有&#xff1a…

chatgpt赋能python:Python为什么闪退?

Python为什么闪退? Python作为一种高级编程语言,已经赢得了世界各地许多开发者的青睐。但是,有时候Python会因为各种原因而突然闪退,给开发者带来极大的困扰。那么,Python为什么会闪退呢? 1. 内存泄漏 内…

Trexquant | 量化多岗位招聘(全职+实习)

量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据等领域的主流自媒体。公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W关注者。 具体投递方式 投递邮箱 tqchina_resumetrexquant.com 简历命名 岗位-姓名…

京东各大城市内推岗位(2021.2.7更)

北京: 上海: 广东: 四川: 重庆: 暂无 杭州: 暂无 陕西: 湖北: 湖南: 暂无 岗位每周更新一次 因为内推系统只能以省份维度查看,想了解具体城市和岗…

北京内推 | 京东营销与商业化中心招聘NLP算法工程师/实习生

合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 京东 京东营销与商业化中心(原商提广告部)成立于2014年初&#xff0…

【CSDN雇主招聘】深信服科技带着高薪岗位JD和公司周边来啦

为了帮助企业更好的应对用人难的挑战,CSDN面向所有企业全新升级了CSDN2022雇主品牌计划,在企业发展、吸引人才、连接人才、宣传公司多个维度提供专属的支持。 ————本次为深信服科技专场———— 直播主题:《CSDN雇主品牌-深信服招聘专场…

【名企招聘】4月20日19点,Thoughtworks专场招聘,众多岗位JD解读,总有适合你的岗位~

为了帮助企业更好的应对用人难的挑战,CSDN面向所有企业全新升级了CSDN2022雇主品牌计划,在企业发展、吸引人才、连接人才、宣传公司多个维度提供专属的支持。 ————本次为Thoughtworks专场———— 直播主题:《CSDN雇主品牌-Thoughtwork…

WhatsApp 群组营销分析

一、WhatsApp基本介绍。 1、创建特点。 whatsapp是一款国际应用,他允许用户自由创建群组,拉人进群。用户可以设置群组隐私来防止陌生人的广告骚扰。 2、成员分类。 群组的人员上限为257。成员分为三类群主、管理员和普通成员。三者的权利依次减小。群…

邮件营销有效吗?分享几个实用的电子邮件营销策略和技巧!

(一)什么是电子邮件营销,它从什么时候开始的? 1971 年,Ray Tomlinson根据来源发送了世界上第一封电子邮件,标志着现代通信时代的开始。这条信息没什么特别的,一串数字和字母,看起来…

element日历(Calendar)排班

修改展示 父组件内容 <template><!--排班管理--><div class"dutySchedule"><div class"dutySchedule-calendar"><el-calendar v-model"priceTime"><template slot"dateCell" slot-scope"{d…

Clickhouse 生成日历表

运行环境&#xff1a; SELECT version()Query id: 90d74a1e-3ce1-42b4-8b66-bd09802310c4┌─version()─┐ │ 20.12.3.3 │ └───────────┘1 rows in set. Elapsed: 0.002 sec.clickhouse的 date和datetime的时间范围目前只支持 [1970-01-01 00:00:00, 2105-12-…

邮件营销EDM(Email Direct Marketing) 运营笔记

我是2018年毕业后接触邮件营销&#xff0c;国内和国外的邮件营销都接触过。从最初和公司爬虫团队合作扩张性开发客户到现在的客户精细化运营&#xff0c;期间遇到过邮件营销各种各样的问题。好像发mass mail 被投诉垃圾邮件平台被封&#xff0c;送达打开率不正常&#xff0c;邮…

Tips系列之飞书日历

最近收到很多小伙伴的问题,咨询飞书日历如何使用,今天就给大家呈上几个小Tips,让你更全面的了解飞书日历! 👉免费使用​ 飞书官网 1、订阅日历 你可以订阅同事的日历,查看对方的忙闲状态,省去反复沟通的麻烦,快速找到空闲时间并邀约会议。 如何订阅日历方法一:在日…

使用日历丰富产品的用户体验

前言 经过一段时间的梳理和遴选&#xff0c;我挑选出了Android知识图谱中重要的部分&#xff0c;制作了一张脑图。读者朋友们可按照脑图查漏补缺了&#xff0c; 图片尺寸较大&#xff0c;仅附链接 。 当然&#xff0c;这是我按照自己的判断、结合参考其他博主的观点进行的挑选…

2023 热点营销日历:179 个重要节日 + 46 个关键事件 + 12 个经典案例

又是一年初始时&#xff0c;为大家准备了一份全年营销日历&#xff0c;速速领取收藏哟&#xff5e; 一月营销热点 营销话题&#xff1a;元旦、春节、春运、年味、团圆、旅游、FLAG…… 2023 开年注定是特殊的一年。三年消费欲望在这个春节集中释放&#xff0c;在外漂泊的游子踏…

likewen的救赎之路

likewen的救赎之路 标准化救赎之路,只针对本人 文章目录 likewen的救赎之路java的八股文算法操作系统&计算机网络企业开发基础mysqlspring系列spring5springbootspringcloud linux前端**设计模式**缓存redis 消息队列nginx?Netty**微服务**docker认识一下常用的类库测试其…

大会议题重磅出炉,豪华阵容等你面基!RustChinaConf 2023!【附第一天议程】

本次大会议题品质一流&#xff0c;嘉宾多来自行业一线&#xff0c;干货多多&#xff0c;且在各领域遍地开花&#xff0c;可看出Rust星星之火在中国已成燎原之势&#xff01; 大会时间地址 6.17 - 6.18 浦东新区张杨路777号 上海锦江汤臣洲际酒店 官网地址 https://rustcc.cn/20…

张俊林:大语言模型带来的交互方式变革

来自&#xff1a;机器之心 演讲&#xff1a;张俊林 进NLP群—>加入大模型与NLP交流群 7 月 8 日&#xff0c;在机器之心举办的 2023 WAIC AI 开发者论坛上&#xff0c;新浪微博新技术研发负责人张俊林先生发表了主题演讲《自然语言交互&#xff1a;大语言模型带来的交互方式…

Hyper-v的客户端连接工具VMConnect

我们在玩Hyper-v的时候&#xff0c;一般也是走走套路&#xff0c;创建个虚拟机&#xff0c;中间可能会因为到底要给这台虚拟机分配多少内存多大硬盘作一番思想半争&#xff0c;因为内存不多了&#xff0c;硬盘不够了&#xff0c;然后&#xff0c;就是连接虚拟机&#xff0c;启动…