CN114884962A - 负载均衡方法及装置和电子设备 - Google Patents

负载均衡方法及装置和电子设备 Download PDF

Info

Publication number
CN114884962A
CN114884962A CN202210473991.XA CN202210473991A CN114884962A CN 114884962 A CN114884962 A CN 114884962A CN 202210473991 A CN202210473991 A CN 202210473991A CN 114884962 A CN114884962 A CN 114884962A
Authority
CN
China
Prior art keywords
transaction request
blockchain
transaction
consensus
connection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210473991.XA
Other languages
English (en)
Other versions
CN114884962B (zh
Inventor
林鹏
邓福喜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Ant Blockchain Technology Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ant Blockchain Technology Shanghai Co Ltd filed Critical Ant Blockchain Technology Shanghai Co Ltd
Priority to CN202210473991.XA priority Critical patent/CN114884962B/zh
Publication of CN114884962A publication Critical patent/CN114884962A/zh
Priority to PCT/CN2022/135418 priority patent/WO2023207082A1/zh
Application granted granted Critical
Publication of CN114884962B publication Critical patent/CN114884962B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1025Dynamic adaptation of the criteria on which the server selection is based

Abstract

本说明书实施例提供一种负载均衡方法及装置和电子设备。所述方法包括:接收用户提交的交易请求;响应于接收到的用户提交的交易请求,确定所述交易请求的类型;如果所述交易请求为与区块链交易相关的交易请求,基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理;其中,所述区块链支持的不同类型的共识算法,分别对应不同的负载均衡策略。

Description

负载均衡方法及装置和电子设备
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种负载均衡方法及装置和电子设备。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
发明内容
本说明书实施例提供的一种提高信息安全的方法及装置和电子设备。
根据本说明书实施例的第一方面,提供一种负载均衡方法,应用于与区块链对应的接入程序,所述方法包括:
接收用户提交的交易请求;
响应于接收到的用户提交的交易请求,确定所述交易请求的类型;
如果所述交易请求为与区块链交易相关的交易请求,基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理;其中,所述区块链支持的不同类型的共识算法,分别对应不同的负载均衡策略。
可选的,所述方法还包括:
如果所述交易请求为与区块链交易无关的交易请求,基于预设的负载均衡策略,从所述区块链中不参与共识的节点设备中为所述交易请求分配负载最优的节点设备,并将所述交易请求发送至该节点设备进行处理。
可选的,所述区块链支持的共识算法包括异步共识算法;所述与区块链交易相关的交易请求包括区块链交易和针对区块链交易的查询请求;
所述基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,包括:
如果所述交易请求为区块链交易,基于与所述异步共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述区块链交易分配最优负载的目标节点设备,并建立所述区块链交易与所述目标节点设备的绑定关系;
如果所述交易请求为与区块链交易对应的查询请求,基于与所述异步共识算法对应的负载均衡策略,查询所述绑定关系,将与所述区块链交易绑定的目标节点设备分配给所述查询请求。
可选的,所述区块链支持的共识算法还包括同步共识算法;
所述基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,包括:
基于与所述同步共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配最优负载的目标节点设备。
可选的,所述最优负载的节点设备包括随机指定的节点设备。
可选的,所述同步共识算法包括pbft共识算法;所述异步共识算法包括honeybadger共识算法。
可选的,所述接入程序包括用于接入区块链的SDK程序。
可选的,所述SDK程序包括用户客户端搭载的SDK接入程序;
所述接收用户提交的交易请求,包括:
获取用户在所述用户客户端上发起的交易请求。
可选的,所述SDK程序包括区块链服务平台上搭载的与用户客户端对应的SDK接入服务程序;
所述接收用户提交的交易请求,包括:
接收所述用户客户端通过调用所述区块链服务平台上部署的与所述SDK接入服务程序对应服务接口提交的交易请求。
可选的,所述接入程序维护了基于与所述区块链中参与共识的各个节点设备之间的连接构成的第一连接池;以及,基于与所述区块链中不参与共识的各个节点设备之间的连接构成的第二连接池;
所述从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理,包括:
从所述第一连接池中为所述交易请求分配目标连接,并基于所述目标连接将所述交易请求发送至与所述目标连接对应的目标节点设备进行处理;
所述从所述区块链中不参与共识的节点设备中为所述交易请求分配负载最优的节点设备,并将所述交易请求发送至该节点设备进行处理,包括:
从所述第二连接池中为所述交易请求分配目标连接,并基于所述目标连接将所述交易请求发送至与所述目标连接对应的目标节点设备进行处理。
可选的,所述方法还包括:
定时检测确定所述第一连接池和所述第二连接池中的连接是否可用,并基于检测结果对所述第一连接池和所述第二连接池中的连接添加指示所述连接为可用的可用标签;
所述从所述第一连接池中为所述交易请求分配目标连接,包括:
从所述第一连接池内被添加了可用标签的连接中为所述交易请求分配可用的目标连接;
所述从所述第二连接池中为所述交易请求分配目标连接,包括:
从所述第二连接池内被添加了可用标签的连接中为所述交易请求分配可用的目标连接。
可选的,所述定时确定所述第一连接池和所述第二连接池中的连接是否可用,包括:
定时向所述第一连接池和所述第二连接池中的连接对应的节点设备发送异步查询请求;
如果在预设的时间戳范围内接收到所述节点设备返回的响应数据,则确定该连接可用;
如果在预设的时间戳范围内未接收到所述节点设备返回的响应数据,则确定该连接不可用。
可选的,所述预设的时间戳范围包括与所述区块链中指定区块对应的时间戳范围。
根据本说明书实施例的第二方面,提供一种负载均衡装置,应用于与区块链对应的接入程序,所述装置包括:
接收单元,接收用户提交的交易请求;
确定单元,响应于接收到的用户提交的交易请求,确定所述交易请求的类型;
均衡单元,在所述交易请求为与区块链交易相关的交易请求时,基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理;其中,所述区块链支持的不同类型的共识算法,分别对应不同的负载均衡策略。
可选的,所述均衡单元,还用于在所述交易请求为与区块链交易无关的交易请求时,基于预设的负载均衡策略,从所述区块链中不参与共识的节点设备中为所述交易请求分配负载最优的节点设备,并将所述交易请求发送至该节点设备进行处理。
可选的,所述区块链支持的共识算法包括异步共识算法;所述与区块链交易相关的交易请求包括区块链交易和针对区块链交易的查询请求;
所述均衡单元,还用于在所述交易请求为区块链交易时,基于与所述异步共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述区块链交易分配最优负载的目标节点设备,并建立所述区块链交易与所述目标节点设备的绑定关系;以及,在所述交易请求为与区块链交易对应的查询请求,基于与所述异步共识算法对应的负载均衡策略,查询所述绑定关系,将与所述区块链交易绑定的目标节点设备分配给所述查询请求。
可选的,所述区块链支持的共识算法还包括同步共识算法;
所述均衡单元,还用于基于与所述同步共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配最优负载的目标节点设备。
可选的,所述最优负载的节点设备包括随机指定的节点设备。
可选的,所述同步共识算法包括pbft共识算法;所述异步共识算法包括honeybadger共识算法。
可选的,所述接入程序包括用于接入区块链的SDK程序。
可选的,所述SDK程序包括用户客户端搭载的SDK接入程序;
所述接收单元,还用于获取用户在所述用户客户端上发起的交易请求。
可选的,所述SDK程序包括区块链服务平台上搭载的与用户客户端对应的SDK接入服务程序;
所述接收单元,还用于接收所述用户客户端通过调用所述区块链服务平台上部署的与所述SDK接入服务程序对应服务接口提交的交易请求。
可选的,所述接入程序维护了基于与所述区块链中参与共识的各个节点设备之间的连接构成的第一连接池;以及,基于与所述区块链中不参与共识的各个节点设备之间的连接构成的第二连接池;
所述均衡单元中从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理,包括:
从所述第一连接池中为所述交易请求分配目标连接,并基于所述目标连接将所述交易请求发送至与所述目标连接对应的目标节点设备进行处理;
所述均衡单元中从所述区块链中不参与共识的节点设备中为所述交易请求分配负载最优的节点设备,并将所述交易请求发送至该节点设备进行处理,包括:
从所述第二连接池中为所述交易请求分配目标连接,并基于所述目标连接将所述交易请求发送至与所述目标连接对应的目标节点设备进行处理。
可选的,所述装置还包括:
检测单元,定时检测确定所述第一连接池和所述第二连接池中的连接是否可用,并基于检测结果对所述第一连接池和所述第二连接池中的连接添加指示所述连接为可用的可用标签;
所述均衡单元中从所述第一连接池中为所述交易请求分配目标连接,包括:
从所述第一连接池内被添加了可用标签的连接中为所述交易请求分配可用的目标连接;
所述均衡单元中从所述第二连接池中为所述交易请求分配目标连接,包括:
从所述第二连接池内被添加了可用标签的连接中为所述交易请求分配可用的目标连接。
可选的,所述检测单元,还用于定时向所述第一连接池和所述第二连接池中的连接对应的节点设备发送异步查询请求;如果在预设的时间戳范围内接收到所述节点设备返回的响应数据,则确定该连接可用;如果在预设的时间戳范围内未接收到所述节点设备返回的响应数据,则确定该连接不可用。
可选的,所述预设的时间戳范围包括与所述区块链中指定区块对应的时间戳范围。
根据本说明书实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为上述任一项负载均衡方法。
本说明书实施例,提供了一种负载均衡方案,通过为区块链支持的不同类型的共识算法设置对应不同的负载均衡策略,以适配不同类型的共识算法导致的负载差异;如此,针对用户提交的与区块链交易相关的交易请求,可以根据对该交易请求进行共识的共识算法所对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备进行处理。由于负载均衡策略考虑了共识算法的负载差异,因此分配的目标节点设备是当前最优的节点设备,基于目标节点设备可以快速响应交易请求,从而可以避免部分节点设备负载过多导致响应缓慢的问题。
附图说明
图1是一示例性实施例提供的一种负载均衡方法的流程图;
图2是一示例性实施例提供的一种负载均衡的系统架构图;
图3是一示例性实施例提供的一种电子设备的结构示意图;
图4是一示例性实施例提供的一种负载均衡装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实现方式并不代表与本说明书一个或多个实施例相一致的所有实现方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
由于区块链相对于非区块链场景存在一定的特殊性,因而现有非区块链场景下的负载均衡算法或策略存在负载均衡效果不理想,无法满足区块链对负载均衡的需求。例如,由于区块链存在共识机制,需要对不同的交易类型进行共识,因此区块链通常支持多种不同的共识算法,而不同共识算法导致的负载结果并不相同。
现有负载均衡方案并未考虑不同共识算法下区块链的负载均衡差异,依然采用统一的负载均衡方案,这样就容易导致区块链中局部的节点设备可能会出现过重的负载压力,而局部的节点设备却处于空闲状态。如此,容易导致区块链整体处理效率偏低,无法及时响应交易请求。
为此,本说明书针对区块链场景,提供一种专门适用于区块链的负载均衡方案,可以高效地分配交易请求,实现区块链中节点设备均衡地处理交易请求,解决各节点设备负载不均衡的问题。
以下请参见图1,图1是一示例性实施例提供的一种负载均衡方法的流程图。所述方法可以应用于与区块链对应的接入程序;所述方法可以包括以下步骤:
步骤110,接收用户提交的交易请求;
步骤120,响应于接收到的用户提交的交易请求,确定所述交易请求的类型;
步骤130,如果所述交易请求为与区块链交易相关的交易请求,基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理;其中,所述区块链支持的不同类型的共识算法,分别对应不同的负载均衡策略。
本说明书描述的区块链,具体可以包括任意类型的区块链网络;在实际应用中,可以采用公有链(Public Blockchain),私有链(Private Blockchain)和联盟链(ConsortiumBlockchain)中的任意一种。此外,还可以有上述多种类型的结合,比如私有链+联盟链、联盟链+公有链等。
其中,去中心化程度最高的是公有链。加入公有链的参与者(也可称为区块链中的节点设备)可以读取链上的数据记录、参与交易、以及竞争新区块的记账权等。而且,各节点设备可自由加入或者退出网络,并进行相关操作。
私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,其对节点设备具有严格限制且节点设备数量较少。这种类型的区块链更适合于特定机构内部使用。
联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点设备通常有与之相对应的实体机构或者组织;节点设备通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
如图2为本说明书描述的一种负载均衡的系统架构图。所述负载均衡的系统可以包括用户客户端、接入程序和区块链。
上述用户客户端(例如APP应用),可以面向用户提供区块链的服务入口,用户可以通过以上示出的服务入口,向接入程序提交交易请求,由接入程序基于负载均衡策略,将所述交易请求发送至所述区块链中最优负载的目标节点设备,以使所述目标节点设备处理所述交易请求。
上述接入程序,可以是指区块链与用户客户端之间的中间系统,其不属于区块链。接入程序中可以维护有各个用户客户端与区块链中各个节点设备之间连接的连接池。即接入程序为每个用户客户端维护有对应的连接池。
在本说明书中,上述接入程序具体可以包括用于接入区块链的SDK(SoftwareDevelopment Kit,软件开发工具包)程序。
该示例中,可以将本说明书提供的负载均衡的实现代码集成到SDK程序,从而基于SDK程序实现区块链的负载均衡的目标。
在一种实现方式中,所述SDK程序可以包括用户客户端搭载的SDK接入程序;
相应地,上述步骤110,则可以包括获取用户在所述用户客户端上发起的交易请求。
在一种实现方式中,所述SDK程序包括区块链服务平台上搭载的与用户客户端对应的SDK接入服务程序;
相应地,上述步骤110,则可以包括接收所述用户客户端通过调用所述区块链服务平台上部署的与所述SDK接入服务程序对应服务接口提交的交易请求。
在应用中,任意一个用户客户端提交的交易请求,都会先发送到接入程序;然后由接入程序从该用户客户端对应的连接池中确认一个最优负载的目标节点设备;接着由接入程序将这个交易请求发送至区块链中的目标节点设备;最后由区块链中的目标节点设备响应处理所述用户客户端提交的交易请求。
如此,通过接入程序基于区块链中节点设备的真实负载状况,在将交易请求提交到区块链之间提前做了负载均衡,使得每次负责处理交易请求的目标节点设备都是最优负载的节点设备;如此,就避免了避免部分节点设备负载过多但还要处理更多交易请求,而部分节点设备负载过少却无交易请求处理这样负载不均衡的问题。并且负载均衡后,可以合理利用原本空闲无交易请求的节点设备的处理能力,从而提升区块链整体上处理效率,降低区块链处理请求的响应时间。
针对区块链的交易请求可以是指以区块链所支持的标准的交易(transaction)格式生产的请求,并且请求中包含了需要区块链所要执行业务所需的数据。也就是说,对于任何物理世界产生的真实数据,都可以将其构建成区块链所支持的标准的交易(transaction)格式,然后发布至区块链,由区块链中的节点对收到的交易进行处理,由区块链中作为记账节点的节点,将这笔交易打包进区块,在区块链中进行持久化存证。
一般的,交易请求可以分为与区块链交易相关的交易请求,以及与区块链交易无关的交易请求。其中,交易请求在执行前需要进行共识,即区块链中参与共识的节点设备在收到的交易请求后,首先需要对交易请求进行共识处理,在共识通过后才会进行处理,由区块链中作为记账节点的节点,将这笔交易打包进区块,在区块链中进行持久化存证。而交易请求在执行前不需要进行共识。
针对交易请求,由于需要参与共识的节点设备进行共识,因此可以执行前述步骤230即如果所述交易请求为与区块链交易相关的交易请求,基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理;其中,所述区块链支持的不同类型的共识算法,分别对应不同的负载均衡策略。
针对交易请求,由于无需进行共识,因此可以执行步骤240:
如果所述交易请求为与区块链交易无关的交易请求,基于预设的负载均衡策略,从所述区块链中不参与共识的节点设备中为所述交易请求分配负载最优的节点设备,并将所述交易请求发送至该节点设备进行处理。
其中,所述不参与共识的节点设备可以是轻节点,轻节点本地不存储区块链账本,所以与区块链交易相关的交易请求不能发送给这类节点设备处理。
通过上述实施例,考虑到交易请求的类型存在的差异,结合区块链中节点设备的不同,针对性的为交易请求和交易请求分别提供不同的负载均衡策略,实现区块链中节点设备均衡地处理交易请求,解决各节点设备负载不均衡的问题。
进一步的,由于区块链可以支持不同的共识算法,本说明书还针对不同的共识算法分别提供不同的负载均衡策略,以进一步提高负载均衡的性能和效率。
一般的,一笔交易的发布分为两步,第一步是将交易请求发布至区块链,第二步是根据交易哈希查询区块链执行第一步交易请求后产生的交易执行结果。对于区块链来说,其会先接收交易请求再接收交易查询,因此需要将交易请求和交易执行结果合并为一个响应结果返回给用户客户端。
在一示例性的实施例中,如果所述区块链支持的共识算法包括异步共识算法;所述与区块链交易相关的交易请求包括区块链交易和针对区块链交易的查询请求;
相应地,上述步骤230中,基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,进一步可以包括:
如果所述交易请求为区块链交易,基于与所述异步共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述区块链交易分配最优负载的目标节点设备,并建立所述区块链交易与所述目标节点设备的绑定关系;
如果所述交易请求为与区块链交易对应的查询请求,基于与所述异步共识算法对应的负载均衡策略,查询所述绑定关系,将与所述区块链交易绑定的目标节点设备分配给所述查询请求。
该示例中,由于异步共识算法不会将区块链执行第一步交易请求后产生的交易执行结果广播给各个节点设备,只有接受第一步交易请求并执行交易请求的当前节点设备本身存证有交易执行结果。因此,在进行第二步时,除了当前节点设备,其它节点设备由于本身没有存证交易执行结果因此也就无法在进行第二步时查询到交易执行结果。故针对异步共识算法,在进行第一步时可以建立所述区块链交易与所述目标节点设备的绑定关系,然后在进行第二步时强制将查询交易也负载到第一步的目标节点设备上。这样,就不会出现查询不到交易执行结果的问题。其中,所述异步共识算法可以包括honeybadger共识算法。
在一示例性的实施例中,如果所述区块链支持的共识算法还包括同步共识算法;
相应地,上述步骤230中,基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,可以包括:
基于与所述同步共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配最优负载的目标节点设备。
该示例中,由于同步共识算法会将区块链执行第一步交易请求后产生的交易执行结果广播给各个节点设备,以便各节点设备本地存证交易执行结果。因此,针对同步共识算法,任何接收到交易执行结果的节点设备都可以作为第二步接收交易查询的节点设备。基于此,在做负载均衡时,可以从所述区块链中参与共识的节点设备中为所述交易请求分配最优负载的目标节点设备。所述同步共识算法可以包括PBFT(Practical Byzantine FaultTolerance,实用拜占庭容错)共识算法。
在上述同步共识算法还是异步共识算法的示例中,所述最优负载的节点设备可以包括随机指定的节点设备。
值得一提的是,在采用异步共识算法的区块链中,虽然最优负载的节点设备为随机指定的节点设备,但是由于引入强制将交易请求和交易结果的查询请求负载均衡到同一个节点设备进行处理的负载均衡机制,可以确保在区块链支持异步共识算法时,业务系统能够实时获取到交易执行结果。
如前所述,接入程序中维护的连接池是用于维护用户客户端与区块链中的节点设备之间连接的,并且记录有各个节点设备的负载状况。
交易请求可以分为与区块链交易相关的交易请求,以及与区块链交易无关的交易请求。其中,交易请求在执行前需要进行共识,即区块链中参与共识的节点设备在收到的交易请求后,首先需要对交易请求进行共识处理,在共识通过后才会进行处理,由区块链中作为记账节点的节点,将这笔交易打包进区块,在区块链中进行持久化存证。而交易请求在执行前不需要进行共识。
为此,本说明书中也可以对连接池进行分类,具体地,所述接入程序中可以维护基于与所述区块链中参与共识的各个节点设备之间的连接构成的第一连接池;以及,基于与所述区块链中不参与共识的各个节点设备之间的连接构成的第二连接池;
相应地,所述步骤130中,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理,进一步可以包括:
从所述第一连接池中为所述交易请求分配目标连接,并基于所述目标连接将所述交易请求发送至与所述目标连接对应的目标节点设备进行处理;
另外,所述步骤140中,从所述区块链中不参与共识的节点设备中为所述交易请求分配负载最优的节点设备,并将所述交易请求发送至该节点设备进行处理,进一步可以包括:
从所述第二连接池中为所述交易请求分配目标连接,并基于所述目标连接将所述交易请求发送至与所述目标连接对应的目标节点设备进行处理。
以下针对连接池的建立和更新进行说明:
针对每个用户客户端,建立所述用户客户端与所述区块链中参与共识的节点设备之间连接的第一连接池,以及所述用户客户端与所述区块链中不参与共识的节点设备之间连接的第二连接池;
定时检测确定所述第一连接池和所述第二连接池中的连接是否可用,并基于检测结果对所述第一连接池和所述第二连接池中的连接添加指示所述连接为可用的可用标签,以更新所述用户客户端对应的连接池。
一般的,用户客户端在启动时可以根据配置的区块链上各节点IP和端口,创建与各节点设备的连接,并且由连接池管理。同时,可以设置一个定时任务对连接池中的连接进行检测。定时任务可以向所有的连接发送异步查询请求,各节点设备在接收到异步查询请求后,可以返回响应数据。这样定时任务就可以根据与各节点设备对应的连接是否返回响应数据来更新连接池。
相应的,前述从所述第一连接池中为所述交易请求分配目标连接,可以包括:
从所述第一连接池内被添加了可用标签的连接中为所述交易请求分配可用的目标连接;
相应地,前述从所述第二连接池中为所述交易请求分配目标连接,可以包括:
从所述第二连接池内被添加了可用标签的连接中为所述交易请求分配可用的目标连接。
在一示例性的实施例中,所述定时确定所述第一连接池和所述第二连接池中的连接是否可用,包括:
定时向所述第一连接池和所述第二连接池中的连接对应的节点设备发送异步查询请求;
如果在预设的时间戳范围内接收到所述节点设备返回的响应数据,则确定该连接可用(将所述连接池中与该节点设备之间的连接标记为可用);
如果在预设的时间戳范围内未接收到所述节点设备返回的响应数据,则确定该连接不可用(将所述连接池中与该节点设备之间的连接标记为不可用)。
该实施例中,如果区块链中有节点设备未返回响应数据,则定时任务的超时机制会自动确认超时,从而将与该节点设备的连接标记为不可用。而在负载均衡时,不可用的节点设备显然是不能使用的,只能从连接池中可用的连接中确定目标节点设备。另外,由于区块链中节点设备的负载状况是经常发送变化的,因此通过定时任务可以周期性更新连接池,更新各节点设备最新的负载状况。
其中,所述预设的时间戳范围包括与所述区块链中指定区块对应的时间戳范围。例如,区块链中最新的一个区块对应的时间戳范围,或者区块链中最近的若干区块对应的时间戳范围。
综上所述,本说明书提供了一种负载均衡方案,通过为区块链支持的不同类型的共识算法设置对应不同的负载均衡策略,以适配不同类型的共识算法导致的负载差异;如此,针对用户提交的与区块链交易相关的交易请求,可以根据对该交易请求进行共识的共识算法所对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备进行处理。由于负载均衡策略考虑了共识算法的负载差异,因此分配的目标节点设备是当前最优的节点设备,基于目标节点设备可以快速响应交易请求,从而可以避免部分节点设备负载过多导致响应缓慢的问题。
与上述方法实施例相对应,本说明书还提供了一种负载均衡装置的实施例。
本说明书的负载均衡装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
从硬件层面而言,如图3所示,为本说明书的负载均衡装置所在电子设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
图4是本说明书一示例性实施例示出的一种负载均衡装置的框图。所述负载均衡装置可以应用于与区块链对应的接入程序,所述装置包括:
接收单元410,接收用户提交的交易请求;
确定单元420,响应于接收到的用户提交的交易请求,确定所述交易请求的类型;
均衡单元430,在所述交易请求为与区块链交易相关的交易请求时,基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理;其中,所述区块链支持的不同类型的共识算法,分别对应不同的负载均衡策略。
可选的,所述均衡单元430,还用于在所述交易请求为与区块链交易无关的交易请求时,基于预设的负载均衡策略,从所述区块链中不参与共识的节点设备中为所述交易请求分配负载最优的节点设备,并将所述交易请求发送至该节点设备进行处理。
可选的,所述区块链支持的共识算法包括异步共识算法;所述与区块链交易相关的交易请求包括区块链交易和针对区块链交易的查询请求;
所述均衡单元430,还用于在所述交易请求为区块链交易时,基于与所述异步共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述区块链交易分配最优负载的目标节点设备,并建立所述区块链交易与所述目标节点设备的绑定关系;以及,在所述交易请求为与区块链交易对应的查询请求,基于与所述异步共识算法对应的负载均衡策略,查询所述绑定关系,将与所述区块链交易绑定的目标节点设备分配给所述查询请求。
可选的,所述区块链支持的共识算法还包括同步共识算法;
所述均衡单元430,还用于基于与所述同步共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配最优负载的目标节点设备。
可选的,所述最优负载的节点设备包括随机指定的节点设备。
可选的,所述同步共识算法包括pbft共识算法;所述异步共识算法包括honeybadger共识算法。
可选的,所述接入程序包括用于接入区块链的SDK程序。
可选的,所述SDK程序包括用户客户端搭载的SDK接入程序;
所述接收单元410,还用于获取用户在所述用户客户端上发起的交易请求。
可选的,所述SDK程序包括区块链服务平台上搭载的与用户客户端对应的SDK接入服务程序;
所述接收单元410,还用于接收所述用户客户端通过调用所述区块链服务平台上部署的与所述SDK接入服务程序对应服务接口提交的交易请求。
可选的,所述接入程序维护了基于与所述区块链中参与共识的各个节点设备之间的连接构成的第一连接池;以及,基于与所述区块链中不参与共识的各个节点设备之间的连接构成的第二连接池;
所述均衡单元430中从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理,包括:
从所述第一连接池中为所述交易请求分配目标连接,并基于所述目标连接将所述交易请求发送至与所述目标连接对应的目标节点设备进行处理;
所述均衡单元430中从所述区块链中不参与共识的节点设备中为所述交易请求分配负载最优的节点设备,并将所述交易请求发送至该节点设备进行处理,包括:
从所述第二连接池中为所述交易请求分配目标连接,并基于所述目标连接将所述交易请求发送至与所述目标连接对应的目标节点设备进行处理。
可选的,所述装置还包括:
检测单元,定时检测确定所述第一连接池和所述第二连接池中的连接是否可用,并基于检测结果对所述第一连接池和所述第二连接池中的连接添加指示所述连接为可用的可用标签;
所述均衡单元430中从所述第一连接池中为所述交易请求分配目标连接,包括:
从所述第一连接池内被添加了可用标签的连接中为所述交易请求分配可用的目标连接;
所述均衡单元430中从所述第二连接池中为所述交易请求分配目标连接,包括:
从所述第二连接池内被添加了可用标签的连接中为所述交易请求分配可用的目标连接。
可选的,所述检测单元,还用于定时向所述第一连接池和所述第二连接池中的连接对应的节点设备发送异步查询请求;如果在预设的时间戳范围内接收到所述节点设备返回的响应数据,则确定该连接可用;如果在预设的时间戳范围内未接收到所述节点设备返回的响应数据,则确定该连接不可用。
可选的,所述预设的时间戳范围包括与所述区块链中指定区块对应的时间戳范围。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实现方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (14)

1.一种负载均衡方法,应用于与区块链对应的接入程序,所述方法包括:
接收用户提交的交易请求;
响应于接收到的用户提交的交易请求,确定所述交易请求的类型;
如果所述交易请求为与区块链交易相关的交易请求,基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理;其中,所述区块链支持的不同类型的共识算法,分别对应不同的负载均衡策略。
2.根据权利要求1所述的方法,所述方法还包括:
如果所述交易请求为与区块链交易无关的交易请求,基于预设的负载均衡策略,从所述区块链中不参与共识的节点设备中为所述交易请求分配负载最优的节点设备,并将所述交易请求发送至该节点设备进行处理。
3.根据权利要求1所述的方法,所述区块链支持的共识算法包括异步共识算法;所述与区块链交易相关的交易请求包括区块链交易和针对区块链交易的查询请求;
所述基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,包括:
如果所述交易请求为区块链交易,基于与所述异步共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述区块链交易分配最优负载的目标节点设备,并建立所述区块链交易与所述目标节点设备的绑定关系;
如果所述交易请求为与区块链交易对应的查询请求,基于与所述异步共识算法对应的负载均衡策略,查询所述绑定关系,将与所述区块链交易绑定的目标节点设备分配给所述查询请求。
4.根据权利要求3所述的方法,所述区块链支持的共识算法还包括同步共识算法;
所述基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,包括:
基于与所述同步共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配最优负载的目标节点设备。
5.根据权利要求2-4中任一所述的方法,所述最优负载的节点设备包括随机指定的节点设备。
6.根据权利要求4所述的方法,所述同步共识算法包括pbft共识算法;所述异步共识算法包括honeybadger共识算法。
7.根据权利要求1所述的方法,所述接入程序包括用于接入区块链的SDK程序。
8.根据权利要求7所述的方法,所述SDK程序包括用户客户端搭载的SDK接入程序;
所述接收用户提交的交易请求,包括:
获取用户在所述用户客户端上发起的交易请求。
9.根据权利要求7所述的方法,所述SDK程序包括区块链服务平台上搭载的与用户客户端对应的SDK接入服务程序;
所述接收用户提交的交易请求,包括:
接收所述用户客户端通过调用所述区块链服务平台上部署的与所述SDK接入服务程序对应服务接口提交的交易请求。
10.根据权利要求2所述的方法,所述接入程序维护了基于与所述区块链中参与共识的各个节点设备之间的连接构成的第一连接池;以及,基于与所述区块链中不参与共识的各个节点设备之间的连接构成的第二连接池;所述方法还包括:
定时检测确定所述第一连接池和所述第二连接池中的连接是否可用,并基于检测结果对所述第一连接池和所述第二连接池中的连接添加指示所述连接为可用的可用标签;
所述从所述第一连接池中为所述交易请求分配目标连接,包括:
从所述第一连接池内被添加了可用标签的连接中为所述交易请求分配可用的目标连接;
所述从所述第二连接池中为所述交易请求分配目标连接,包括:
从所述第二连接池内被添加了可用标签的连接中为所述交易请求分配可用的目标连接。
11.根据权利要求10所述的方法,所述定时确定所述第一连接池和所述第二连接池中的连接是否可用,包括:
定时向所述第一连接池和所述第二连接池中的连接对应的节点设备发送异步查询请求;
如果在预设的时间戳范围内接收到所述节点设备返回的响应数据,则确定该连接可用;
如果在预设的时间戳范围内未接收到所述节点设备返回的响应数据,则确定该连接不可用。
12.根据权利要求11所述的方法,所述预设的时间戳范围包括与所述区块链中指定区块对应的时间戳范围。
13.一种负载均衡装置,应用于与区块链对应的接入程序,所述装置包括:
接收单元,接收用户提交的交易请求;
确定单元,响应于接收到的用户提交的交易请求,确定所述交易请求的类型;
均衡单元,在所述交易请求为与区块链交易相关的交易请求时,基于与所述区块链支持的共识算法对应的负载均衡策略,从所述区块链中参与共识的节点设备中为所述交易请求分配目标节点设备,并将所述交易请求发送至分配的所述目标节点设备进行处理;其中,所述区块链支持的不同类型的共识算法,分别对应不同的负载均衡策略。
14.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-12中任一项所述的方法。
CN202210473991.XA 2022-04-29 2022-04-29 负载均衡方法及装置和电子设备 Active CN114884962B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210473991.XA CN114884962B (zh) 2022-04-29 2022-04-29 负载均衡方法及装置和电子设备
PCT/CN2022/135418 WO2023207082A1 (zh) 2022-04-29 2022-11-30 负载均衡方法及装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210473991.XA CN114884962B (zh) 2022-04-29 2022-04-29 负载均衡方法及装置和电子设备

Publications (2)

Publication Number Publication Date
CN114884962A true CN114884962A (zh) 2022-08-09
CN114884962B CN114884962B (zh) 2024-03-26

Family

ID=82673009

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210473991.XA Active CN114884962B (zh) 2022-04-29 2022-04-29 负载均衡方法及装置和电子设备

Country Status (2)

Country Link
CN (1) CN114884962B (zh)
WO (1) WO2023207082A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023207082A1 (zh) * 2022-04-29 2023-11-02 蚂蚁区块链科技(上海)有限公司 负载均衡方法及装置和电子设备
CN117034361A (zh) * 2023-07-31 2023-11-10 广州承启医学检验有限公司 一种基因检测检验实验室信息管理方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190188655A1 (en) * 2017-12-19 2019-06-20 International Business Machines Corporation Dynamic blockchain transactional policy management
CN111464633A (zh) * 2020-03-31 2020-07-28 成都质数斯达克科技有限公司 用于区块链的交易信息的共识方法及系统
CN111786952A (zh) * 2020-05-29 2020-10-16 中国银联股份有限公司 区块链系统的共识方法、装置、设备及介质
CN115114009A (zh) * 2021-03-17 2022-09-27 中移(上海)信息通信科技有限公司 数据查询方法、主节点及从节点

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11765225B2 (en) * 2019-03-18 2023-09-19 Reliance Jio Infocomm Limited Systems and methods for microservice execution load balancing in virtual distributed ledger networks
CN111181715B (zh) * 2019-12-30 2022-07-12 杭州云象网络技术有限公司 一种基于一致性哈希共识协议的多方跨链方法
CN111600967B (zh) * 2020-07-24 2020-11-06 江苏荣泽信息科技股份有限公司 一种基于访问压力的区块链节点间负载均衡系统
CN112087502B (zh) * 2020-08-28 2022-10-21 成都质数斯达克科技有限公司 处理请求的方法、装置、设备及存储介质
CN112434114B (zh) * 2021-01-26 2021-07-02 腾讯科技(深圳)有限公司 电子票据处理方法、装置、介质及电子设备
CN113761068A (zh) * 2021-09-15 2021-12-07 虎彩印艺股份有限公司 一种提升区块链网络并发处理能力的方法
CN114884962B (zh) * 2022-04-29 2024-03-26 蚂蚁区块链科技(上海)有限公司 负载均衡方法及装置和电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190188655A1 (en) * 2017-12-19 2019-06-20 International Business Machines Corporation Dynamic blockchain transactional policy management
CN111464633A (zh) * 2020-03-31 2020-07-28 成都质数斯达克科技有限公司 用于区块链的交易信息的共识方法及系统
CN111786952A (zh) * 2020-05-29 2020-10-16 中国银联股份有限公司 区块链系统的共识方法、装置、设备及介质
CN115114009A (zh) * 2021-03-17 2022-09-27 中移(上海)信息通信科技有限公司 数据查询方法、主节点及从节点

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023207082A1 (zh) * 2022-04-29 2023-11-02 蚂蚁区块链科技(上海)有限公司 负载均衡方法及装置和电子设备
CN117034361A (zh) * 2023-07-31 2023-11-10 广州承启医学检验有限公司 一种基因检测检验实验室信息管理方法及系统

Also Published As

Publication number Publication date
CN114884962B (zh) 2024-03-26
WO2023207082A1 (zh) 2023-11-02

Similar Documents

Publication Publication Date Title
CN107196982B (zh) 一种用户请求的处理方法和装置
CN114884962B (zh) 负载均衡方法及装置和电子设备
JP6975153B2 (ja) データ格納サービス処理方法及び装置
US20200052885A1 (en) File storage method and apparatus for blockchain network
CN112860450B (zh) 一种请求处理方法及装置
TW202008763A (zh) 資料處理方法和裝置、用戶端
CN115002228B (zh) 服务级联调用方法、装置、电子设备及存储介质
EP3813335B1 (en) Service processing methods and systems based on a consortium blockchain network
CN107391033B (zh) 数据迁移方法及装置、计算设备、计算机存储介质
CN114036031B (zh) 一种企业数字中台中资源服务应用的调度系统和方法
CN110740155A (zh) 分布式系统中的请求处理方法及装置
CN109889561A (zh) 一种数据处理方法及装置
CN113194143B (zh) 一种区块链账户的创建方法、装置及电子设备
CN112596669A (zh) 一种基于分布式存储的数据处理方法及装置
CN108153494A (zh) 一种io请求处理方法及装置
WO2023207087A1 (zh) 用于区块链的最优链路选择方法及装置和电子设备
CN110581784B (zh) 一种节点健康检查方法、装置及设备
CN112001800B (zh) 在区块链系统中进行业务处理的方法和装置
CN112764897B (zh) 任务请求的处理方法、装置、系统及计算机可读存储介质
CN111857548B (zh) 数据读取方法、装置及系统
CN114064780A (zh) 会话信息的处理方法、系统、装置、存储介质及电子设备
CN108920277B (zh) 业务执行系统、方法及装置、业务隔离系统
CN111435320B (zh) 一种数据处理方法及其装置
CN111984461B (zh) 一种数据读取的方法、装置及云存储系统
CN117880299A (zh) 基于通信网络的跨链计算方法、装置和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant