发明内容
本申请提供了一种基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的方法及装置,能够解决区块链手动进行部署配置、缺乏快速有效的检测机制以及故障或者异常情况的模拟是目前需要解决的问题。本申请提供如下技术方案:
第一方面,本申请提供一种基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的方法,所述方法包括:
准备统一的自定义环境配置文件,读取配置文件,创建区块链;
区块链创建之后,导入Go语言的ethclient包并调用API函数,随后对已创建的区块链进行自动检测,检测后返回检测结果;
通过配置文件创建节点故障模拟方案,读取故障模拟方案,调用ChaosBlade进行故障模拟;
区块链故障模拟时,通过检测测试区块链运行状态自动生成报告。
在一个具体的可实施方案中,所述配置文件包括创世区块的配置信息和节点配置信息,创世区块配置信息主要包括链ID,出块难度等;节点配置信息主要包括节点数量,IP地址,端口号等;
所述读取配置文件,创建区块链包括:首先读取创世区块的配置信息,并生成对应的创世块文件,执行初始化,随后再读取节点的配置信息,根据节点数量、IP地址以及端口号等创建并启动节点,同时自动创建测试账号。
在一个具体的可实施方案中,所述对已创建的区块链进行自动检测中,检测包括当前区块高度,节点数量,状态,进行测试交易,连续进行交易计算平均交易时间,以及创建并测试智能合约。
在一个具体的可实施方案中,所述通过配置文件创建节点故障模拟方案,读取故障模拟方案,调用ChaosBlade进行故障模拟包括:
通过配置文件创建节点故障模拟方案,模拟各个节点发生不同的故障,可模拟的故障包括CPU出现高负载、内存异常占用、网络延迟或丢包比例过高等;程序读取故障模拟方案后,调用ChaosBlade进行故障模拟。
在一个具体的可实施方案中,所述区块链故障模拟时,通过检测测试区块链运行状态自动生成报告包括:当区块链故障模拟发生时,程序通过检测区块高度,节点状态,重复进行交易测试,检查交易时间,重复创建和调用智能合约等测试区块链运行状态,和初始结果比较,最终生成比较的结果报告。
第二方面,本申请提供一种基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的系统,采用如下的技术方案:
一种基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的装置,包括:
区块链创建模块,用于准备统一的自定义环境配置文件,读取配置文件,创建区块链;
区块链检测模块,用于区块链创建之后,导入Go语言的ethclient包并调用API函数,随后对已创建的区块链进行自动检测,检测后返回检测结果;
故障模拟模块,用于通过配置文件创建节点故障模拟方案,读取故障模拟方案,调用ChaosBlade进行故障模拟;
报告生成模块,用于区块链故障模拟时,通过检测测试区块链运行状态自动生成报告。
第三方面,本申请提供一种电子设备,所述设备包括处理器和存储器;所述存储器中存储有程序,所述程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的一种基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的方法。
第四方面,本申请提供一种计算机可读存储介质,所述存储介质中存储有程序,所述程序被处理器执行时用于实现如权利要求1至7任一项所述的一种基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的方法。
综上所述,本申请的有益效果至少包括:
1)通过自定义配置文件,灵活定义区块链全局参数和节点数量等,通过Go语言读取配置自动执行,实现了快速、可靠和自动化的区块链部署。相较于传统的手动部署方式,自动化部署能够大大提高部署效率,减少人工错误,并确保部署的一致性和可重复性,提供了测试效率。
2)将ChaosBlade技术与区块链结合,实现故障方案自定义和故障引入,通过自动读取和触发,可模拟各种故障和异常情况,可评估系统在不稳定环境下的鲁棒性和可靠性,为区块链系统的容错和恢复能力提供了有效的验证手段。
3)通过程序自动测试,可以对区块链交易和合约等项目进行检测,同时通过详尽的报告可反映区块链的详细状况,结合系统在故障场景下表现可用来评估系统的可靠性,以便开发团队和管理人员分析和优化系统的性能。
通过减少手动操作,引入自动化工具或脚本自动执行配置任务,通过标准配置文件和模版进行区块链本地测试环境的搭建和启动;通过在代码中调用区块链基本的命令行的方式进行区块链状态检测,如获取区块高度,获取节点状态,获取账号余额,转账交易,获取交易时间等,同自动显示检测结果报告;通过ChaosBlade对节点引入各种故障情况,如CPU,内存,网络等各种异常场景,协助区块链可靠性测试;能够有效解决区块链需要手动进行部署配置、缺乏快速有效的检测机制以及如何进行故障或者异常情况模拟的问题。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,并可依照说明书的内容予以实施,以下以本申请的较佳实施例并配合附图详细说明如后。
具体实施方式
下面结合附图和实施例,对本申请的具体实施方式做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
首先,对于本申请所涉及的若干名词进行介绍。
区块链技术是一种分布式数据库技术,通过使用密码学和共识算法,可以确保数据的透明性、不可篡改性和去中心化特性。随着区块链技术的发展,它已经广泛应用于金融、供应链管理、物联网等众多领域,并在保护数据安全和促进交易可追溯性方面展现出巨大潜力。
混沌测试(Chaos Testing)是一种测试方法,通过在系统中引入故障、异常和不可预测的情况,以评估系统的容错性和稳定性。混沌测试旨在模拟真实环境中的各种故障情况,以验证系统在面对异常情况时的行为和表现。
ChaosBlade是一个功能强大的混沌工程工具,专门用于进行混沌测试。它由阿里巴巴集团开发,并于2017年开源。ChaosBlade提供了丰富的故障注入和异常模拟功能,可以模拟网络延迟、CPU负载等各种情况。通过使用ChaosBlade,测试人员可以有针对性地注入故障,观察系统的响应和恢复能力,从而更好地了解系统的弱点和改进空间。
在区块链领域,ChaosBlade可以用于对区块链系统进行混沌测试,以验证系统的容错能力和稳定性。通过使用ChaosBlade评估系统在这些异常情况下的表现和恢复能力。这有助于发现潜在的问题,改进系统的鲁棒性,并提高区块链系统的可靠性。
本申请的主要实现工具包括Go程序、Geth以太坊客户端、ethclient、JSON以及ChaosBlade等。
参照图1,是本申请一个实施例提供的基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的方法的流程示意图,该方法至少包括以下几个步骤:
步骤101,准备创世区块和节点的统一配置文件。
首先准备统一的自定义的环境配置文件,具体的,环境配置文件的格式为JSON格式,可选地,也可以是XML格式或者YAML格式等,本申请不对配置文件的格式作出限制。
在实施中,配置文件包括创世区块的配置信息和节点配置信息,创世区块配置信息主要包括链ID,出块难度等。节点配置信息主要包括节点数量,IP地址,端口号等。
步骤102,读取配置文件,创建区块链。
配置文件准备好之后,Go程序读取步骤101中的配置文件,具体的,首先读取创世区块的配置信息,并生成对应的创世块文件(genesis.json),执行初始化,随后再读取节点的配置信息,根据节点数量、IP地址以及端口号等创建并启动节点,同时自动创建测试账号。
通过Go语言读取配置自动执行,实现了快速、可靠和自动化的区块链部署。相较于传统的手动部署方式,自动化部署能够大大提高部署效率,减少人工错误,更为地灵活定义区块链全局参数和节点数量,并确保部署的一致性和可重复性,提供了测试效率。
步骤103,对区块链进行快速初始检测。
区块链创建之后,导入Go语言的ethclient包并调用API函数,用Go初始化以太坊客户端是和区块链交互所需的基本步骤,因此导入Go语言的ethclient包是一个必要条件。
随后对已创建的区块链进行自动检测,检测包括当前区块高度、节点数量、状态、进行测试交易、连续进行交易计算平均交易时间、以及创建并测试智能合约,检测后返回所有检测结果。
通过程序自动测试,可以对区块链交易和合约等项目进行检测,同时通过详尽的报告可反映区块链的详细状况,结合系统在故障场景下表现可用来评估系统的可靠性,以便开发团队和管理人员分析和优化系统的性能。
步骤104,区块链节点故障模拟。
通过配置文件创建节点故障模拟方案,模拟各个节点发生不同的故障,可模拟的故障包括CPU出现高负载、内存异常占用、网络延迟或丢包比例过高等;程序读取故障模拟方案后,调用ChaosBlade进行故障模拟。
将ChaosBlade技术与区块链结合,实现故障方案自定义和故障引入,通过自动读取和触发,可模拟各种故障和异常情况,可评估系统在不稳定环境下的鲁棒性和可靠性,为区块链系统的容错和恢复能力提供了有效的验证手段。
步骤105,区块链可靠测试和报告。
当区块链故障模拟发生时,程序通过检测区块高度,节点状态,重复进行交易测试,检查交易时间,重复创建和调用智能合约等测试区块链运行状态,和初始结果比较,并自动生成报告。
接下来举例说明:通过配置文件来创建一个以太坊测试网络。首先,根据预定义的配置文件,配置其中创世区块的一些常用参数,如区块链ID,随机数等,根据参数,程序中会根据配置自动生成genesis.json文件,用作之后创建的基础。然后,再根据预定的配置,准备节点配置信息,节点配置信息包括节点IP,网络端口,网络ID等。配置文件都准备好之后,程序通过使用自动生成的创世文件,调用客户端,创建各个区块链的节点,并保证相互链接。创建完成后,开始进行状态检测,包括区块链高度,节点数量,同时通过客户端创建交易,连续创建多笔交易检测平均交易时间,并对智能合约进行检测,检测后返回所有检测结果,汇总上述的步骤,形成检测的报告。准备的预设故障方案如配置某个节点CPU满载个数,例如2;设置CPU负载百分比,例如50;设置某个节点磁盘填充,例如size40000;设置节点磁盘的使用率,例如80;设置节点内存负载率,例如70;设置网络延迟时间,例如time3000,上述故障方案均是通过ChaosBlade的命令行实现,通过引入各种故障情况来观察此时区块链的可靠性,此时重复调用区块链高度,节点数量,创建交易等,和初始结果比较,最终形成比较的结果报告。
图2是本申请一个实施例提供的基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的系统架构图。如图2所示,系统包括:
1)底层计算机网络和硬件层。计算机网络层和硬件层提供了底层的网络基础设施,以支持上层的应用和服务。
2)中间区块链层。位于计算机网络层之上是区块链层,提供了区块链的节点管理、账本记录、加密解密、共识机制等。
3)区块链API层。构建在区块链之上的应用程序接口(API)层,它允许开发人员与区块链进行交互,执行各种操作,如发送交易、查询数据等。
4)ChaosBlade故障检测模块,ChaoBlase本身包括了Agent组件、不同的实验模块(如内存、CPU、网络以及磁盘)、监控和日志模块以及故障模拟检测模块,通过CLI进行交互并执行故障模拟方案。
5)创建和检测模块,包括了读取创建模块、初始检测模块和检测报告模块,通过读取创世块配置文件和节点配置文件创建区块链。
6)故障比对和报告层:用于生成和展示故障比对报告。在系统经历了ChaosBlade模块引入故障的测试之后,这一层会收集并分析系统的行为。
应用程序通过区块链API与区块链交互,区块链层处理交易和数据,ChaosBlade模块引入故障来测试系统的鲁棒性,区块链自动部署检测模块用于部署和检测区块链网络。最后,在故障比对和报告层,系统的行为和性能将被分析并生成相应的报告,各个模块和层次之间的交互都通过Go进行调用和通信。
综上所述,通过减少手动操作,引入自动化工具或脚本自动执行配置任务,通过标准配置文件和模版进行区块链本地测试环境的搭建和启动;通过在代码中调用区块链基本的命令行的方式进行区块链状态检测,如获取区块高度,获取节点状态,获取账号余额,转账交易,获取交易时间等,同自动显示检测结果报告;通过ChaosBlade对节点引入各种故障情况,如CPU,内存,网络等各种异常场景,协助区块链可靠性测试;能够有效解决区块链需要手动进行部署配置、缺乏快速有效的检测机制以及如何进行故障或者异常情况模拟的问题。
图3是本申请一个实施例提供的基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的装置的流程示意图。该装置至少包括以下几个模块:
区块链创建模块310,用于准备统一的自定义环境配置文件,读取配置文件,创建区块链;
区块链检测模块320,用于区块链创建之后,导入Go语言的ethclient包并调用API函数,随后对已创建的区块链进行自动检测,检测后返回检测结果;
故障模拟模块330,用于通过配置文件创建节点故障模拟方案,读取故障模拟方案,调用ChaosBlade进行故障模拟;
报告生成模块340,用于区块链故障模拟时,通过检测测试区块链运行状态自动生成报告。
相关细节参考上述方法实施例。
图4是本申请一个实施例提供的电子设备的框图。该设备至少包括处理器401和存储器402。
处理器401可以包括一个或多个处理核心,比如:4核心处理器、8核心处理器等。处理器401可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器401也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器401可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器401还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器402还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器402中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器401所执行以实现本申请中方法实施例提供的基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的方法。
在一些实施例中,电子设备还可选包括有:外围设备接口和至少一个外围设备。处理器401、存储器402和外围设备接口之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口相连。示意性地,外围设备包括但不限于:射频电路、触摸显示屏、音频电路、和电源等。
当然,电子设备还可以包括更少或更多的组件,本实施例对此不作限定。
可选地,本申请还提供有一种计算机可读存储介质,计算机可读存储介质中存储有程序,程序由处理器加载并执行以实现上述方法实施例的基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的方法。
可选地,本申请还提供有一种计算机产品,该计算机产品包括计算机可读存储介质,计算机可读存储介质中存储有程序,程序由处理器加载并执行以实现上述方法实施例的基于Go语言以及ChaosBlade的区块链自动部署及混沌测试的方法。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。