一种基于区块链的数据上链异常重试方法与流程

文档序号:20437751发布日期:2020-04-17 22:11阅读:1247来源:国知局
一种基于区块链的数据上链异常重试方法与流程

本发明涉及基于区块链的数据上链领域,尤其涉及一种基于区块链的数据上链异常重试方法。



背景技术:

区块链技术,区块链是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案,是比特币、以太币等数字货币的底层技术。通俗一点说,区块链技术就指一种全民参与记账的方式。区块链上的交易确认由区块链上的所有节点共识完成,共识成功后打包写入区块。区块链维护一个公共的账本,用于存储区块链网络上所有交易,所有的系统背后都有一个数据库,你可以把数据库看成是就是一个大账本。那么谁来记这个账本就变得很重要。目前就是谁的系统谁来记账,微信的账本就是腾讯在记,淘宝的账本就是阿里在记。这种方式,我们就称它为区块链技术。由于区块链技术将账本由每个节点进行保存,对单一节点的账本修改不被其他节点所认可,通过该机制保证区块链中的数据是不可篡改的,存储数据到区块链中数据本身不会有被修改的风险。但是现在调用区块链服务时可能由于网络或其他原因出现的上链失败的情况。

传统的数据上链场景一般采用同步上链的方式,同步上链的场景由于上链的速度较为缓慢,与其他业务流程处理速度不匹配,会限制整体系统的吞吐能力。通过异步上链可以进行一个持续的延时数据消费,达到最终的数据上链目的。在现有方案中,上链异常时一般即时处理,立刻进行数据的重新上链,这样的行为在区块链短时无法提供服务的情况下容易造成数据过度重试的情况,如果在上链逻辑过程中服务宕机则需要考虑重启后处理之前上链流程进行一半的数据,导致处理逻辑较为复杂。



技术实现要素:

针对现有技术的不足,本发明提出一种基于区块链的数据上链异常重试方法,通过使用扫描检测这个逻辑行为作为一个资源进行独占,而使上链行为在分布式环境下一直并发进行。具体技术方案如下:

一种基于区块链的数据上链异常重试方法,其特征在于,区块链底层由各区块链节点组成,维护一个区块链网络,所述的区块链网络作为信息存储的基础,用于存储业务系统需要的一系列信息或数据;所述的业务系统包括若干个相同的上链模块和若干个相同的扫描检测模块,所述的业务系统将需要上链的数据通过所述的上链模块进行上链,并通过所述的扫描检测模块定时对上链失败记录进行扫描,所述的扫描检测的步骤如下:

s1:所有的扫描检测模块等待到达预设的时间节点或时间间隔;

s2:所有的所述的扫描检测模块均尝试获取分布式锁,获取到分布式锁的扫描检测模块进行后续逻辑,未获取到分布式锁的扫描检测模块则进入休眠状态,返回s1;

s3:获取到分布式锁的扫描检测模块对区块链的状态进行检测,如果区块链本身出现不可用的情况,则此时无法进行上链操作,扫描后重上链的步骤也无法执行,则扫描检测模块记录相关情况并进行报警,并返回s1;如果区块链正常,则逐条扫描上链失败的记录,通过扫描存储上链信息的数据库获得记录的上链状态、尝试上链次数以及上链失败的原因,判断是否能够尝试重新上链;如果当前的记录符合重新上链的要求,扫描检测模块将记录传输给上链模块尝试重新上链,直到上链成功或达到出错阈值次数;如果当前的记录不符合重新上链的要求,则直接扫描下一条上链失败的记录,直到所有上链失败的记录扫描完毕,返回s1。

进一步地,扫描检测模块将记录传输给上链模块时通过直接调用或消息队列传输的方式。

进一步地,数据库中存储包含业务数据的区块链交易序列化内容,在重新上链时将该序列化交易反序列化后发送至区块链进行尝试上链。

进一步地,所述的扫描检测模块为多个。

本发明的有益效果如下:

(1)本发明的基于区块链的数据上链异常重试方法使用了独立的扫描检测模块,相较于传统的出现异常立即重试的方式减少了逻辑的复杂度,模块职责分别,可以防止现有方案由于服务宕机导致的部分数据上链中断丢失的情况。

(2)本发明的上链模块和扫描检测模块在使用时水平部署若干份,防止由于单个模块宕机导致的整体系统的不可用。

(3)本发明的扫描检测模块结合了分布式锁技术,保证了同一时间只有一个扫描检测模块进行逻辑处理,防止多扫描检测模块同时执行导致的数据重发,在执行逻辑的扫描模块宕机情况下,会有其他扫描检测模块获取分布式锁进行逻辑执行,提供了整体系统的可用性。

附图说明

图1为本发明的基于区块链的上链重试方法的扫描检测并重上链的流程图。

具体实施方式

下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

区块链上的信息由于其不可篡改的特性可以保证数据本身可信,将数据保存到区块链中之后可以防止记录后续被修改,能够保证存储的安全性。使用区块链来存储数据时可能会因为网络或其他原因导致上链失败,此时需要有一个机制来将上链失败的记录进行重新上链的操作,从而在网络波动或其他情况下实现较高的上链成功率。

本发明的基于区块链的数据上链异常重试方法,区块链底层由各区块链节点组成,维护一个区块链网络,区块链网络作为信息存储的基础,用于存储业务系统需要的一系列信息或数据;业务系统包括若干个相同的上链模块和若干个相同的扫描检测模块,业务系统将需要上链的数据通过上链模块进行上链,并通过扫描检测模块定时对上链失败记录进行扫描,扫描检测的步骤如下(如图1所示):

s1:所有的扫描检测模块等待到达预设的时间节点或时间间隔;

s2:所有的扫描检测模块均尝试获取分布式锁,获取到分布式锁的扫描检测模块进行后续逻辑,未获取到分布式锁的扫描检测模块则进入休眠状态,返回s1;

s3:获取到分布式锁的扫描检测模块对区块链的状态进行检测,如果区块链本身出现不可用的情况,则此时无法进行上链操作,扫描后重上链的步骤也无法执行,则扫描检测模块记录相关情况并进行报警,并返回s1;如果区块链正常,则逐条扫描上链失败的记录,通过扫描存储上链信息的数据库获得记录的上链状态、尝试上链次数以及上链失败的原因,判断是否能够尝试重新上链;如果当前的记录符合重新上链的要求,扫描检测模块将记录传输给上链模块尝试重新上链,直到上链成功或达到出错阈值次数;如果当前的记录不符合重新上链的要求,则直接扫描下一条上链失败的记录,直到所有上链失败的记录扫描完毕,返回s1。

优选地,扫描检测模块将记录传输给上链模块时通过直接调用或消息队列传输的方式。数据库中存储包含业务数据的区块链交易序列化内容,在重新上链时将该序列化交易反序列化后发送至区块链进行尝试上链。

扫描检测模块为多个,防止其中一个模块异常关闭后整体扫描检测功能的不可使用。

本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。



技术特征:

1.一种基于区块链的数据上链异常重试方法,其特征在于,区块链底层由各区块链节点组成,维护一个区块链网络,所述的区块链网络作为信息存储的基础,用于存储业务系统需要的一系列信息或数据;所述的业务系统包括若干个相同的上链模块和若干个相同的扫描检测模块,所述的业务系统将需要上链的数据通过所述的上链模块进行上链,并通过所述的扫描检测模块定时对上链失败记录进行扫描,所述的扫描检测的步骤如下:

s1:所有的扫描检测模块等待到达预设的时间节点或时间间隔;

s2:所有的所述的扫描检测模块均尝试获取分布式锁,获取到分布式锁的扫描检测模块进行后续逻辑,未获取到分布式锁的扫描检测模块则进入休眠状态,返回s1。

s3:获取到分布式锁的扫描检测模块对区块链的状态进行检测,如果区块链本身出现不可用的情况,则此时无法进行上链操作,扫描后重上链的步骤也无法执行,则扫描检测模块记录相关情况并进行报警,并返回s1;如果区块链正常,则逐条扫描上链失败的记录,通过扫描存储上链信息的数据库获得记录的上链状态、尝试上链次数以及上链失败的原因,判断是否能够尝试重新上链;如果当前的记录符合重新上链的要求,扫描检测模块将记录传输给上链模块尝试重新上链,直到上链成功或达到出错阈值次数;如果当前的记录不符合重新上链的要求,则直接扫描下一条上链失败的记录,直到所有上链失败的记录扫描完毕,返回s1。

2.根据权利要求1所述的基于区块链的数据上链异常重试方法,其特征在于,扫描检测模块将记录传输给上链模块时通过直接调用或消息队列传输的方式。

3.根据权利要求1所述的基于区块链的数据上链异常重试方法,其特征在于,数据库中存储包含业务数据的区块链交易序列化内容,在重新上链时将该序列化交易反序列化后发送至区块链进行尝试上链。

4.根据权利要求1所述的基于区块链的数据上链异常重试方法,其特征在于,所述的上链模块和扫描检测模块均为多个。


技术总结
本发明公开一种基于区块链的数据上链异常重试方法,该方法使用独立的扫描检测模块,相较于传统的出现异常立即重试的方式减少了逻辑的复杂度,模块职责分别,可以防止现有方案由于服务宕机导致的部分数据上链中断丢失的情况;通过分布式锁的控制,使得多个水平的扫描检测服务中仅有一个服务对数据上链失败的记录或数据进行检测扫描,决定是否重新上链,后续上链的过程是通过上链服务并发进行的,避免了分布式无锁环境下的重复发送行为,提升了上链过程的整体效率和可靠性。

技术研发人员:李伟;尹可挺;邱炜伟;梅王清
受保护的技术使用者:杭州趣链科技有限公司
技术研发日:2019.11.18
技术公布日:2020.04.17
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1