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

一种分布式区块链智能网关系统及应用请求处理方法

文献发布时间:2024-07-23 01:35:21


一种分布式区块链智能网关系统及应用请求处理方法

技术领域

本申请涉及区块链技术领域,尤其涉及一种分布式区块链智能网关系统及应用请求处理方法。

背景技术

区块链是一种块链式存储、不可篡改、安全可信的去中心化分布式账本,它结合了分布式存储、点对点传输、共识机制、密码学等技术,通过不断增长的数据块链(Blocks)记录交易和信息,确保数据的安全和透明性。区块链在溯源,存证等方面有很大的应用价值。通过区块链提供的接口,应用程序可以将数据上链保存,在链上保存数据的好处是数据可信,不容易被篡改。上链操作通常是调用区块链的智能合约完成。每次调用可以认为是一次交易。

应用程序调用智能合约通常通过sdk(Software DevelopmentKit,软件开发工具包)完成,也可以通过调用上链的接口完成。区块链有很多种,如以太坊、Eos、Fabric、长安链、蚂蚁链等。如果需要应用程序支持多种区块链,需要在调用接口中支持多种接口,这些接口可以是cpp、java等。并且不同的接口需要配置的信息不同,这会导致开发比较复杂。

为了支持多种区块链,减少区块链应用的开发难度,在区块链与应用之间增加一个网关服务是一种实现方案。采用网关方案之后,虽然网关简化了区块链的应用开发,但是实际上使网关成为整个系统中的一个单点。一旦网关故障,导致整个应用系统都会故障,导致系统稳定性较低。

发明内容

本申请所要解决的技术问题是针对现有技术的上述不足,提供一种分布式区块链智能网关系统及应用请求处理方法,用以解决现有技术存在的问题。

第一方面,本申请提供一种分布式区块链智能网关系统,所述系统包括:分布式网关组件以及消息队列,所述分布式网关组件包括分布式布置的多个网关节点;

其中,所述网关节点包括:

消息接收模块,用于接收应用调用区块链的处理请求,并将处理请求发送至所述消息队列,以使得所述消息队列对处理请求进行排序以得到消息处理队列;

消息处理模块,用于从所述消息队列的消息处理队列中获取调用区块链的处理请求,执行区块链智能合约功能,得到对应的处理结果;

回调模块,用于将所述处理结果发送至应用。

在一些实施例中,所述消息接收模块具体用于:

接收应用调用区块链的处理请求,根据所述处理请求校验所述应用的账户配置信息是否具备区块链调用权限,若具备,则将处理请求发送至所述消息队列。

在一些实施例中,所述消息处理模块具体用于:

从所述消息队列的消息处理队列中获取调用区块链的处理请求,将所述处理请求解析为调用区块链的智能合约接口请求包;

根据预设配置信息选择所述处理请求对应的目标区块链节点;

通过所述目标区块链节点执行区块链智能合约功能,得到对应的处理结果。

在一些实施例中,所述消息处理模块具体还用于:

若所述处理请求为上链请求,采用异步方式将所述处理请求的处理结果插入待确认队列;

若所述处理请求为查询请求,采用同步方式对所述处理请求的处理结果执行返回应用处理。

在一些实施例中,所述网关节点还包括:

重处理模块,用于在所述处理结果为区块链调用失败时,对所述处理请求进行重处理。

在一些实施例中,重处理模块具体用于:

获取处理结果为区块链调用失败的处理请求;

通过调用区块链查询服务,判断所述处理请求对应的数据是否在链上;

若数据不在链上,则判断是否达到最大重试次数;

若未达到最大重试次数,则根据所述处理请求执行重上链处理。

在一些实施例中,所述系统还包括:消息数据库;

所述消息队列用于将所述消息处理队列同步至所述消息数据库。

第二方面,本申请提供一种应用请求处理方法,应用于山能述的分布式区块链智能网关系统,所述方法包括:

S1、响应于接收应用调用区块链的处理请求,将处理请求发送至消息队列,以使得所述消息队列对处理请求进行排序以得到消息处理队列;

S2、从所述消息队列的消息处理队列中获取调用区块链的处理请求,执行区块链智能合约功能,得到对应的处理结果;

S3、将所述处理结果发送至应用。

在一些实施例中,响应于接收应用调用区块链的处理请求,将处理请求发送至所述消息队列,包括:

响应于接收应用调用区块链的处理请求,根据所述处理请求校验所述应用的账户配置信息是否具备区块链调用权限,若具备,则将处理请求发送至所述消息队列。

在一些实施例中,还包括:

在所述处理结果为区块链调用失败时,对所述处理请求进行重处理。

本申请提供的分布式区块链智能网关系统及应用请求处理方法,所述系统包括:分布式网关组件以及消息队列,所述分布式网关组件包括分布式布置的多个网关节点;其中,所述网关节点包括:消息接收模块,用于接收应用调用区块链的处理请求,并将处理请求发送至所述消息队列,以使得所述消息队列对处理请求进行排序以得到消息处理队列;消息处理模块,用于从所述消息队列的消息处理队列中获取调用区块链的处理请求,执行区块链智能合约功能,得到对应的处理结果;回调模块,用于将所述处理结果发送至应用。本申请提供一种分布式区块链智能网关系统,通过设计分布式网关服务的结构,采用消息队列(例如kafka集群)对多个应用节点的调用智能网关的请求进行了排序,使整个系统中调用智能合约的请求顺序一致。在系统崩溃时,可以用于恢复区块链系统,避免用应用节点数据恢复带来的顺序不一致问题。本申请使数据上链、数据查询、合约执行等操作的稳定性得到提升,可以很大程度避免因网关节点宕机导致的区块链交易失败,有助于提高了网关服务的稳定性,避免网关故障导致系统崩溃。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为现有技术中的区块链网关系统的示意图;

图2为本申请实施例提供的分布式区块链智能网关系统的示意图;

图3为本申请实施例提供的分布式区块链智能网关系统的另一示意图;

图4为本申请实施例提供的应用请求处理方法的示意图。

通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。

具体实施方式

为使本领域技术人员更好地理解本申请的技术方案,下面将结合附图对本申请实施方式作进一步地详细描述。

可以理解的是,此处描述的具体实施例和附图仅仅用于解释本申请,而非对本申请的限定。

可以理解的是,在不冲突的情况下,本申请中的各实施例及实施例中的各特征可相互组合。

可以理解的是,为便于描述,本申请的附图中仅示出了与本申请相关的部分,而与本申请无关的部分未在附图中示出。

可以理解的是,本申请的实施例中所涉及的每个单元、模块可仅对应一个实体结构,也可由多个实体结构组成,或者,多个单元、模块也可集成为一个实体结构。

可以理解的是,本申请的实施例中的术语“第一”、“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。

可以理解的是,在不冲突的情况下,本申请的流程图和框图中所标注的功能、步骤可按照不同于附图中所标注的顺序发生。

可以理解的是,本申请的流程图和框图中,示出了按照本申请各实施例的系统、装置、设备、方法的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可代表一个单元、模块、程序段、代码,其包含用于实现规定的功能的可执行指令。而且,框图和流程图中的每个方框或方框的组合,可用实现规定的功能的基于硬件的系统实现,也可用硬件与计算机指令的组合来实现。

可以理解的是,本申请实施例中所涉及的单元、模块可通过软件的方式实现,也可通过硬件的方式来实现,例如单元、模块可位于处理器中。

网关对区块链系统方面支持多种区块链的接口,而对应用层提供统一的接口。这样应用层可以不用关心最终的区块链系统,达成简化应用的开发的目的。

图1为现有技术中的区块链网关系统的示意图,如图1所示,常规的网关方案包括了权限认证模块、合约调用模块、合约调用队列、网关监控模块,整体接收第三方系统的信息,经过权限验证等前置操作后再将请求转发至区块链网络。

采用网关方案之后,虽然网关简化了区块链的应用开发,但是实际上使网关成为整个系统中的一个单点。一旦网关故障,导致整个应用系统都会故障,导致系统稳定性较低。

基于上述问题,本申请设计了一个分布式网关服务的结构,提高了网关服务的稳定性,避免网关故障导致系统崩溃。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

图2为本申请实施例提供的分布式区块链智能网关系统的示意图,如图2所示,本申请提供一种分布式区块链智能网关系统,所述系统包括:分布式网关组件10以及消息队列20,所述分布式网关组件包括分布式布置的多个网关节点11。

参考图2,应用节点可以调用任意网关节点完成交易,分布式网关组件10负责调用配置的区块链节点。应用节点无需关心区块链部分,达成与区块链的解耦。

本申请中,消息队列的作用是对应用的处理请求进行排序,例如可以采用kafka集群、RocketMQ、RabbitMQ等。

本申请与非分布式的网关的区别在于,网关节点在收到来自应用节点的交易消息后,并不直接将交易信息转发给区块链节点,而是先将交易消息发往消息队列(例如kafka集群),然后各网关节点从消息队列(例如kafka集群)的队列上获取交易信息,再转发给区块链节点,这样可以部署多个网关节点进行交易处理,若出现单个网关节点的故障,不会对整体业务处理造成影响,从而大大提高系统稳定性。

本申请中,应用节点发起请求的流程包括:

(1)读取应用中配置的网关信息,本申请由于配置了多个网关节点,基于分布式调度原理,应用节点可以选择其中一个网关节点。

(2)创建回调信息接收服务,并将该服务接口一并发送给网关。应用在发起区块链服务请求前,应先创建一个服务来处理网关回调信息。可选的,若应用不需要接收回调信息,也可以不做这一步的配置。

(3)将数据按照网关接口要求进行打包。其中,打包的接口数据包括:请求包序号(应用内唯一),应用数据(调用合约的接口数据,包括合约名,合约动作名,合约调用参数,回调服务端口号),数据包签名,签名采用配置模块中配置的账户公钥对应的私钥。

(4)向网关发送接口数据。在完成打包后,应用节点将打包的接口数据发送至所选择的网关节点。

图3为本申请实施例提供的分布式区块链智能网关系统的另一示意图,如图3所示,其中,所述网关节点包括:

消息接收模块111,用于接收应用调用区块链的处理请求,并将处理请求发送至所述消息队列(例如kafka集群),以使得所述消息队列(例如kafka集群)对处理请求进行排序以得到消息处理队列;

消息处理模块112,用于从所述消息队列(例如kafka集群)的消息处理队列中获取调用区块链的处理请求,执行区块链智能合约功能,得到对应的处理结果;

其中,智能合约是一种在区块链上的自动化程序或协议,可以自动执行合同条款。它们可以定义规则,并通过代码自动强制执行,从而消除中介并减少时间延迟。智能合约托管在区块链网络上,根据触发特定结果的特定条件进行编码。它们的执行结果可以被网络中的所有参与者共同确认和验证,不会被任何单个节点或中心化机构所篡改。智能合约的实现依赖于区块链技术的去中心化、可信任性和不可篡改性等特点。

回调模块113,用于将所述处理结果发送至应用。

本申请中,回调模块工作流程包括:

(1)监听消息通知,当有消息时触发(2)。

(2)根据配置查找回调的应用接口。具体的,应用节点发送的接口数据包含回调服务端口号,通过接口数据可以查找回调的应用接口。

(3)执行回调,最多支持3次失败重试。

参考图3,在一些实施例中,所述网关节点还包括:重处理模块114,用于在所述处理结果为区块链调用失败时,对所述处理请求进行重处理。

参考图3,在一些实施例中,所述分布式网关组件还包括:配置模块115,用于完成区块链节点配置,账户密钥配置等。

在一些实施例中,所述系统还包括:消息数据库30;所述消息队列(例如kafka集群)用于将所述消息处理队列同步至所述消息数据库。具体的,消息队列(例如kafka集群)的队列数据实时同步到消息数据库中,用于在区块链系统崩溃时进行恢复。

在一些实施例中,所述消息接收模块具体用于:接收应用调用区块链的处理请求,根据所述处理请求校验所述应用的账户配置信息是否具备区块链调用权限,若具备,则将处理请求发送至所述消息队列(例如kafka集群)。

本申请中,网关消息接收处理流程包括:

(1)读取处理请求消息。

(2)读取解析应用账户配置信息。

(3)校验调用区块链权限服务。若有权限,则将消息插入到消息队列(例如kafka集群),若无权限,则向应用返回调用失败消息。

具体的,在网关节点中配置有账户的公钥,处理请求消息中有应用方对消息包的私钥签名,消息处理接口主要是根据公钥信息完成签名验证,确认应用有权限调用区块链的智能合约,并将有权限的消息转发到消息队列(例如kafka集群)完成消息排队。

在一些实施例中,所述消息处理模块具体用于:从所述消息队列(例如kafka集群)的消息处理队列中获取调用区块链的处理请求,将所述处理请求解析为调用区块链的智能合约接口请求包;根据预设配置信息选择所述处理请求对应的目标区块链节点;通过所述目标区块链节点执行区块链智能合约功能,得到对应的处理结果。

在一些实施例中,所述消息处理模块具体还用于:若所述处理请求为上链请求,采用异步方式将所述处理请求的处理结果插入待确认队列;若所述处理请求为查询请求,采用同步方式对所述处理请求的处理结果执行返回应用处理。

本申请中,网关消息处理流程包括:

(1)从消息队列(例如kafka集群)中获取消息。

(2)根据配置信息,将消息解析为调用目标区块链的智能合约接口需要的请求包。

(3)根据配置信息,选择目标区块链节点。,例如,可以采用负载均衡算法动态地选择区块链节点进行调用,避免固定节点的故障或负载过高,负载均衡算法例如可以是轮询法(Round Robin)、加权轮询法(Weight Round Robin)、随机法(Random)4、加权随机法(Weight Random)等,此外,用户也可配置指定的区块链节点。

(4)调用区块链服务,执行智能合约。

(5)根据处理结果确认后续处理策略。

其中,对于上链请求,通常采用异步方式,将消息插入待确认队列,等重处理模块进行确认。

其中,对于查询请求,通常采用同步方式,将查询结果实时返回给应用端。

在一些实施例中,重处理模块具体用于:获取处理结果为区块链调用失败的处理请求;通过调用区块链查询服务,判断所述处理请求对应的数据是否在链上;若数据不在链上,则判断是否达到最大重试次数;若未达到最大重试次数,则根据所述处理请求执行重上链处理。

本申请中,重处理流程包括:

(1)从待确认队列中获取消息。

(2)调用区块链查询服务,确认数据是否在链上。若数据不在链上则进入(3)步骤,若在链上则进入(5)步骤返回成功通知。

(3)判断是否达到最大重试次数。若未达到最大重试次数则进入(4)步骤,若达到了最大重试次数则进入(5)步骤返回失败通知。

(4)执行重上链操作。

(5)执行回调通知。

区块链系统虽然有很大的冗余度,但是目前应用多采用私有联盟链的方式建应用系统,区块链的节点数并不多,因此存在一定的可能性导致整个系统崩溃。在这种情况下,智能采用应用数据进行恢复,但是由于各应用节点之间的数据顺序是未排序的,因此用应用节点数据恢复可能会导致数据与之前上链结果不一致。

本申请提供一种分布式区块链智能网关系统,通过设计分布式网关服务的结构,采用消息队列(例如kafka集群)对多个应用节点的调用智能网关的请求进行了排序,使整个系统中调用智能合约的请求顺序一致。在系统崩溃时,可以用于恢复区块链系统,避免用应用节点数据恢复带来的顺序不一致问题。本申请使数据上链、数据查询、合约执行等操作的稳定性得到提升,可以很大程度避免因网关节点宕机导致的区块链交易失败,有助于提高了网关服务的稳定性,避免网关故障导致系统崩溃。

基于上述任一实施例的分布式区块链智能网关系统,本申请提供一种应用请求处理方法,图4为本申请实施例提供的应用请求处理方法的示意图,如图4所示,所述方法包括:

S1、响应于接收应用调用区块链的处理请求,将处理请求发送至所述消息队列,以使得所述消息队列对处理请求进行排序以得到消息处理队列;

S2、从所述消息队列的消息处理队列中获取调用区块链的处理请求,执行区块链智能合约功能,得到对应的处理结果;

S3、将所述处理结果发送至应用。

在一些实施例中,响应于接收应用调用区块链的处理请求,S1,包括:响应于接收应用调用区块链的处理请求,根据所述处理请求校验所述应用的账户配置信息是否具备区块链调用权限,若具备,则将处理请求发送至所述消息队列。

在一些实施例中,S2,包括:

从所述消息队列的消息处理队列中获取调用区块链的处理请求,将所述处理请求解析为调用区块链的智能合约接口请求包;

根据预设配置信息选择所述处理请求对应的目标区块链节点;

通过所述目标区块链节点执行区块链智能合约功能,得到对应的处理结果。

在一些实施例中,还包括:

若所述处理请求为上链请求,采用异步方式将所述处理请求的处理结果插入待确认队列;

若所述处理请求为查询请求,采用同步方式对所述处理请求的处理结果执行返回应用处理。

在一些实施例中,还包括:

在所述处理结果为区块链调用失败时,对所述处理请求进行重处理。

在一些实施例中,对所述处理请求进行重处理,包括:

获取处理结果为区块链调用失败的处理请求;

通过调用区块链查询服务,判断所述处理请求对应的数据是否在链上;

若数据不在链上,则判断是否达到最大重试次数;

若未达到最大重试次数,则根据所述处理请求执行重上链处理。

应该理解的是,虽然上述实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

可以理解的是,以上实施方式仅仅是为了说明本申请的原理而采用的示例性实施方式,然而本申请并不局限于此。对于本领域内的普通技术人员而言,在不脱离本申请的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本申请的保护范围。

相关技术
  • 一种基于分布式智能网关的人工智能决策系统及方法
  • 一种基于人工智能的在线教育课程请求处理方法
  • 一种基于区块链动态智能合约的数据处理方法及终端
  • 一种应用区块链技术的智能网关物联网控制系统及方法
  • 一种应用区块链技术的智能网关物联网控制方法及系统
技术分类

06120116679619