掌桥专利:专业的专利平台
掌桥专利
首页

区块链系统灰度发布方法、装置、设备及存储介质

文献发布时间:2023-06-19 11:54:11


区块链系统灰度发布方法、装置、设备及存储介质

技术领域

本发明涉及区块链技术、灰度发布技术,特别涉及一种区块链系统灰度发布方法、装置、设备及存储介质。

背景技术

区块链通过密码学技术实现了链上数据具有不可篡改的特性,该特性很大程度上保证了数据的可靠性,因此区块链技术在数据确权、信用管理、价值流转等方面具有较高的价值,得到了较为广泛的应用。但也正是因为链上数据不可篡改的特性导致了实现区块链系统的灰度发布变得异常困难。目前常见的灰度发布方法都存在将错误数据引入生产环境的风险,对生产环境数据的真实性造成较大的影响。

发明内容

本发明的目的在于针对现有技术的不足,提供一种适用于区块链系统的灰度发布方法及装置,在保证生产环境数据不被错误数据污染的情况下实现系统版本升级过程中的灰度发布。

根据本发明的第一方面,提供一种区块链系统灰度发布方法,包括以下步骤:

(1)根据区块链系统生产环境节点配置情况按一定比例搭建区块链系统灰度环境;

(2)将区块链生产环境数据同步到灰度环境;

(3)断开灰度环境与生产环境的链接,完成灰度环境节点版本升级,在升级过程中,保存生产环境节点产生的增量数据;

(4)灰度环境节点版本升级完成后,恢复与生产环境的链接,灰度环境节点将生产环境节点产生的增量数据写入本地区块;

(5)验证灰度环境节点新产生的区块数据的正确性,如果验证不通过则说明新版本存在问题需要回退,否则说明数据打包和数据写块的正确性已经通过验证,继续后续操作;

(6)升级生产环境中部分节点的区块链系统版本,升级节点的数量需要小于等于当前区块链集群的最大容错数量,验证每个节点区块数据和节点共识的正确性,如果某节点验证不通过则说明新版本存在问题需要回退,否则继续后续操作;

(7)完成生产环境中剩余区块链节点版本升级,最终完成区块链系统新版本发布。

进一步地,所述区块链系统可以为常见的联盟链或私有链的区块链底层系统,如czbChain、HyperLedger Fabric等。

进一步地,所述区块链灰度环境是指与生产环境完全隔离的区块链验证环境,从而保证了灰度环境的错误也不会对生产环境造成任何影响。

进一步地,所述区块链系统灰度环境可以是与生产环境完全对等的环境,也可以是满足集群容错要求等比例缩小节点数的集群环境,同样也可以为单一节点的集群。

进一步地,所述区块链系统灰度环境的部署模式可以是每个节点部署单一区块链实例,也可以是每个节点部署多个区块链实例。

进一步地,所述区块链系统灰度环境的区块链实例间的共识算法可以与生产环境共识算法保持一致,也可以选择其他不同的共识算法,如SOLO。

进一步地,所述数据同步指将接收到的原始区块数据进行还原解析得到原始的交易信息,并根据原始交易的顺序在灰度环境节点上进行交易重放,为与生产环境对比验证提供基础。

进一步地,所述步骤2中,引入与生产环境始终保持链接的区块数据同步装置,通过区块数据同步装置完成区块链生产环境与灰度环境的区块数据同步,保证生产环境节点与灰度环境节点的区块高度一致。

进一步地,所述步骤3中,断开灰度环境与区块数据同步装置的链接,完成灰度环境节点版本升级,在升级过程中,生成环境节点产生的交易数据由区块数据同步装置缓存。

进一步地,所述步骤4中,灰度环境节点版本升级完成后,恢复与区块数据同步装置的链接,灰度环境节点开始处理区块数据同步装置中缓存的数据并写入本地区块。

进一步地,所述步骤6中,升级生产环境中部分节点的区块链系统版本时,可以逐一或同时升级;所述步骤7中,可以逐一或部分同时或全部同时完成生产环境中剩余区块链节点的版本升级。

根据本发明的第二方面,提供一种区块链系统灰度发布装置,包括区块链系统生产环境、根据生产环境节点配置情况搭建的区块链系统灰度环境、区块数据同步装置和区块链数据验证装置;

所述区块数据同步装置,始终与区块链系统生产环境保持链接,用于区块链生产环境与灰度环境的区块数据同步;数据同步完成后,断开灰度环境与生产环境的链接;在灰度环境节点版本升级过程中,保存生产环境节点产生的增量数据;灰度环境节点版本升级完成后,恢复灰度环境与生产环境的链接;

所述区块链数据验证装置,用于根据预设规则对生产环境和灰度环境对于同一笔交易的打包结果、共识结果和区块数据进行验证,从而实现对新版本产生的交易数据的快速验证。

进一步地,所述区块数据同步装置可以结合常见的Kafka、RabbitMQ等消息队列中间件实现,主要提供从生产环境到灰度环境区块数据的同步、缓存以及区块数据解析转换功能。

进一步地,所述区块数据同步装置包括区块数据读取模块、区块接收队列、区块处理模块和交易发送队列;

所述区块数据读取模块,根据预先设定的同步参数从生产环境中选取部分区块链节点读取指定高度的区块数据,并将原始区块数据加密后存放到区块接收队列进行缓存;

所述区块处理模块,从区块接收队列中读取加密的区块数据,对区块数据进行解密后拆分还原出原始交易信息;对解析的交易信息进行排序检查,如果存在前序交易尚未发送的情况则将交易进行缓存,等到前序交易到达灰度环境后再写入交易发送队列,否则直接写入交易发送队列。

进一步地,所述区块链数据验证装置包括交易接收模块、区块查询模块和数据检验模块;

所述交易接收模块,用于对交易验证请求的相关参数进行验证,参数验证通过后通过区块查询模块从生产环境和灰度环境查询到具体的区块原始数据转发给数据检验模块;

所述数据检验模块,用于对区块数据的Hash值、区块解析出的交易要素信息进行比对,从而验证区块打包、区块数据写入以及区块共识的正确性。

根据本发明的第三方面,提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述区块链系统灰度发布方法的步骤。

根据本发明的第四方面,提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述区块链系统灰度发布方法的步骤。

本发明的有益效果是:本发明搭建单独隔离的区块链系统灰度环境,将实际的生产交易引流到灰度环境进行重放验证。在充分验证数据正确性的前提下,选取区块链集群的最大容错范围内的生产节点进行升级,对区块链的共识策略进行验证。灰度发布期间产生的错误数据均可以通过区块链系统自身的容错能力进行恢复。本发明能够在保证生产环境数据不被错误数据污染的情况下实现系统版本升级过程中的灰度发布。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例中的区块链系统灰度发布部署结构图;

图2为本发明实施例中的区块链系统灰度发布流程图;

图3为本发明实施例中的区块数据同步装置结构图;

图4为本发明实施例中的区块链数据验证装置结构图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

为解决常见灰度发布方法存在将错误数据引入生产环境的风险,本发明实施例提供一种区块链系统灰度发布方法。如图1所示,搭建单独隔离的区块链系统灰度环境,并通过区块数据同步装置将实际的生产交易引流到灰度环境进行重放验证。在经过充分验证数据正确性的前提下,选取区块链集群的最大容错范围内的生产节点进行升级,对区块链的共识策略进行验证。灰度发布期间产生的错误数据均可以通过区块链系统自身的容错能力进行恢复。通过以上方法实现了在避免错误数据对生产环境污染的前提下完成了版本的灰度发布。

图2是本发明实施例中的区块链系统灰度发布方法的流程示意图。如图2所示,该区块链系统灰度发布方法可以包括以下内容:

S100:搭建区块链系统灰度环境。

具体的,参考区块链系统生产环境搭建区块链系统灰度环境。其可以结合具体需求按照与生产环境1:1、等比例缩小的方式搭建灰度环境,也可以通过单一节点上部署多实例的方式进行搭建。区块链系统灰度环境的区块链实例间的共识算法可以保持与生产环境一致,也可以选择其他不同的共识算法,如SOLO。

S200:搭建和配置区块数据同步装置。

具体的,区块数据同步装置主要是用于将生产环境真实产生的交易区块数据解析还原为区块链交易转发给区块链灰度环境进行交易重放,因此需要提前配置好需要同步的生产环境节点以及开始同步的区块高度等信息并开启数据同步。

S300:灰度环境同步生产环境区块数据。

具体的,为保证灰度环境数据验证的真实性,在开始灰度发布验证之前,需要保证灰度环境数据与生产环境数据的一致性,因此需要从创始区块开始将完整的区块数据同步至灰度环境。当然,也可以结合实际的验证需求从步骤S200配置的区块高度开始进行区块数据同步,从而加快区块数据的同步效率。

S400:灰度环境节点版本升级。

具体的,灰度发布的主要目的还是为了验证区块链系统新版本程序的正确性,因此优先升级灰度环境的程序版本,如图1中所示灰度节点1的版本升级为V2版本,并通过新版本程序执行真实的生产交易进而验证版本的正确性。

S500:使用区块链数据验证装置验证正确性。

若验证通过则执行步骤S700;若验证不通过则执行步骤S600;

具体的,区块链数据验证装置主要用于验证新版本程序打包的区块数据以及写入区块链中的区块数据的正确性。

S600:灰度环境节点回退。

此时错误对生产环境无影响,断开并关闭区块数据同步装置,将灰度节点清空即可。

S700:选取生产环境单一节点升级版本。

具体的,步骤S500已经完成了区块数据打包和区块数据写入的正确性的验证,但还需要进一步对区块链共识机制以及新旧版本共存下交易处理的正确性进一步验证,因此需要在生产环境中选择单一节点升级版本验证。

具体的,对于单一节点具有多个实例的情况,选择单一实例进行升级版本验证。

S800:使用区块链数据验证装置验证正确性。

若验证通过则执行步骤S1000;若验证不通过则执行步骤S900;

具体的,在此步骤中区块链数据验证装置主要用于区块链共识机制的正确性验证。

S900:已升级节点(实例)从区块链集群中断开。

具体的,由于新版本验证不通过,为了防止错误对生产系统的影响,需要将该节点(实例)从生产的区块链集群中断开。

S910:已升级节点(实例)版本回退并清空区块数据。

由于已升级节点(实例)已经存储错误数据,因此需要将已升级的版本回退并清空区块数据。

S920:已升级节点(实例)重新加入生产环境区块链集群并重新同步区块数据。

已升级节点(实例)回退后可以再次加入到生产区块链集群中,由区块链系统自身的同步机制完成生产数据的同步和恢复。

S1000:判断当前已升级节点数(实例数)是否小于等于集群最大容错数。若是,则执行步骤S700;若否:则执行步骤S1100。

具体的,由于区块链系统自身存在容错机制,为了更加充分的对新版本程序进行验证,最大程度的降低生产风险,因此在区块链系统自身容错的能力范围内逐一对单个节点(实例)进行升级验证。本实施例以逐一升级为例,但不限于此,也可以部分同时升级。

S1100:完成全部节点(实例)版本升级。

图3是本发明实施例中的区块数据同步装置结构图。如图3所示,该装置主要由区块数据读取模块10、区块接收队列20、区块处理模块30、交易发送队列40四部分组成。

区块数据读取模块10根据预先设定的同步参数从区块链系统生产环境中选取部分区块链节点(实例)读取指定高度的区块数据,并将原始的区块数据进行加密后存放到区块接收队列20进行缓存。

区块处理模块30从区块接收队列20中读取加密后的区块数据,对区块数据进行解密,并将解密后的区块数据进行拆分还原出原始的交易信息。为了保证灰度环境交易重放的顺序与生产环境一致,区块处理模块30在将交易数据写入交易发送队列40前会对已经解析的交易信息进行排序检查,如果存在前序交易尚未发送的情况则会将交易进行缓存,等到前序交易到达灰度环境后再写入交易发送队列40,否则直接写入交易发送队列40进行交易发送。

图4是本发明实施例中的区块链数据验证装置结构图。如图4所示,区块链数据验证装置由交易接收模块410、区块查询模块420、数据检验模块430三部分组成。

交易接收模块410主要对交易验证请求的相关参数进行验证,其中交易验证请求的范围可以通过业务交易的主键、交易时间、交易人员公钥地址等参数进行指定。参数验证通过后通过区块查询模块420从生产环境和灰度环境查询到具体的区块原始数据转发给数据检验模块430进行验证。数据检验模块430主要通过比对区块数据的Hash值、区块解析出的交易要素信息来验证区块打包、区块数据写入以及区块共识的正确性。

在一个实施例中,提出了一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中区块链系统灰度发布方法中的步骤。

在一个实施例中,提出了一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述各实施例中区块链系统灰度发布方法中的步骤。其中,存储介质可以为非易失性存储介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。

以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

相关技术
  • 区块链系统灰度发布方法、装置、设备及存储介质
  • 一种灰度发布方法、装置、存储介质、设备及系统
技术分类

06120113098820