吞吐量-Corda的故事

我最近开展了一个针对特定用例的Corda性能项目。 这个项目的结果使我们在170多个节点的网络上一天之内处理了1.15亿个请求。 此外,Corda每秒能够处理6300个请求,确认满足了网络的最高要求。 迄今为止,这是迄今为止已部署的最大的Corda网络,并且实现了最高的吞吐量。 证明Corda可以在非常苛刻的环境中交付。

这项研究是由埃森哲为DTCC进行的,该研究还探讨了另一个DLT平台,数字资产。 有关更多信息,请参见新闻稿。

DTCC宣布研究结果,表明DLT可以支持美国股票的交易量…
突破性的研究表明,DLT每天可处理超过1亿笔交易纽约/伦敦/香港……www.dtcc.com

在这篇文章中,我将利用我在该项目中获得的经验来描述如何还可以从Corda中获得最大收益。 我希望不久的将来会有与我们为DTCC所做的类似的项目,我希望这里的信息可以帮助其他开发人员指明正确的方向。

结果怎么样? 好吧,这并非没有困难。 但是,我认为我们做得很好。 更准确地说,我们证明,如果精心设计网络并精心设计CorDapp,Corda可以达到很高的吞吐量。 是的,我知道我基本上是在说,如果您做的一切正确,那么一切都会顺利进行。 真的很重要。 当我们在整个项目中调整CorDapps时,我们发现了可以大大提高应用程序性能的途径。 进行这些更改可以使我们越来越接近我们的目标。 但是,如果我们不以特定方式设计网络,那么这一切都将无关紧要。

需要Corda Enterprise来实现最高的性能
这是将性能提高10倍或将计算机的内核数提高最简单的方法。 除其他事项外,Corda Enterprise允许在节点内运行的Flow Worker的数量从1增加到很多。 这影响了可以在节点内异步运行的流的数量。 但是,这不会改变在每个版本上以相同速度运行的各个Flow的性能。 实际上,没有企业版,您将永远无法实现极高的性能目标。

如果您的用例不需要达到这种性能,那么开源版本将满足您的需求。 例如,由于DTCC处理的请求量和需要处理的比率非常大,因此我们100%需要将Enterprise用于我们的项目。 另一方面,如果我们要处理贷款的处理。 与DTCC的需求相比,流经节点的请求速率将大大降低。 在这种情况下,使用开源就足够了。

方便地,企业代码和开放源代码兼容,使您可以轻松切换。 部署方面存在差异,并且在进行更改时很有可能需要摆弄这一方面。

企业版本和开放源代码版本之间的兼容性使您可以尝试两者,从而确定最适合您的需求。 这样,您就可以开始在开源上编写应用程序,直到认为有必要切换到企业版为止。

考虑一下您的网络
我确实非常想强调网络体系结构的重要性。 我什至不想考虑如果坚持我们的原始设计将会获得的性能。 实际上,我们取消了原始设计,因为它从根本上存在缺陷,并且会阻止实现我们目标的任何希望。 就我个人而言,我认为本节一半是关于Corda,一半是关于构建一个好的解决方案。

分片以提高大规模性能
在撰写本文时,Corda不支持负载平衡。 当前,单个节点将为其代表的身份处理所有工作。 这是他们充分意识到的领域,也是他们在不久的将来要努力进行的工作。 如果在那里,那么可能有可能仅仅依靠旋转大量支持单个Corda节点的实例。 这将导致更多的计算能力,并因此增加吞吐量。

由于负载平衡尚未准备好,而且我们只有一个参与者坐在网络中间,这是处理请求的巨大瓶颈,因此我们不得不以不同的方式处理整个网络设计。 作为补偿,我们必须考虑一种方法,以便将我们自己的水平缩放比例提供给系统,因为必须删除位于中间的单个节点。 如果不解决这些问题,我们将无法实现每秒6300笔交易的网络吞吐量。

我们的解决方案? 分片。 我们确定了一种方法,可以从逻辑上将一个参与者分解为许多非常小的部分。 每个处理请求彼此并行。 这需要一些额外的逻辑来将请求路由到正确的分片节点。 但是,此解决方案可能节省了项目。 我们从未测试过单个瓶颈节点的性能,但是,我100%确信我们不会达到目标。

下面我提供了两个图表。 一种使用单节点设计的示例过程,另一种采用分片方法。

单节点

科尔达故事

分片

科尔达故事

我将让图表说明一切。 由于该信息仍然是机密的,因此我将不进一步研究该实现。 那里应该有足够的信息来理解我们为什么做以及做什么,而不是我们如何实现。

您可以想象第二种设计将产生更高的吞吐量。 它还具有在将节点添加到网络时线性扩展的优势。

在原始设计中,吞吐量对于少量节点可能是可以接受的。 但是,当您遇到较大的数字(例如100),甚至可能只有10时,您会注意到性能下降。 这完全是由于整个网络依赖单个瓶颈节点可以处理请求的速率。

消除具有多个公证人的额外瓶颈

可以提高网络整体性能的另一个领域是使用多个公证人。 当网络的吞吐量已经很高时,单个公证员将开始成为工作流程的瓶颈。 遵循与上一节相同的想法。 公证人可以分片。 允许每个人处理较小数量的交易。

每当我说“多个公证人”时,我只是想澄清一下我不是在谈论公证人团体。

我已经写了一篇有关利用多个公证人提高网络吞吐量的文章,涵盖了这个主题,而不是重复我自己,我将带你去那里。

科尔达故事

调整那些Cordapps

在Cordapps上。 您可以在这里做很多事情来提高性能。 大部分来自尝试尽可能少地做。

  • 我需要发送所有这些交易吗?
  • 对方是否真的需要签署此交易?
  • 我的交易上有太多州吗?
  • 发起方和交易对手之间的流跳了多少次?

这些都是对流程性能至关重要的问题。 我敢肯定还有其他地方可以提高性能(稍后我会介绍),但是这些是我现在唯一想到的地方。 我确定你知道图片。

让我们快速看一下最后一个问题。

  • 发起方和交易对手之间的流跳了多少次?

这实际上涵盖了我提出的其他一些观点。 无论如何。 每次跨网络跳转时,Flow的性能都会下降。 它需要从一个Corda节点移动到另一个节点,并且可能需要在某个时候回来。 在此期间,由于网络延迟以及将流指向磁盘的检查点的过程,您正在积累性能成本。

网络延迟可以说明一切,不需要进一步说明。 另一方面,检查点需要充实一些。 检查点是序列化Flow当前执行的过程,以便在发生故障时可以从特定点重新启动它。 这样做需要序列化整个流程堆栈,这可能会很大,因此要执行的过程成本很高。

考虑到此信息,请确保您考虑是否真的需要进行这些跳跃。 尽量减少它们。 如果这样做,我相信您会看到应用程序性能的提高。

这对性能有好处吗?

对对对。 虽然,我们没有衡量包括多线程在内的影响,但我确信它取得了很好的改进。 但小心点。 如果操作不正确,可能会有点麻烦。 在撰写本文时,Corda不支持Flows中的多线程。 如果这样做,您将得到一些奇怪的错误。 话虽如此,这是可能的。 您可以在Corda服务中执行此操作,而该服务在Flow的范围之外运行。 通过将一些处理委托给服务,我们能够利用线程来启动新的Flow,每个Flow都是异步运行的,处理相似但分离的任务。

我在之前的Corda Services异步流调用文章中对此进行了介绍,该文章深入探讨了该主题,并解释了为什么您最终会在尝试时失败。

科尔达故事

使用Corda感觉如何?

我发现使用Corda相对简单。 当您尝试实现更复杂的用例时,确实会变得更加困难。 但是,在大多数情况下,许多流程可以遵循相同的简单结构。 在交易中添加一些状态,进行验证,让所有必要的各方签字并提交交易。

随着事情变得越来越复杂,您需要牢记哪一方需要做什么。 例如,花费现金。 作为发起者,您不能将他人的现金状态放入交易中。 您需要向他们发送一些信息,并要求他们将其添加到交易中。 像这样的场景花了我一段时间才能适应。 随着越来越多的开发人员花时间在Corda上工作,我相信这些概念将变得更容易理解。 将发布更多示例,并将分发有关如何编写良好Flow的知识。

此外,我支持Corda提出的关键概念 。 仔细阅读这些内容和提供的文档后,我对Corda的理解大大提高了。

关键概念– R3 Corda V3.3文档 本节介绍Corda平台的关键概念和功能。 适用于 docs.corda.net的新手。

向前进

现在,我不代表Corda或R3,但是由于我们在整个项目中都与他们紧密合作,因此我可以说该平台可能有所改进。

  • 使部署多个Corda节点更加容易。 R3与我们合作产生了一个框架,可以更轻松地部署节点,可以对其进行修改和推广,使其适合更广泛的受众。
  • 性能。 Corda代码中的一些区域可以进行调整,以便为获得良好的性能而让路。
  • 更好的多线程。 如前所述,这可以在Corda Services中完成,但有可能将其中一些转移到Flows中。 主要侧重于异步启动多个subFlow并等待其完成。

包起来

在项目快要结束时,它肯定很忙,但是我们在1个月内就能够实现巨大的性能提升,这是疯狂的。 一旦我们改进了CorDapp,以充分发挥其性能,我们的人数便从““”升至“哇”。 幸运的是,我们正确地设计了我们的网络以使这些数字成为可能。 如果网络没有按照原来的方式组合在一起,那么世界上所有的调整都将无法挽救它。

因此,Corda能否获得良好的吞吐量? 是。 是的你可以。 使用Corda Enterprise可以使更高的性能目标更容易实现,并且可以减少最终工作量。 但是,这并不是正确的想法。使用本文中介绍的信息,您应该对如何设计高性能Corda应用程序或网络有更好的了解。

展望未来,Corda的性能只会越来越好。 将其与如何设计应用程序的好主意相结合,应使您的数字从屋顶冒出来。

最后,在关闭这篇文章之前,我只想感谢R3,尤其是Stefano在此项目期间与我们紧密合作。

如果您认为这篇文章有帮助,可以在Twitter上@LankyDanDev关注我,以跟上我的新文章。

翻译自: https://www.javacodegeeks.com/2018/12/throughput-corda-story.html

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

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

相关文章

httpurlconnect设置中文参数_数控三菱CNC机床参数的设置及报警解除!

数控三菱CNC的硬件连接检查与设置执行完毕向系统送电后,显示器上的READY绿灯仍然不亮。而且在〔诊断〕――〔报警〕 画面上显示很多报警内容,哪些是开机时必须设置的呢?又如何解除故障报警呢?1.开机参数1.1 基本参数的设置原装系统…

计算机如何更新苹果系统,苹果系统怎么更新_苹果电脑mac如何更新升级系统-win7之家...

苹果电脑跟windows系统一样,也是会在发布之后不断的推送新版本让用户们进行升级,不仅可以修复bug还可以增加新功能,不过很多用户可能都会有一个疑问,就是苹果系统怎么更新呢?方法并不难,本文给大家讲述一下…

手术步骤_近视飞秒激光手术和传统Lasik手术比较

传统LasikLASIK手术操作时分为两个步骤:第一个步骤医生需要制作一个角膜瓣;第二个步骤是掀开角膜瓣,以准分子激光雕琢角膜,进行视力矫正,雕琢完毕后将角膜瓣复位即手术完成。传统的角膜制瓣是用机械式的设备与一个微型…

jenkins部署java_在Window上使用Jenkins自动部署和上传快照Java工件

jenkins部署java这篇文章将展示如何使用Jenkins Continuous Integration自动执行Java Web应用程序(使用MYSQL DB和基于Hibernate ORM在基于REST的Jersey2 Spring环境中开发的学生申请应用程序)的部署过程-生成项目,运行单元测试,上…

苹果电脑怎么更换计算机模式,图文详解苹果电脑如何切换成windows系统

苹果电脑默认安装的是Mac系统,有的人很喜欢,有一部分人却怎么都用不习惯,觉得windows系统用起来比较顺手。为了能提高办公效率,给苹果电脑安装双系统,那么有什么办法能将苹果电脑切换成windows系统?方法当然…

input内的字体颜色_嘉兴市硅胶喷涂颜色油订制

嘉兴市硅胶喷涂颜色油订制,博越硅胶服务惠万家,欢迎惠顾。嘉兴市硅胶喷涂颜色油订制, 而它配合硅胶原材制作时是按照相应的比例来进行分配在加上硫化剂的配合才能够得到制作产品的原材料,色母的性能选择也影响着一个产品的性能&am…

计算机部件动漫,因一个片段肝了整部番,电脑配件上榜,它满屏“虎狼之词”...

原标题:因一个片段肝了整部番,电脑配件上榜,它满屏“虎狼之词”现在的动漫行业格外迎来了鼎盛时期,就连以前不被看好的国漫最近几年也是突飞猛进。一部动漫想要有人看,就必定有自己的亮点,甚至一句话一个场…

获取周一_Ace足球网冬至版周一推介

WINTER SOLSTICE冬至冬至又称“冬节”、“贺冬”,华夏二十四节气之一、八大天象类节气之一,与夏至相对。Ace足球网祝全体球友冬至快乐身体健康 波运亨通Lorem Ipsum周一推介微信支付失败,请使用支付宝购买推介后请与Ace客服联系获取推介请勿相信其他客服…

oauth2和jwt_使用具有OAuth2的Web应用程序和JWT的使用来调用API – WSO2 API Manager

oauth2和jwt在这篇文章中,我将分享我在WSO2 API管理器(API-M)中针对行业中非常常见且有用的场景的经验和理解。 简要地说明以下流程。 公开了一个API,供应用程序开发人员在API管理器的控制下使用(这增加了对该API的访…

android listview 去掉水波纹效果_CocosCreator之分层管理的ListView

前言进入公众号回复listview即可获得demo的git地址。之前写的一篇文章《Creator之ScrollView那些事》中提到了官方Demo中提供的ListViewCtl,只是实现了纵向滑动,没有实现横向滑动。并且建议官方可以把功能做全然后放入组件库中供开发者使用。然后有个牛逼大神说这个…

小米小爱蓝牙音箱_UG绘制一个小米小爱同学蓝牙音箱

今天来绘制这么一个小米蓝牙音箱,渲染后的效果如下建模步骤:1打开UG,首先绘制一个直径为135mm的圆拉伸80mm。2在XZ平面上绘制草图,以Y轴旋转360度求差3整体抽壳2mm4继续在拉伸面上绘制这么一个大概的草图5选择草图的小圆&#xff…

ajax17,17个使用AJAX技术的数据表格控件

为了将数据高效的展示出来,数据需要有合适的结构,展现结构设计的越好,用户就越容易理解信息的内容。因此,提高数据的可萃取性和可扫描性非常有意义。表,是一个非常好的数据呈现结构,非常便于人们分析和理解…

tx2无法识别网络_织点智能算法大牛刘思伟:商品识别在收银结算场景的应用与落地...

线下门店消费越快捷、过程越便利,就越能吸引顾客的二次购物。相较于传统的人工收银方式,使用自助收银设备不仅可以减少顾客排队等候的时间,提升收银效率,同时对经营者来说,可以有效降低人工成本。目前,市面…

windows服务器网站日志,windows服务器网站日志文件

windows服务器网站日志文件 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。网页防篡改可实时监控网站目录,并通过备份恢…

初始化创建画布_使用HTML5,画布和开放数据创建全球降水(雨)可视化

初始化创建画布我目前正在为Three.js编写下一本书,其中一章涉及可视化开放数据。 在寻找可以使用的数据时,我遇到了来自NOAA的一组数据。 通过此站点,您可以以网格格式下载一组全世界的每月降水报告。 因此,我下载了它们&#xff…

星之卡比镜之迷宫机器人_机器人工程师入门(0)

前言:多年前看到一片知乎文章YY硕:机器人工程师学习计划​zhuanlan.zhihu.com当时看到这个,只觉醍醐灌顶,能看到有如此详尽的关于机器人工程师的个人技术发展规划,又不禁觉得有些遗憾,因为这个规划是本科大…

8代主板装服务器系统,微星B365主板搭配intel 8代cpu安装win7及bios设置教程

就在前不久发布华硕和华擎分别发布了b365主板,近期微星也发布了b365主板,有很多使用微星主板的网友问,微星B365主板其搭载intel 酷睿8代cpu可以安装安装win7吗?微星B365主板预装的是win10系统,用户还是喜欢win7系统&am…

autowired注入为 mapper为null_兰新高铁为区域经济发展注入活力

央视网消息 :连接甘肃兰州至新疆乌鲁木齐的兰新高铁,是我国“八纵八横”高速铁路网的重要组成部分。开通运营近六年来,兰新高铁已累计运输旅客6760多万人次,在推动地区协调发展,便捷旅客出行等方面发挥了重要作用。乘坐…

织梦同步静态文件到服务器,某猫织梦插件-织梦dedecms静态文件生成速度的区块插件...

经常使用织梦的朋友都可能都知道织梦cms 的静态生成速度有时候让人无法忍受;如果是企业展的几百篇的文章,那当然绰绰有余,但是一般数据量打起来生成速度也会大幅的降低,与同类的其他cms比如说帝国cms,还有phpcms相比差…

antlr4 代码 语法树_使用ANTLR4,用于代码镜像和基于Web的DSL的Primefaces扩展

antlr4 代码 语法树DSL是很酷的东西,但我不清楚它们有什么用。 然后我意识到它们对以下方面有好处: 摆脱复杂的UI 意思是 更快的做事方式 而已。 当我阅读此博客时,我得出了这个结论。 如果您的用户是技术人员,并且不惧怕类…