免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除区块链底层技术改良及难点攻克引言Fabric,全称 Hyperledger fabric,中文称“超级账本” ,它是以区块链技术为基础设计的去中心化底层架构,是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目。在接触区块链时,我们是从以太坊开始研究学习的,后续还了解学习了比特币、小蚁、超级账本等区块链相关项目。对于金融业务,因其对系统的稳定性,健壮性,处理性能以及应用的可扩展性等方面有很高的要求,通过从各方面对比,最终选择了超级账本作为项目的底层框架。在我们深入研究超级账本的过程中,发现其并不是一个完善的框架,还存在着很多问题。上图为0.6版本整体架构图,被标记部分是经过我们改良的模块,主要有以下几点:改良共识通道及消息处理机制在进行性能测试时,我们发现超级账本网络对高并发交易的处理能力存在瓶颈。通过深入分析,发现在整个底层系统中存在多种不同类型的消息流,例如节点间用于广播交易的消息和共识的消息等,而每个节点处理这些消息流的管道却只有一个,这就好比一条高速路上只有一个检票口一样,检票口的处理能力直接影响到高速的堵车概率。而在系统中,由于消息处理管道很容易被阻塞,导致优先级高的消息因无法及时被处理而大量堆积,从而导致整个系统宕机。通过分析,我们使用分流的方式来解决管道阻塞的问题(如上图)。用单独的A号管道去处理优先级低但调用频率高的消息(例如节点间的广播消息),而一些优先级高的消息(例如共识消息)则通过B号管道去处理,当A号管道出现阻塞时,通过B号管道及时处理,可以逐渐消耗并恢复A号管道的能力。通过分流方式,保证各类消息能被及时处理,进而提高了系统的处理能力,也提升了系统的稳定性。我们知道,最小的超级账本网络需要四个节点才能正常运行,所以这些节点之间的通信能力就成了影响该网络能力的一个重要因素。在测试中,我们也发现节点之间的各类通信都是通过一个通道进行处理的,当有大并发量的交易进入网络,节点之间大部分时间都在进行频繁的交易广播(将自己收到的交易信息发送给其他节点,以保障交易不被丢失),无法及时处理共识,这直接影响了该网络处理交易的能力,所以,我们通过使用双通道,将消息分开进行处理,使消息能够被及时处理,进一步提升系统的处理能力及稳定性。改良内存溢出通过前面的修改,我们的重点开始落在系统对交易处理的能力上,而这个现象就是在压力测试时出现的。当我们以400笔每秒的速度向底层写入数据时,随着数据量的增加,某个节点就会出现宕机的现象,并且无法恢复,影响了系统的健壮性。通过分析日志、代码,我们发现当系统重启时,会加载大量的已被存储的数据,这使得大量的内存被消耗,没有资源去处理其他操作,导致系统宕机。我们通过修改加载数据的逻辑,在保证对数据无影响的情况下,使系统快速恢复运行,提高了系统的健壮性。改良视图异常视图是共识中一个比较重要的概念,用于网络中各节点的共识,其主要包含共识过程中产生的所有信息及状态。在稳定性测试过程中,当长时间向超级账本系统写入大量数据时,会出现网络中节点之间共识失败,无法记录交易的现象,通过跟踪分析输出日志,我们发现是由于各节点之间所存储的视图信息不一致而导致的。修改代码逻辑之后,通过将视图阶段性标识(即每执行一定量的交易后记一个标识)和添加证书的方式来保证各节点所记录的视图信息的一致性,这样使得网络中各节点能够稳定运行,即使出现视图紊乱,也会很快达成一致,恢复正常。改良交易处理异常对于一个金融系统,最不能容忍的就是丢失交易或出现“双花”的现象,而超级账本存在丢交易和“双花”问题。主要是因为当大量交易涌入到系统中,超出了系统的处理能力,部分交易的丢失就成为可能。为了防止这种现象的产生,我们通过增加中间层服务,控制流向底层网络的数据量;启用非验证节点,使交易均等分发至其他节点,进而保证底层网络中的节点能够处理所有的交易,防止交易丢失。而对于“双花”现象,由于超级账本网络中各节点处理交易的延时,会导致部分交易被重复提交。经过分析,我们通过调整过滤机制及过滤的时机,保证一笔交易只执行一次, 进而防止“双花”现象的出现。改良读写异常在进行压力测试时,起初只是关注了底层系统对写数据的能力,并未关注对数据读取的能力。在后续进行并发读写数据操作时,发现一段时间后节点与合约之间的通信会断开,导致进入网络的数据无法记,而查询操作也会失败。深入剖析代码,发现主要原因是由于原版设计中读写锁设计不合理所导致的,通过修改读写部分的代码逻辑,在不影响最终结果的情况下,将通信断开的问题进行修复,进而保证了系统的稳定性及功能的完善。并且将读写锁的修改方案提交到github上,为超级账本的发展贡献了自己的一份力量。就现在而言,超级账本仍处于概念验证阶段,0.6版本不能在生产环境实施运行。而通过我们团队不懈的努力,改进后的0.6版
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广告牌采购合同协议
- 建筑外墙施工协议书
- 激活解冻退款协议书
- 扶贫产业发展协议书
- 扶贫项目资金协议书
- 找工作委托合同范本
- 承包位保安合同协议
- 承包合同与合作协议
- 承包开挖白泥协议书
- 承包校园食堂协议书
- 大学英语四级作文
- 交通管理扣留车辆拖移、保管项目 投标方案(技术标)
- 气相色谱-质谱联用法测定鱼腥草挥发油中4种成分的含量
- 国际贸易理论与实务(英文版)PPT完整全套教学课件
- 故意杀人上诉状范文两篇
- 小工具批量处理邻区脚本实用操作
- 三年级科学下册《谁在水中溶解得多》实验报告单
- 高中数学 数列 4.4数学归纳法第1课时
- GB/T 7735-2004钢管涡流探伤检验方法
- GB/T 21566-2008危险品爆炸品摩擦感度试验方法
- 医学导论-课件
评论
0/150
提交评论