混沌工程原理在区块链框架中的应用

2019-01-06 13:32 栏目:经验之谈 来源: 查看()
混乱和工程这两个词似乎并不相关。在本文中,我们将探讨为什么它们可以链接在一起并进一步讨论该工程学科在区块链中的应用。本节的第2部分将重点介绍Superbook Indy中混沌工程的具体实现。我们使用了首字母缩写——混沌实验框架(CEF),这在业界并不常见。在本文中,它作为简短形式的使用纯粹是为了方便。

混沌工程原理在区块链框架中的应用

这是一个由大规模分布式系统组成的微服务时代。 Netflix,linkein,Medium,亚马逊,Microsoft Azure,Uber,AirBnB等。没有人,甚至整个建筑师和程序员团队都希望能够牢记这个分布式系统的复杂架构。甚至这种系统的静态配置也包括在异构硬件或云上运行的多个服务,通过在多个边缘设备上运行的多个sla和用户界面(ui)的网络连接。结合这种静态复杂性,这种系统的实时行为引入了来自用户和驱动网络系统的过程组件的独立输入的叠加。

组件可能会崩溃,降级或行为不正常。恶意或无能的用户无处不在。混沌工程是在这个时代发展起来的,最初是一种测量这种系统的粗略方法;通过会议,工具和广泛采用来实践哲学和广泛接受的方法。

你可能会说,像比特币和以太坊这样的未经许可的公共区块链网络存在于混乱的环境中。他们在不知不觉中陷入混乱。节点连接到网络,恶意攻击者不断探测系统,网络连接中断。这种混乱和混乱的工程是不同的。混沌工程是一门工程学科,它使用实验数据来揭示系统缺陷。

首先,我们介绍了混沌工程的一些基本历史和原理,以及混沌工程在现有分布式系统中的应用。有一个混沌工程的开源存储库称为混沌工具包。混沌工具包是开源的,使用开放式API来表示实验,以促进混乱的工程交互。该工具包可以使用开放API进行扩展,并且已经可以从Kubernetes,AWS,Azure等获得一些驱动程序。它还可用于在持续集成和构建中自动化混沌工程。

在本系列的第二篇文章中,我们将查看开源“混沌”工具包,并了解它如何在Hyperledger Indy中用于这些实验。这将激励人们密切关注自己的DLT平台,并创建一个复杂的混沌实验套件来增强自己的平台。

纵观历史

自2008年Netflix开始将服务器从数据中心迁移到云端以来,他们的工程师一直在生产中进行某种形式的弹性测试。直到后来他们对它的研究被称为混沌工程。 Chaos Monkey开始了这种做法,因其在生产环境中关闭服务而闻名。混乱的原则使这门学科正式化。 Netflix的混沌自动化平台24/7在其生产微服务架构上运行Chaos实验。

对于那些对混沌工程感兴趣的人来说,这里有一个精心编制的资源清单。 O'Reilly发表了一篇关于混沌工程的优秀背景文章,该文章免费提供。因为O'Reilly需要注册才能下载链接,因此不提供任何链接。

混沌工程的实践

为了在规模上解决分布式系统的弱点,混沌工程可以看作是发现系统弱点实验的创建和运作。这些表面缺陷可以作为系统限制来解决。可以通过重复实验来验证该弱点。

第一步是测量系统的稳定状态。该系统的输出是已知的。需要稳定的轻触监控系统来测量系统的稳态。触摸意味着测量的行为不会显着改变系统的行为。稳态发现需要回答以下问题。

·测量什么?系统变量(例如cpu使用,内存消耗)或业务变量(例如响应时间和其他特定于应用程序的度量)。有时指标涵盖两个方面。

·稳态时间相关元素吗?不同时间或季节的使用和资源利用模式可能每天都不同。

下面给出了设计实验的指导,并建立了混沌工程框架(CEF)和从区块链角度运行的过程。

·已知的弱点不应成为实验的主题。如果1/3攻击破坏了共识(对于BFT),那么关闭致命的共识成员百分比已经知道后果并且无法从这些实验中获得洞察力。在一些实验中,该数字可能低于临界阈值。

·对于区块链,混乱的工程实验应该通过随机实验关注共识,网络,存储层和交叉元素,如身份,智能合约,治理和用户交互。当我们在第二篇文章中讨论Indy的现有混沌实践时,我们可以看到这种实践是如何应用的。随机实验。了解稳态研究中资源利用和系统响应的周期,并密切关注实验中应用的任何特殊情况。

·当实验揭示底层框架中的弱点时,您应该提供尽可能多的信息来隔离进程,api或系统行为的组合。这有助于修复系统,使其不会以相同的方式发生故障。

·混沌工程与单元测试和集成测试不同。这与执行故障注入和故障测试不同。 CEF可以使用一些故障注入工具。故障注入和故障测试通常仅针对一次一种故障模式。混沌工程旨在通过随机事件组合揭示系统的新知识;包括良性或有益的情况,例如客户流量激增。除了传统的测试工具和实践外,还应该实施混乱的工程实践。

·从网络的开发和测试开始,我们将在修复未发现的问题后逐步生产,以确保此类网络的完整性。小型过程停机的非线性效应只能在生产中观察到。

·与整个团队沟通和协作,特别是devops工程师和开发团队。强调混沌工程不是一种对抗性的情况;以及实验如何加强整个系统。可以通过具体示例讨论开发活动的上层(包括架构,设计和工程实现)的优点。此外,您还需要与企业的业务部门进行通信。

·从时间和实验本身随机化实验。注意在稳态研究期间收获的资源利用期和系统响应期,同时注意实验期间适用的任何特殊情况。

·自动化实验的操作,包括快速关闭实验的方法,特别是在生产环境中进行实验时。当然,这意味着自动监控,以及混沌框架和监控系统之间的某种形式的耦合。

·避免中途。实验结果不应对生产造成太大损害。上面讨论的各种步骤应该有助于实现这一目标。人们可以将系统分为两部分;不受实验干扰的控制系统,处于混沌状态的系统,并且还可以通过测量观察实验的效果。这是混沌工程的高级实践。

·Scale:在Netflix上,使用Chaos Monkey仅关闭单个进程或vm,然后逐步升级到Chaos Kong以关闭整个数据中心或区域。通过这种方式,他们可以看到整个地区的失败影响。

·混沌成熟度模型;谈谈混沌工程的成熟度。各种轴:开发系统生产;实验多样性和复杂性;混沌工程自动化水平研究团队熟悉实践是一个连续的过程;实验的规模。 DLT系统在每个轴上处于不同的级别。成熟度模型具有一些粗略的现成名称,具体取决于系统在过程中的位置。基本,简单,复杂,先进等。确定这一点的分类可以在上面引用的书中找到。

·区块链框架在具有公共区块链或许可区块链的多企业环境中最有效。在公共区块链中,环境不受单一类型的实体控制。第一个挑战是在多利益相关方环境中创建,沟通和执行CEF。使用持续进修基金的好处应该非常明确。如果CEF是在开发的初始阶段建立的,那么这不应该构成重大挑战,因为开发人员,业务用户和运营商对平台稳定性的期望值较低。然后应允许继续教育基金与DLT框架的其余部分一起成长,并成为生态系统的自然组成部分。持续进修基金的执业协议应经双方批准,成为管理事宜的初步协议和讨论的一部分。

·对于公共区块链,采用开发者社区并与其他参与者明确沟通是采用区块链的必要条件;从完善的测试网络到CEF部署的生产系统的路径。这可能并不容易,因为公共区块链的利益相关者和治理方面不断出现和发展。存在危机,例如以太坊中的EAO黑客事件,或比特币的规模,这暴露了系统的脆弱性并提出了一些特殊的解决方案。良好的CEF和混乱成熟度模型的进步可能暴露了这些漏洞并寻找早期开始的解决方案。核心和边缘系统中还有许多其他漏洞,而发展良好的持续教育基金可能会针对这些漏洞。

·在企业区块链中,必须建立联邦测试网络才能将CEF投入生产。大多数企业区块链都是如此。

·另一点是关于推动CEF工程实践的具体实施。例如,在超级分类结构中,认可策略指导共识的形成,因此在认可策略的认可之前删除代言人揭示了具体实施的弱点。在Corda,参与公证网络会导致部分网络流量延迟,从而干扰Corda防火墙。

结论

回顾当前大规模分布式系统中的混沌工程实践,揭示了混沌工程的潜力和作用。许多公司的采用,包括在生产系统中实施的飞机测试和医院系统,都证明了它的有用性,即使在敏感的应用中也是如此。

在区块链框架中设计实验需要结合框架中的专业知识,接触《集成框架》背后的原则,以及组建一个在所有级别工作的团队,以创建一个平台驱动的方法,增强实施的可信度具体实施,从而促进采用。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发