本申请涉及区块链,特别是涉及区块链负载均衡方法、装置、设备和存储介质。
背景技术:
1、区块链往往由多个节点组成,区块链节点需要对外提供数据查询功能,大量的数据请求访问到同一节点时可能会造成节点压力过大,影响后续的区块链出块,甚至导致节点崩溃。同时区块链节点还需要对外提供事件和区块的订阅功能,这些功能需要由调用方和节点建立长连接并产生订阅,过多的长连接和事件订阅也会对节点产生压力,影响区块链正常功能。针对这些问题需要采用负载均衡技术来解决。
2、传统的负载均衡技术采用随机分发、权重分类、最小连接数分发等固定策略,基于区块链节点本身的压力对交易请求进行重分配,该方案可以减少单个节点请求过多造成的压力问题,但实际上没有减少发送到节点的请求,导致整体节点压力大的问题。
3、相关技术中存在实际上没有减少发送到节点的请求,导致整体节点压力大的问题,目前还没有提出有效的解决方案。
技术实现思路
1、在本实施例中提供了一种区块链负载均衡方法、装置、设备和存储介质,以解决相关技术中实际上没有减少发送到节点的请求,导致整体节点压力大的问题。
2、第一个方面,在本实施例中提供了一种区块链负载均衡方法,应用于负载均衡服务器,所述负载均衡服务器包括负载均衡装置和区块链的各节点;所述区块链负载均衡方法适用于所述负载均衡装置;所述区块链负载均衡方法包括:
3、初始化所述负载均衡装置,建立所述负载均衡装置与活跃的所述节点的连接,得到配置参数;
4、获取客户端的区块链请求,确定所述区块链请求的请求类型;
5、若所述区块链请求为订阅类型的订阅请求,则根据所述订阅请求和所述配置参数中的订阅信息,确定是否存在相同的订阅;在存在相同的订阅时,复用对应的订阅号,并根据所述订阅信息和所述配置参数返回第一访问结果。
6、在其中的一些实施例中,所述区块链负载均衡方法还包括:
7、在不存在相同的订阅时,从所述配置参数中的节点活跃列表中确定与所述订阅请求对应的第二节点;基于所述订阅请求访问所述第二节点,返回第二访问结果。
8、在其中的一些实施例中,所述区块链负载均衡方法还包括:
9、若所述区块链请求为远程过程调用类型的远程过程调用请求,则根据所述远程过程调用请求和所述配置参数,返回第三访问结果。
10、在其中的一些实施例中,根据所述远程过程调用请求和所述配置参数,返回第三访问结果,包括:
11、将所述远程过程调用请求转换成具有唯一性的第一编码信息;
12、基于所述第一编码信息查询所述配置参数中是否存在对应的缓存结果;
13、若存在对应的缓存结果,则将所述缓存结果作为第三访问结果返回;
14、若不存在对应的缓存结果,则从所述配置参数中的节点活跃列表中确定与所述远程过程调用请求对应的第三节点;基于所述远程过程调用请求访问所述第三节点,返回第三访问结果。
15、在其中的一些实施例中,初始化所述负载均衡装置,得到配置参数,包括:
16、读取各所述节点配置的区块链请求的连接,基于所述连接对各所述节点进行查询,根据查询结果生成所述配置参数中的节点活跃列表和节点不活跃列表;
17、建立与所述节点活跃列表对应的节点的连接,生成所述配置参数中的订阅信息。
18、在其中的一些实施例中,所述区块链负载均衡方法还包括:
19、基于预设更新策略,对所述节点活跃列表和所述节点不活跃列表进行更新;所述更新策略包括定时策略和触发逃离策略。
20、在其中的一些实施例中,所述区块链负载均衡方法还包括:
21、基于所述区块链请求和对应的访回结果,生成所述配置参数中的缓存结果、映射关系以及用户与访回结果之间的节点关系。
22、第二个方面,在本实施例中提供了一种区块链负载均衡装置,包括:应用于负载均衡服务器,所述负载均衡服务器包括负载均衡装置和区块链的各节点;所述区块链负载均衡装置包括:
23、缓存模块,用于初始化所述负载均衡装置,建立所述负载均衡装置与活跃的所述节点的连接,得到配置参数;
24、负载均衡模块,用于获取客户端的区块链请求,确定所述区块链请求的请求类型;
25、若所述区块链请求为订阅类型的订阅请求,则根据所述订阅请求和所述配置参数中的订阅信息,确定是否存在相同的订阅;在存在相同的订阅时,复用对应的订阅号,并根据所述订阅信息和所述配置参数返回第一访问结果。
26、第三个方面,在本实施例中提供了一种设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面所述的区块链负载均衡方法。
27、第四个方面,在本实施例中提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面所述的区块链负载均衡方法。
28、与相关技术相比,在本实施例中提供的区块链负载均衡方法、装置、设备和存储介质,通过初始化负载均衡装置,建立负载均衡装置与活跃的节点的连接,得到配置参数;获取客户端的区块链请求,确定区块链请求的请求类型;若区块链请求为订阅类型的订阅请求,则根据订阅请求和配置参数中的订阅信息,确定是否存在相同的订阅;在存在相同的订阅时,复用对应的订阅号,并根据订阅信息和配置参数返回第一访问结果;解决了相关技术中实际上没有减少发送到节点的请求,导致整体节点压力大的问题,通过复用订阅号结合配置参数,来减少发送到节点的请求,实现了无感知的负载均衡。
29、本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
1.一种区块链负载均衡方法,其特征在于,应用于负载均衡服务器,所述负载均衡服务器包括负载均衡装置和区块链的各节点;所述区块链负载均衡方法适用于所述负载均衡装置;所述区块链负载均衡方法包括:
2.根据权利要求1所述的区块链负载均衡方法,其特征在于,所述区块链负载均衡方法还包括:
3.根据权利要求1所述的区块链负载均衡方法,其特征在于,所述区块链负载均衡方法还包括:
4.根据权利要求3所述的区块链负载均衡方法,其特征在于,根据所述远程过程调用请求和所述配置参数,返回第三访问结果,包括:
5.根据权利要求1所述的区块链负载均衡方法,其特征在于,初始化所述负载均衡装置,得到配置参数,包括:
6.根据权利要求5所述的区块链负载均衡方法,其特征在于,所述区块链负载均衡方法还包括:
7.根据权利要求1所述的区块链负载均衡方法,其特征在于,所述区块链负载均衡方法还包括:
8.一种区块链负载均衡装置,其特征在于,包括:应用于负载均衡服务器,所述负载均衡服务器包括负载均衡装置和区块链的各节点;所述区块链负载均衡装置包括:
9.一种设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至权利要求7中任一项所述的区块链负载均衡方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至权利要求7中任一项所述的区块链负载均衡方法的步骤。
