FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造。开源工作组成员包括博彦科技、华为、深证通、神州数码、四方精创、腾讯、微众银行、亦笔科技和越秀金科等金链盟成员机构。

代码仓库:https://github.com/FISCO-BCOS

作者语

外网环境下,区块链系统性能受限于网络带宽,为了尽量减少网络带宽对系统性能的影响,FISCO BCOS从relase-2.0.0-rc2开始支持网络压缩功能,该功能主要在发送端进行网络数据包压缩,在接收端将解包数据,并将解包后的数据传递给上层模块。

本期文章讲的就是FISCO BCOS的网络压缩功能,作者从FISCO BCOS的系统框架、核心实现、处理流程、测试结果等角度进行了解析。

Part 1、系统框架

网络压缩主要在P2P网络层实现,系统框架如下:

网络压缩主要包括两个过程:

  • 发送端压缩数据包:群组层通过P2P层发送数据时,若数据包大小超过1KB,则压缩数据包后,将其发送到目标节点;

  • 接收端解压数据包:节点收到数据包后,首先判断收到的数据包是否被压缩,若数据包是压缩后的数据包,则将其解压后传递给指定群组,否则直接将数据传递给对应群组。

Part 2、核心实现

综合考虑性能、压缩效率等,我们选取了Snappy来实现数据包压缩和解压功能。

数据压缩标记位

FISCO BCOS的网络数据包结构如下图:

网络数据包主要包括包头和数据两部分,包头占了16个字节,各个字段含义如下:

  • Length: 数据包长度

  • Version: 扩展位,用于扩展网络模块功能

  • ProtocolID: 存储了数据包目的群组ID和模块ID,用于多群组数据包路由,目前最多支持32767个群组

  • PaketType: 标记了数据包类型

  • Seq: 数据包序列号

网络压缩模块仅压缩网络数据,不压缩数据包头。

考虑到压缩、解压小数据包无法节省数据空间,而且浪费性能,在数据压缩过程中,不压缩过小的数据包,仅压缩数据包大于c_compressThreshold的数据包.c_compressThreshold默认是1024(1KB)。我们扩展了Version的最高位,作为数据包压缩标志:

  • Version最高位为0,表明数据包对应的数据Data是未压缩的数据;

  • Version最高位为1,表明数据包对应的数据Data是压缩后的数据。

Part 3、处理流程

下面以群组1的一个节点向群组内其他节点发送网络消息包packetA为例(比如发送交易、区块、共识消息包等),详细说明网络压缩模块的关键处理流程。

发送端处理流程:

  • 群组1的群组模块将packetA传入到P2P层;

  • P2P判断packetA的数据包大于c_compressThreshold,则调用压缩接口,对packetA进行压缩,否则直接将packetA传递给编码模块;

  • 编码模块给packetA加上包头,附带上数据压缩信息,即:若packetA是压缩后的数据包,将包头Version的最高位置为1,否则置为0;

  • P2P将编码后的数据包传送到目的节点。

接收端处理流程:

  • 目标机器收到数据包后,解码模块分离出包头,通过包头Version字段的最高位是否为1,判断网络数据是否被压缩;

  • 若网络数据包被压缩过,则调用解压接口,对Data部分数据进行解压,并根据数据包头附带的GID和PID,将解压后的数据传递给指定群组的指定模块;否则直接将数据包传递给上层模块。

Part 4、配置与兼容

配置说明

  • 开启压缩:2.0.0-rc2及其以上版本 支持网络压缩功能,配置 config.ini的[p2p].enable_compresss=true

  • 关闭压缩:config.ini的[p2p].enable_compresss=false

兼容性说明

  • 数据兼容:不涉及存储数据的变更;

  • 网络兼容rc1:向前兼容,目前仅release-2.0.0-rc2及其以上版本有网络压缩功能。

Part 5、测试结果

为测试网络压缩效果,分别在内网和外网环境下,以同样的压测程序和QPS压测开启网络压缩和没开启网络压缩的四节点区块链,测试结果如下。

通过测试结果可看出:

  • 内网环境下开启压缩对区块链系统性能影响不大,运行串行solidity压测合约时,网络带宽消耗降低为未开压缩时的三分之二;运行并行precompile压测合约,网络带宽消耗降低到未开压缩时的三分之一

  • 外网环境下:开启压缩可提升区块链系统性能

图一:带宽对比(关闭压缩和开启压缩情况下,压测并行solidity合约和串行Precompile合约)

通过图一可看出,执行串行solidity合约,开启压缩可节省三分之一带宽;执行并行Precompile合约可节省三分 之二带宽

图二:TPS对比(内网和外网环境下,关闭压缩和开启压缩情况下TPS)

通过图二可看出,内网环境下,开启压缩对区块链系统性能影响不大;外网环境下,因为在有限带宽限制下,开启 压缩可处理更多交易,区块链性能提升了约三分之一。

内网环境测试结果

串行solidity合约(PerformanceOk) 压缩前 Snappy压缩后
TPS 1961.5 1939.4
入带宽 10.88MBit/s 6.93MBit/s
出带宽 9.08MBit/s 5.70MBit/s
并行Precompile合约(PerformanceDT) 压缩前 Snappy压缩后
TPS 9725 9741
入带宽 76.06MBit/s 22.72MBit/s
出带宽 80.48MBit/s 24.17MBit/s

外网环境测试结果

压测场景 压缩前 Snappy压缩后
四节点,串行solidity合约(PerformanceOk) 1125.8 1740
四节点, 串行solidity合约(PerformanceOkD) 低于1000 1407

我们鼓励机构成员、开发者等社区伙伴参与开源共建事业,有你在一起,会更了不起。多样参与方式:

1 进入微信社群,随时随地与圈内最活跃、最顶尖的团队畅聊技术话题(进群请添加小助手微信,微信ID:fiscobcosfan);

2 订阅我们的公众号:“FISCO BCOS开源社区”,我们为你准备了开发资料库、最新FISCO BCOS动态、活动、大赛等信息;

3 来Meetup与开发团队面对面交流,FISCO BCOS正在全国举办巡回Meetup,深圳、北京、上海、成都……欢迎您公众号在菜单栏【找活动】中找到附近的Meetup,前往结识技术大咖,畅聊硬核技术;

4 参与代码贡献,您可以在Github提交Issue进行问题交流,欢迎向FISCO BCOS提交Pull Request,包括但不限于文档修改、修复发现的bug、提交新的功能特性。

代码贡献指引:

https://github.com/FISCO-BCOS/FISCO-BCOS/blob/master/docs/CONTRIBUTING_CN.md

本文首发于公众号【FISCO BCOS开源社区】,如转载请注明出处,原创不易,谢谢珍惜

转载于:https://my.oschina.net/u/4119053/blog/3069172

区块链底层平台FISCO BCOS的网络压缩功能如何?相关推荐

  1. 区块链底层平台FISCO BCOS的证书机制

    FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...

  2. 如何在区块链底层平台和应用场景中搭一个“桥梁”,他们推出了“中间件”

    本堂茜 渡鸦区块链专栏记者 申屠青春本科及硕士均从水产养殖专业毕业,但是对着计算机有着极高兴趣的他,在校期间起就自学编程,毕业后便跨界到信息安全领域工作.后来他到中科院研究生院参加了计算机应用进修班, ...

  3. 新一代国产区块链底层平台正式亮相,蓝石区块链实验室首发CefaChain技术 | 附白皮书

    11月22日--由蓝石区块链实验室主办.蓝石科技承办的CefaChain技术首发暨蓝石生态解读发布会在北京隆重举行,CefaChain作为三元平衡寻优的新一代国产区块链底层平台正式亮相.此次活动重磅发 ...

  4. 《如何开发区块链底层平台》-- 同济创业谷PPIO CodeTalks区块链技术分享会

    摘要:2019年11月26日,同济创业谷与 PPIO CodeTalks 联合举办了<创新X - 区块链与创新创业>区块链技术分享会. 在本次分享会中,我们有幸邀请到了四位重量级嘉宾来做主 ...

  5. 雄安,杭州政府自建区块链底层平台 自建、外包、加入三种模式谁是未来

    文丨互链脉搏·黑珍珠号 未经授权,不得转载! 在科技公司为政府开拓出逐渐明确的区块链治理之路后,城市政府开始尝试自建底层平台. 11月17日,雄安发布消息,将积极探索搭建自主知识产权的区块链底层基础平 ...

  6. 开发基于以太坊的区块链底层平台,秘猿科技想做共识数据时代的Oracle

    "与其说区块链是比特币的底层技术,不如说比特币是区块链技术的第一个成功的应用."秘猿科技的创始人谢晗剑这样看待区块链和比特币的关系. 秘猿科技是一家从事底层区块链平台开发和共识算法 ...

  7. 初步了解区块链技术落地——FISCO BCOS 快速搭建区块链

    区块链端口 p2p_port: 节点通信端口. channel_port: SDK 通知协议交换端口,使用的 SSL. jsonrpc_port: http接口包含的此协议,网络明文. 官方教程 ht ...

  8. 金链盟成员纷纷“自立山头”,中国联盟式区块链开源平台路在何方

    文丨互链脉搏·黑珍珠号 未经授权,不得转载! 2月10日,神州信息发布的最新投资者关系活动记录表显示,神州信息与腾讯.华为等企业共同打造了金链盟区块链底层开源平台,开放给全金融行业. 值得注意的是,神 ...

  9. 转发:区块链产业平台建设领域发展情况:公有链/联盟链/BaaS是三种较主流平台模式

    中商情报网讯:区块链各细分领域蓬勃发展,从硬件制造.基础设施到底层技术开发.平台建设,再到安全防护.行业应用,以及媒体社区等区块链行业服务机构,已经初步形成了一个完整的产业生态链.在平台建设方面,区块 ...

最新文章

  1. 《Kinect应用开发实战:用最自然的方式与机器对话》一3.2 基于“管道”的系统架构...
  2. (轉貼) Embedded System與System on Chip的差異 (IC Design)
  3. MongoDB 查询时间差问题修复
  4. 2018/Province_Java_C/1/哪天返回
  5. halcon 圆环类缺陷检测的一种方法(极坐标变换法)
  6. python脚本语言采用声音作为手段_LKJ自动化测试脚本定义及生成技术研究
  7. oracle failover 区别,Oracle DG failover 实战
  8. linux下搭建nagios监控
  9. LeetCode之验证二叉搜索树
  10. 连接最大数 详解(C++)
  11. linux 设置显卡命令,linux查看显卡命令
  12. L19.linux命令每日一练 -- 第三章 文件过滤及内容编辑处理命令 -- tailf和cut命令
  13. 《游戏力》的读后感作文3600字
  14. 江苏小高考计算机知识点,江苏文科小高考哪几门 考试内容是什么
  15. FFM:土豪的利器,平民该怎么玩?(tensorflow2, Bi-FFM)
  16. 【太美了】【Crystal Castle.水晶城堡】【严泽远作品】
  17. wx.downloadFile 隐藏bug
  18. 分析《大话数据结构》
  19. 薄荷英语-day20-20180428-30
  20. 诺基亚S40机型新手美化攻略

热门文章

  1. Weka Explorer(探索者界面) 详解(1)
  2. DQL:简单的select语句书写(含where子句)
  3. 银行提供了整存整取定期储蓄业务,存期分为1年,2年,3年,5年,到期取本息之和,年利率如下 1年 2.25% 2年 2.7% 3年 3.24% 5年
  4. vue药物管理系统nodejs
  5. 用express和vue构建全栈项目myweb
  6. 如何下载国家标准分幅影像地图
  7. 如何选择语音短信通知?语音短信通知接入教程
  8. JWeb新闻的增删改查
  9. 根据身份证号判断性别
  10. 倒立摆的实现 5.步进电机的控制