一种跨区块链分布式消息处理方法、平台及存储介质与流程

文档序号:25033520发布日期:2021-05-11 17:04阅读:111来源:国知局
一种跨区块链分布式消息处理方法、平台及存储介质与流程

本申请涉及区块链技术领域,尤其涉及一种跨区块链分布式消息处理方法、平台及存储介质。



背景技术:

随着计算机技术的飞速发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(fintech)转变,但由于金融行业的安全性和实时性要求,也对技术提出了更高的要求。由于分布式消息队列可以采用独立服务的方式运行,且能够帮助分布式系统实现高性能、高可用、可伸缩性和最终一致性等特点。分布式消息队列在分布式系统中得到了广泛的应用,并成为重要组件,有效解决了应用耦合、异步消息和流量削峰等问题。

但是,目前分布式系统中的分布式消息队列以中心化形式部署于某个机构,受控于单一机构,在机房故障、宕机和黑客攻击等状况下,造成分布式消息队列不能提供服务,导致分布式消息队列的可靠性较低。

申请内容

为解决上述技术问题,本申请实施例期望提供一种跨区块链分布式消息处理方法、平台及存储介质,解决了分布式消息队列的可靠性较低的问题,提出了跨区块链的分布式消息处理的方案,实现了去中心化,有效提高了分布式消息的可靠性,降低了在机房故障、宕机和黑客攻击等状况下不能提供服务的风险。

本申请的技术方案是这样实现的:

第一方面,一种跨区块链分布式消息处理方法,该方法应用于运行第一智能合约的跨区块链分布式消息处理平台,所述跨区块链分布式消息处理平台用于维护第一区块链,所述方法包括:

接收客户端设备发送的目标交易;

基于所述目标交易,确定至少一个具有第二智能合约的第二区块链;其中,所述第一智能合约用于对所述第二智能合约进行管理,每一个所述第二区块链用于存储至少一种类型的交易消息;

基于所述目标交易,执行针对至少一个所述第二区块链的目标操作;其中,所述目标操作与所述目标交易具有关联关系,所述目标操作包括存储操作或获取操作。

第二方面,一种跨区块链分布式消息处理平台,用于运行第一智能合约的所述跨区块链分布式消息处理平台用于维护第一区块链,所述跨区块链分布式消息处理平台包括:存储器、处理器和通信总线;其中:

所述存储器,用于存储可执行指令;

所述通信总线,用于实现所述处理器和所述存储器之间的通信连接;

所述处理器,用于执行所述存储器中存储的跨区块链分布式消息处理程序,实现如上述任一项所述的跨区块链分布式消息处理方法的步骤。

第三方面,一种存储介质,所述存储介质上存储有跨区块链分布式消息处理程序,所述跨区块链分布式消息处理程序被处理器执行时实现如上述任一项所述的跨区块链分布式消息处理方法的步骤。

本申请实施例中,通过运行第一智能合约的跨区块链分布式消息处理平台接收到客户端设备发送的目标交易后,基于目标交易,确定至少一个具有第二智能合约的第二区块链,并基于目标交易,执行针对至少一个第二区块链的目标操作,即通过第一智能合约来对第二智能合约进行管理,并将消息存储至用于存储对应类型的消息的第二智能合约对应的区块链中或者从存储有对应类型的消息的第二智能合约对应的区块链中获取消息,解决了分布式消息队列的可靠性较低的问题,提出了跨区块链的分布式消息处理的方案,实现了去中心化,有效提高了分布式消息的可靠性,降低了在机房故障、宕机和黑客攻击等状况下不能提供服务的风险。

附图说明

图1为本申请实施例提供的一种跨区块链分布式消息处理方法的流程示意图;

图2为本申请实施例提供的另一种跨区块链分布式消息处理方法的流程示意图;

图3为本申请实施例提供的一种消息的结构示意图;

图4为本申请实施例提供的第一智能合约的结构示意图;

图5为本申请实施例提供的第二智能合约的结构示意图;

图6为本申请实施例提供的又一种跨区块链分布式消息处理方法的流程示意图;

图7为本申请另一实施例提供的一种跨区块链分布式消息处理方法的流程示意图;

图8为本申请实施例提供的一种跨区块链式消息队列架构的示意图;

图9为本申请实施例提供的一种跨区块链分布式消息队列的智能合约结构的示意图;

图10为本申请实施例提供的一种跨区块链分布式消息处理平台的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

本申请的实施例提供一种跨区块链分布式消息处理方法,参照图1所示,方法应用于运行第一智能合约的跨区块链分布式消息处理平台,跨区块链分布式消息处理平台用于维护第一区块链,该方法包括以下步骤:

步骤101、接收客户端设备发送的目标交易。

在本申请实施例中,跨区块链分布式消息处理平台是由多个具备计算分析能力,且能够作为区块链运行节点的跨区块链分布式消息处理设备组成的,跨区块链分布式消息处理平台包括多个区块链运行节点。跨区块链分布式消息处理设备可以运行至少一个区块链节点,对应的实体设备例如可以各种形式的服务器、台式电脑、笔记本电脑、平板电脑、智能手机,甚至是车载电脑等设备;也可以是虚拟设备,对应的,以太坊区块链中执行智能合约的虚拟机(etheriumvitualmachine,evm)。

客户端设备可以是运行区块链中的客户端节点的设备。第一智能合约为当前区块链系统中在某一条区块链例如为第一区块链中设置的具有管理其他区块链的管理功能的管理智能合约,在客户端节点需要与其他区块链进行通信时,需通过运行第一智能合约的节点实现。目标交易可以是第一客户端节点需要将数据存储至区块链的交易或者从区块链中获取数据的交易。

步骤102、基于目标交易,确定至少一个具有第二智能合约的第二区块链。

其中,第一智能合约用于对第二智能合约进行管理,每一个第二区块链用于存储至少一种类型的交易消息。

在本申请实施例中,第二智能合约用于管理第二区块链中的数据,交易消息可以是客户端节点与区块链之间的传输的数据信息。由于第二智能合约中限定了对应的第二区块链可以存储的数据的类型,因此,可以根据目标交易中包括的需处理的数据的类型,来确定对应的至少一个具备第二智能合约的第二区块链。

步骤103、基于目标交易,执行针对至少一个第二区块链的目标操作。

其中,目标操作与目标交易具有关联关系,目标操作包括存储操作或获取操作。

在本申请实施例中,目标操作是由目标交易决定的,即根据目标交易的交易需求,可以确定对至少一个第二区块链进行的相应的目标操作。例如,目标交易的交易需求为存储数据时,对应的针对至少一个第二区块链的目标操作为将对应的数据存储至对应的第二区块链上;目标交易的交易需求为获取数据时,对应的针对至少一个第二区块链的目标操作为从对应的第二区块链上获取对应的数据。

本申请实施例中,通过运行第一智能合约的跨区块链分布式消息处理平台接收到客户端设备发送的目标交易后,基于目标交易,确定至少一个具有第二智能合约的第二区块链,并基于目标交易,执行针对至少一个第二区块链的目标操作,即通过第一智能合约来对第二智能合约进行管理,并将消息存储至用于存储对应类型的消息的第二智能合约对应的区块链中或者从存储有对应类型的消息的第二智能合约对应的区块链中获取消息,解决了分布式消息队列的可靠性较低的问题,提出了跨区块链的分布式消息处理的方案,实现了去中心化,有效提高了分布式消息的可靠性,降低了在机房故障、宕机和黑客攻击等状况下不能提供服务的风险。

基于前述实施例,本申请的实施例提供一种跨区块链分布式消息处理方法,参照图2所示,该方法包括以下步骤:

步骤201、跨区块链分布式消息处理平台接收客户端设备发送的目标交易。

其中,第一智能合约至少包括以下内容:第一智能合约管理的多个参考区块链的区块链标识信息和每一参考区块链运行的参考智能合约的地址,第二区块链属于多个参考区块链,第二智能合约用于进行消息存储管理。

在本申请实施例中,所有客户端设备均预先已确定运行有第一智能合约的跨区块链分布式消息处理平台,这样,所有客户端设备与区块链系统进行通信时,会直接与运行有第一智能合约的跨区块链分布式消息处理平台建立通信链接。在一些应用场景中,客户端设备也可以不确定运行第一智能合约的跨区块链分布式消息处理平台,这样,在客户端设备与区块链系统进行通信时,区块链系统会通知客户端设备运行第一智能合约的跨区块链分布式消息处理平台,然后客户端设备与跨区块链分布式消息处理平台建立通信链接,实现分布式消息存储和获取过程。

跨区块链分布式消息处理平台与客户端设备建立通信链接后,客户端设备将目标交易发送至跨区块链分布式消息处理平台。

其中,跨区块链分布式消息处理平台执行步骤201之后,可以选择执行步骤202~207,或者选择执行步骤208~211。其中,若目标交易为消息存储交易,选择执行步骤202~207,实现消息写入操作,若目标交易为消息获取交易,选择执行步骤208~211,实现消息读取操作:

步骤202、若目标交易为消息存储交易,跨区块链分布式消息处理平台从目标交易中获取目标消息。

在本申请实施例中,跨区块链分布式消息处理平台确定接收到的目标交易对应的交易需求,若确定目标交易为消息存储交易时,跨区块链分布式消息处理平台从目标交易中获取需要存储的目标消息。

示例性的,目标消息的结构可以参照图3所示,包括消息主体和消息内容,其中消息主题用于标识消息的类型,消息内容用于标识目标消息包含的数据内容。目标消息属于交易消息。

步骤203、跨区块链分布式消息处理平台确定目标消息的第一消息类型。

在本申请实施例中,跨区块链分布式消息处理平台对目标消息进行分析,确定目标消息的第一消息类型,例如可以是目标消息包括的数据的数据类型,或者是目标消息来自的对象等,第一消息类型也可以是不是对目标消息进行分析得到的,而是第一消息类型就设置于目标消息中,即目标消息的第一消息类型可以直接从目标消息中获取得到。

步骤204、跨区块链分布式消息处理平台基于第一消息类型确定至少一个第二区块链。

在本申请实施例中,跨区块链分布式消息处理平台根据存储的用于存储不同类型的数据内容的多个第三区块链的链标识信息和第一消息类型,确定得到用于存储目标消息的至少一个第二区块链。至少一个第二区块链属于多个第三区块链。

示例性的,在目标消息的结构如图3所示时,可以直接从目标消息的结构中获取目标消息的消息主题,得到目标消息的消息类型,记为第一消息类型。由于不同的第二区块链用于存储不同类型的数据内容,因此跨区块链分布式消息处理平台可以根据第一消息类型,确定得到用于存储目标信息的至少一个第二区块链。

对应的,如图4所示,在跨区块链分布式消息处理平台运行的第一智能合约中,存储有第一智能合约管理的第二智能合约的列表,列表中至少指示了对应的每一第二智能合约所在的区块链的链标识信息和每一第二智能合约的合约地址,例如包括链标识信息1、合约地址1,链标识信息2、合约地址2,链标识信息3、合约地址3,……。其中,第二智能合约所在的区块链的链标识信息可以还具备指示该区块链存储的数据的数据类型的功能,或者,第二智能合约所在的区块链存储的数据类型可以直接在列表中进行标识。这样,跨区块链分布式消息处理平台可以根据第一智能合约中存储的列表来确定对应的第二智能合约,并根据确定的第二智能合约来确定对应的第二区块链。

其中,跨区块链分布式消息处理平台执行步骤204之后,可以选择执行步骤205或者步骤206~207,若第一消息类型包括的类型数量为1,可以选择执行步骤205,若第一消息类型包括的类型数量大于1,可以选择执行步骤206~207。

步骤205、若第一消息类型包括的类型数量为1,跨区块链分布式消息处理平台存储目标消息至第二区块链。

在本申请实施例中,在确定得到的第一消息类型包括的类型数量为1时,跨区块链分布式消息处理平台直接将目标消息存储至用于存储第一消息类型的消息的第二区块链中,实现对第二区块链的写入操作。

步骤206、若第一消息类型包括的类型数量大于1,跨区块链分布式消息处理平台按照第一消息类型包括的子消息类型,将目标消息进行分类,得到多个子消息。

在本申请实施例中,在一些应用场景中,目标消息也可以是按照子消息类型已分好类的多个子消息。

步骤207、跨区块链分布式消息处理平台将每一子消息存储至对应子消息类型的第二区块链。

其中,目标操作包括发送操作。

在本申请实施例中,由于不同的第二区块链存储的是不同消息类型的数据信息的,因此,需将不同的子消息存储至对应子消息类型的第二区块链,这样,将不同的子消息存储至不同的第二区块链中,实现了将不同的消息在不同的区块链中的分布式存储,能够基于区块链的特性,有效保证了消息的安全性和可靠性。

示例性的,以目标消息为银行发送账目流水信息为例,假设账目流水包含以下字段:账目时间:9月1日至11月30日,账目金额:单位元。其中,对应的第二区块链中,每一第二区块链用于存储一个月的数据。这样,可以确定第一消息类型包括3个子消息类型:9月、10月和11月,因此,可以得到的3个子消息:9月的账目金额、10月的账目金额和11月的账目金额;然后将9月的账目金额存储至用于存储9月数据的第二区块链,将10月的账目金额存储至用于存储10月数据的第二区块链,将11月的账目金额发送至用于存储11月数据的第二区块链。

其中,例如用于存储9月数据的第二区块链接收到第一区块链发送的9月的账目金额后,将9月的账目金额存储至第二区块链管理运行的第二智能合约对应的消息列表中,第二区块链管理运行的第二智能合约中对应的消息列表可以参照图5所示,其中,可以将9月的账目金额存储在当前消息列表的列表末尾。

步骤208、若目标交易为消息获取交易,跨区块链分布式消息处理平台从目标交易中确定待获取消息的第二消息类型。

在本申请实施例中,目标交易例如可以是获取7月的数据信息时,这样,可以从目标交易中确定待获取消息为7月的数据信息,对应的第二消息类型为7月。

步骤209、跨区块链分布式消息处理平台基于第二消息类型,确定至少一个第二区块链。

在本申请实施例中,基于第二消息类型为7月,因此可以确定用于存储7月数据的第二区块链。

步骤210、跨区块链分布式消息处理平台从至少一个第二区块链中获取待获取消息。

在本申请实施例中,由于跨区块链分布式消息处理平台可以确定得到第二区块链的链标识信息,因此,跨区块链分布式消息处理平台可以根据第二区块链的链标识信息确定第二区块链,并从第二区块链中获取与目标交易匹配的待获取消息。

示例性的,跨区块链分布式消息处理平台从存储7月数据的第二区块链的消息列表中获取7月的数据信息时,假设当前消息列表中按照列表从上到下为表首至表尾的顺序时,包括的消息为消息1、消息2和消息3时,可以确定消息1为距离当前时刻最远的存储的消息,其次为消息2,消息3为距离当前时刻最近所存储的消息,这样,跨区块链分布式消息处理平台从用于存储7月数据的第二区块链的消息列表中获取历史最久远的消息进行反馈给客户端设备,即获取表首消息即信息1作为待获取消息,即第二区块链中的消息列表可以采用先进先出的方式存储数据。在一些应用场景中,第二区块链将信息列表中的表首消息发送至跨区块链分布式消息处理平台后,还可以将表首消息进行删除处理,并将原表首后一位的消息向前移动,使后一位的消息称为新的表首消息。

步骤211、跨区块链分布式消息处理平台发送待获取消息至客户端设备。

在本申请实施例中,跨区块链分布式消息处理平台将获取到的待获取消息发送至客户端设备,实现对客户端设备发送的目标交易的响应。

基于前述实施例,在本申请其他实施例中,参照图6所示,跨区块链分布式消息处理平台执行步骤205或207之后,还用于执行步骤212~214:

步骤212、跨区块链分布式消息处理平台基于至少一个第二区块链,获取目标设备对应的事件通知模板。

其中,目标设备为用于调用至少一个第二区块链中存储的消息的设备。

在本申请实施例中,跨区块链分布式消息处理平台运行的第一智能合约中有预先设置的好的可以调用每一第三区块链中的消息的目标设备,以及在每一第三区块链中存储有新消息存储时,通知调用每一第三区块链的消息的目标设备的事件通知模板,事件通知模板可以是每一目标设备根据自身要求预先写入至第一区块链对应的第一智能合约中的。目标设备可以是区块链系统中的客户端设备,也可以是其他服务器设备等节点设备。

步骤213、跨区块链分布式消息处理平台基于事件通知模板,生成目标事件通知。

步骤214、跨区块链分布式消息处理平台发送目标事件通知至目标设备。

其中,目标事件通知用于通知目标设备有待处理消息需进行处理。

在本申请实施例中,跨区块链分布式消息处理平台一旦将消息存储至对应的第二区块链中,就即刻生成目标事件通知来通知对应的使用消息的设备,以使对应的使用消息的设备获得最新的消息,有效提高了分布式消息的使用效率。

这样,目标设备接收到目标事件通知,响应目标事件通知,发送为消息获取交易的目标交易至跨区块链分布式消息处理平台;跨区块链分布式消息处理平台接收到目标设备发送的目标交易;跨区块链分布式消息处理平台从目标交易中确定待获取消息的第二消息类型;然后跨区块链分布式消息处理平台基于第二消息类型,确定至少一个第二区块链,并从至少一个第二区块链中获取待获取消息;跨区块链分布式消息处理平台发送待获取消息至目标设备。

基于前述实施例,在本申请其他实施例中,参照图7所示,跨区块链分布式消息处理平台执行步骤201之后,还可以用于执行步骤215~220:

步骤215、跨区块链分布式消息处理平台检测跨区块链分布式消息处理平台包括的节点的第一存活率。

在本申请实施例中,跨区块链分布式消息处理平台包括的节点的存活率可以是根据各种共识机制来确定得到的,即将跨区块链分布式消息处理平台包括的节点中出现异常的节点均排除。

步骤216、若第一存活率小于第一预设阈值,且目标交易为消息存储交易,跨区块链分布式消息处理平台结束目标交易。

在本申请实施例中,第一预设阈值为根据大量实验得到的经验值,例如可以是跨区块链分布式消息处理平台包括的节点数量的三分之一或者节点数量的二分之一等。这样,在跨区块链分布式消息处理平台包括的节点的第一存活率小于第一预设阈值时,禁止针对跨区块链分布式消息处理平台管理的多个第三区块链的写入操作,即存储操作。

步骤217、若第一存活率小于第一预设阈值,且目标交易为消息获取交易,跨区块链分布式消息处理平台从至少一个第二区块链中获取待获取消息,并发送待获取消息至客户端设备。

在本申请实施例中,在第一存活率小于第一预设阈值时,可以执行读取操作。

步骤218、若第一存活率大于或等于第一预设阈值,跨区块链分布式消息处理平台检测n个第二区块链对应的节点的第二存活率。

其中,n为至少一个第二区块链的区块链数量,n为大于或等于1的整数。

步骤219、若i个第二区块链的第二存活率小于第二预设阈值,且目标交易为针对i个第二区块链的消息存储交易,跨区块链分布式消息处理平台结束针对i个第二区块链的目标交易。

其中,i为大于或等于1,且小于或等于n的整数。

步骤220、若i个第二区块链的第二存活率小于第二预设阈值,且目标交易为针对i个第二区块链的消息获取交易,跨区块链分布式消息处理平台从i个第二区块链的中获取待获取消息,并发送待获取消息至客户端设备。

步骤221、若j个第二区块链的第二存活率大于或等于第二预设阈值,跨区块链分布式消息处理平台基于目标交易,执行针对j个第二区块链的目标操作。

其中,j为大于或等于1,且小于或等于n的整数,i与j的和值为n。

在本申请实施例中,跨区块链分布式消息处理平台基于目标交易,执行针对j个第二区块链的目标操作的实现过程具体可以参照步骤202~214组成的多个实施例的实现过程,此处不再详细赘述。这样,在部分第二区块链的第二存活率较低时,该部分第二区块链可以实现可读操作,而其他部分正常的第二区块链即第二存活率较高时,可以实现写入操作和可读操作,有效提高了分布式消息的使用,保证了用户的使用体验效果。

需说明的是,步骤202~214是在第一存活率大于第一预设阈值,且每一第二存活率大于第二预设阈值时执行的。

基于前述实施例,本申请实施例提供一种跨区块链式消息队列架构,参照图8所示,该跨区块链式消息队列架构包括区块链a和区块链b。其中,区块链a中部署有管理智能合约和数据智能合约1,区块链2中部署有数据智能合约2,客户端设备c与部署有管理智能合约的区块链a直接通信,图8中区块链a和区块链b中所示圆圈代表组成区块链的节点。需说明的是,管理智能合约对应前述第一智能合约,数据智能合约1和数据智能合约2对应前述第二智能合约。管理智能合约负责管理队列数据智能合约,对外暴露消息接口,不直接存储消息数据,管理智能合约内部包含一个数据智能合约的列表,存储所有队列数据智能合约所在的链标识信息与合约地址。数据智能合约负责存储消息数据,其包含一个消息列表,存储多条消息。多个数据智能合约按分区部署在不同的区块链上,实现消息队列的平行扩展。

一个管理智能合约保存了多个数据智能合约的地址,数据按照分区规则存放到不同区块链上的数据智能合约,按照实际的需求,分区规则例如可以设置为按时间分区和按业务分区,其中,不同的分区规则影响消息的收发流程。

示例性的,按时间分区时,不同区块链用于存储不同日期的消息数据,假设可以按月存储,9月、10月和11月的消息数据分别保存于区块链1、区块链2和区块链3,这三个区块链的合约地址写入管理智能合约。

按业务分区时,数据智能合约以业务类型创建,假设跨链消息队列用于银行业务时,数据智能合约可以分为客户交易数据、信用卡交易数据和同业交易数据,这3种业务类型的数据分别存于区块链1、区块链2和区块链3,将三个合约地址写入到管理智能合约。

与图8所示的跨区块链分布式消息队列架构对应的跨区块链分布式消息队列的智能合约结构可以参照图9所示。如图9所示,管理智能合约a1中包括数据智能合约列表,数据智能合约1a2中包括消息列表1,数据智能合约2b1中包括消息列表2。管理智能合约a1中包括的对外暴露消息接口至少有三个接口,例如为收发接口a11、监听接口a12和消息事件a13。这样,使跨区块链分布式队列由管理智能合约和数据智能合约两类合约组成。其中:

本申请实施例提供的一种管理智能合约接收消息数据的流程可以如下步骤所示:

步骤1、客户端设备接收到用户的操作指令后,构造发消息交易,并将发消息交易通过收发接口a11发送到区块链1的管理智能合约中。

步骤2、管理智能合约解析发消息交易中的参数,确定发消息交易中包括的交易参数的类型。

步骤3、管理智能合约根据交易参数的类型选择相应的数据智能合约。

步骤4、管理智能合约将发消息交易中的消息数据插入到相应的数据智能合约的消息列表末尾。

步骤5、管理智能合约将消息数据插入到相应的数据智能合约的消息列表末尾后,触发新消息事件。

示例性的,以银行发送账目流水信息为例,账目流水包含以下字段:账目时间:例如2020年9月1日,账目类型:例如客户交易、信用卡,账目金额:单位元,在将消息数据写入跨区块链消息队列时:假设消息队列按时间分区,区块链1保存9月的消息,区块链2保存10月的消息,则消息数据会被写入区块链1;假设消息按业务类型分区,区块链1保存客户交易的消息,区块链2保存信用卡的消息,则消息会被写入区块链1。

管理智能合约触发新消息事件具体可以是通过监听接口a12和消息事件a13来实现的,即监听接口a12确定数据智能合约中插入新的消息后,管理智能合约按照预先约定与数据智能合约有关的消息接收设备对应的事件通知模板,生成事件通知,得到用于通知存在新消息的新消息事件。不同的应用场景下,事件通知可以采用日志的方式输出,也可以通过事件(event)生成,也可以通过setevent的方式生成。

本申请实施例提供的一种管理智能合约读取消息数据的流程可以如下步骤所示:

步骤1、消息接收设备构造获取消息交易,并通过收发接口a11发送到管理智能合约。

步骤2、管理智能合约根据获取消息交易的交易参数的类型,确定匹配的数据智能合约。

步骤3、管理智能合约从匹配的数据智能合约中取出匹配的数据智能合约的消息列表中的第一个元素作为发送消息,并删除第一个元素。

步骤4、管理智能合约将发送消息返回给消息接收设备。

本申请实施例还提供了一种容灾逻辑,当数据智能合约对应的区块链的节点发生异常时,只要异常节点数量不超过该区块链需要共识的最小节点数量,例如该区块链存活的节点的数量超过该区块链的2/3节点或者超过该区块链的1/2节点,则该区块链和该区块链上的数据智能合约仍能正常使用,对应的该区块链的消息队列可以正常收发消息,即可以实现消息的写入操作和读取操作。

当该区块链存活的节点的数量低于该区块链的三分之二总节点数量或者低于该区块链的二分之一总节点数量时,由于该区块链无法实现共识,则该区块链对应的数据智能合约中无法写入任何消息。但可以设置在该区块链仍有一个节点存活时,仍可从该区块链中读取出完整的历史消息,即该分区进入只读状态。

当管理智能合约所在的区块链出现大量节点异常,导致该区块链共识异常时,此时该区块链无法共识,无法写入任何消息。但只要该区块链仍有一个节点存活,仍可从该区块链读取完整的历史消息,由于管理智能合约不可用,整个消息队列进入只读状态。即只能读取管理智能合约所管理的数据智能合约的消息列表,不能进行写入操作。

当管理智能合约所在的区块链可以执行写入和读取操作时,管理智能合约所管理的数据智能合约对应的区块链中,可以存在部分区块链由于节点异常,导致该部分区块链进入只读状态,而这些部分区块链并不影响其他节点正常的其他区块链,即其他区块链仍然可以写入操作和读取操作。

需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。

本申请实施例中,通过运行第一智能合约的跨区块链分布式消息处理平台接收到客户端设备发送的目标交易后,基于目标交易,确定至少一个用于运行第二智能合约的第二区块链,并基于目标交易,执行针对至少一个第二区块链的目标操作,即通过第一智能合约来对第二智能合约进行管理,并将消息存储至用于存储对应类型的消息的第二智能合约对应的区块链中或者从存储有对应类型的消息的第二智能合约对应的区块链中获取消息,解决了分布式消息队列的可靠性较低的问题,提出了跨区块链的分布式消息处理的方案,实现了去中心化,有效提高了分布式消息的可靠性,降低了在机房故障、宕机和黑客攻击等状况下不能提供服务的风险。并且,即使某个区块链受到攻击导致无法进行存储操作,但只要该区块链中有一个节点存活,仍能保证该区块链对应的分区的消息可以读取,使消息队列可继续工作。

基于前述实施例,本申请的实施例提供一种跨区块链分布式消息处理平台,用于运行第一智能合约的跨区块链分布式消息处理平台用于维护第一区块链,参照图10所示,跨区块链分布式消息处理平台3可以包括:处理器31、存储器32和通信总线33,其中:

存储器32,用于存储可执行指令;

通信总线33,用于实现处理器31和存储器32之间的通信连接;

处理器31,用于执行存储器32中存储的跨区块链分布式消息处理程序,以实现以下步骤:

接收客户端设备发送的目标交易;

基于目标交易,确定至少一个具有第二智能合约的第二区块链;其中,第一智能合约用于对第二智能合约进行管理,每一个第二区块链用于存储至少一种类型的交易消息;

基于目标交易,执行针对至少一个第二区块链的目标操作;其中,目标操作与目标交易具有关联关系,目标操作包括存储操作或获取操作。

在本申请其他实施例中,第一智能合约至少包括以下内容:第一智能合约管理的多个参考区块链的区块链标识信息和每一参考区块链运行的参考智能合约的地址,第二区块链属于多个参考区块链,第二智能合约用于进行消息存储管理。

在本申请其他实施例中,处理器执行步骤基于目标交易,确定至少一个具有第二类型智能合约的第二区块链时,可以通过以下步骤来实现:

若目标交易为消息存储交易,从目标交易中获取目标消息;

确定目标消息的第一消息类型;

基于第一消息类型确定至少一个第二区块链。

在本申请其他实施例中,处理器执行步骤基于目标交易,执行针对至少一个第二区块链的目标操作时,可以通过以下步骤来实现:

若第一消息类型包括的类型数量为1,存储目标消息至第二区块链;

若第一消息类型包括的类型数量大于1,按照第一消息类型包括的子消息类型,将目标消息进行分类,得到多个子消息;

将每一子消息存储至对应子消息类型的第二区块链;其中,目标操作包括存储操作。

在本申请其他实施例中,处理器执行步骤基于目标交易,执行针对至少一个第二区块链的目标操作之后,还用于执行以下步骤:

基于至少一个第二区块链,获取目标设备对应的事件通知模板;其中,目标设备为用于调用至少一个第二区块链中存储的消息的设备;

基于事件通知模板,生成目标事件通知;

发送目标事件通知至目标设备;其中,目标事件通知用于通知目标设备有待处理消息需进行处理。

在本申请其他实施例中,处理器执行步骤基于目标交易,确定至少一个具有第二类型智能合约的第二区块链时,可以通过以下步骤来实现:

若目标交易为消息获取交易,从目标交易中确定待获取消息的第二消息类型;

基于第二消息类型,确定至少一个第二区块链。

在本申请其他实施例中,处理器执行步骤基于目标交易,执行针对至少一个第二区块链的目标操作时,可以通过以下步骤来实现:

从至少一个第二区块链中获取待获取消息;

发送待获取消息至客户端设备。

在本申请其他实施例中,处理器执行步骤接收客户端设备发送的目标交易之后,还用于执行以下步骤:

检测跨区块链分布式消息处理平台包括的节点的第一存活率;

若第一存活率小于第一预设阈值,且目标交易为消息存储交易,结束目标交易;

若第一存活率小于第一预设阈值,且目标交易为消息获取交易,从至少一个第二区块链中获取待获取消息,并发送待获取消息至客户端设备。

在本申请其他实施例中,处理器还用于执行步骤:

若第一存活率大于或等于第一预设阈值,检测n个第二区块链对应的节点的第二存活率;其中,n为至少一个第二区块链的区块链数量,n为大于或等于1的整数;

若i个第二区块链的第二存活率小于第二预设阈值,且目标交易为针对i个第二区块链的消息存储交易,结束针对i个第二区块链的目标交易;其中,i为大于或等于1,且小于或等于n的整数;

若i个第二区块链的第二存活率小于第二预设阈值,且目标交易为针对i个第二区块链的消息获取交易,从i个第二区块链的中获取待获取消息,并发送待获取消息至客户端设备;

若j个第二区块链的第二存活率大于或等于第二预设阈值,基于目标交易,执行针对j个第二区块链的目标操作;其中,j为大于或等于1,且小于或等于n的整数,i与j的和值为n。

需说明的是,本实施例中跨区块链分布式消息处理平台中的单元之间信息交互的具体实现过程,可以参照图1至2和图6至7对应的实施例提供的跨区块链分布式消息处理方法中的实现过程,此处不再赘述。

本申请实施例中,通过运行第一智能合约的跨区块链分布式消息处理平台接收到客户端设备发送的目标交易后,基于目标交易,确定至少一个用于运行第二智能合约的第二区块链,并基于目标交易,执行针对至少一个第二区块链的目标操作,即通过第一智能合约来对第二智能合约进行管理,并将消息存储至用于存储对应类型的消息的第二智能合约对应的区块链中或者从存储有对应类型的消息的第二智能合约对应的区块链中获取消息,解决了分布式消息队列的可靠性较低的问题,提出了跨区块链的分布式消息处理的方案,实现了去中心化,有效提高了分布式消息的可靠性,降低了在机房故障、宕机和黑客攻击等状况下不能提供服务的风险。并且,即使某个区块链受到攻击导致无法进行存储操作,但只要该区块链中有一个节点存活,仍能保证该区块链对应的分区的消息可以读取,使消息队列可继续工作。

基于前述实施例,本申请的实施例提供一种计算机可读存储介质,简称为存储介质,该计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如图1至2和图6至7对应的实施例提供的跨区块链分布式消息处理方法实现过程,此处不再赘述。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1