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

基于负载均衡的区块同步的方法及系统

文献发布时间:2024-04-18 19:52:40


基于负载均衡的区块同步的方法及系统

技术领域

本发明涉及区块链技术领域,具体地,涉及一种基于负载均衡的区块同步的方法及系统。

背景技术

区块链是一种分布式系统架构,具有不可篡改等特性,因此得到了越来越多的应用。在区块链系统中,多个参与节点共享账本数据,参与节点类型包括共识节点和非共识节点,且账本数据由链式区块构成。随着区块链中存储的数据的增长,当有节点新加入区块链网络或者当节点间账本数据不同步时,即某些节点保存的区块高度落后于其他节点时,会发起区块同步,从而保证区块链共识的有效推进。区块同步的类型包括轻量数据同步、全量数据、快速同步等。同时,需要对大量的区块数据进行同步,这将是对区块节点的计算资源以及区块链网络资源的挑战。

然而在区块同步过程中,尤其是全量数据同步中,往往会涉及到大量数据的广播,若某一节点收到过多区块同步请求时,可能会对其网络与计算资源造成冲击,从而导致节点宕机,区块同步请求失败。

专利文献CN110569305A公开了一种区块同步方法,应用于区块链网络中的一个区块链节点,包括:获取所述区块链网络中另一区块链节点的区块链信息,所述区块链信息包括区块高度;当所述一个区块链节点的区块高度小于所述另一区块链节点的区块高度时,获取所述另一区块链节点中与当前最新区块关联的全局状态信息;存储所述全局状态信息;以及,基于所述全局状态信息执行所述区块链网络的共识验证合约。

但是专利文献CN110569305A对于某一区块链节点需要处理过多区块同步请求,导致该节点的计算资源和网络资源耗尽进而使得该节点宕机的情况无法处理,会导致区块同步请求失败

专利文献CN109587271A一种主链平行链架构系统及区块同步方法、设备和存储介质,系统包括:主链系统、负载均衡系统和平行链系统;负载均衡系统用于为主链系统的各主链节点配置固定的第一访问地址与第一端口,第一访问地址与第一端口用于供平行链系统的各平行链节点访问各主链节点;负载均衡系统还用于在第一平行链节点所访问的第一主链节点无法被访问时,自动为第一平行链节点切换可访问的第二主链节点。

但是专利文献CN109587271A中负载均衡系统是基于区块链的架构为指定形态——主链平行链架构实现的,然而,目前众多区块链的架构并非基于此架构,因此无法应用该专利提出的负载均衡系统。同时,该专利提出的负载均衡系统是当某一节点宕机后切换到其他节点的策略,并没有很好的解决可能存在的某一节点或多个节点负载过重而导致宕机的问题。

发明内容

针对现有技术中的缺陷,本发明的目的是提供一种基于负载均衡的区块同步的方法及系统。

根据本发明提供的一种基于负载均衡的区块同步方法,包括:

步骤S1:获取当前节点记录的本节点以及其他节点的数据信息;

步骤S2:将所述数据信息存储至存储器中;

步骤S3:根据所述数据信息进行负载均衡处理,所述负载均衡处理包括对其他节点的区块同步请求进行限流控制和向其他节点的区块同步请求时进行分配控制,进而完成区块同步;

其中节点之间的互联互通和请求与响应消息通信通过网络接口完成。

优选地,所述数据信息包括当前节点与对等节点的吞吐量数据和最大负载量数据;

所述吞吐量指单位时间内区块链节点成功处理的区块同步请求数;

所述最大负载量指单位时间内区块链节点可处理的最大区块同步请求数。

优选地,所述限流控制包括当当前节点收到来自其他节点的区块同步请求时,通过计算当前节点的可处理区块同步请求数,确定是否能够响应所述区块同步请求;

所述当前节点的可处理区块同步请求数是当前节点的最大负载量和吞吐量的差值;

当当前节点的可处理区块同步请求数大于零时,则表示能够响应所述区块同步请求;当当前节点的可处理区块同步请求数等于零时,则表示不能响应所述区块同步请求。

优选地,所述分配控制包括当当前节点需要发送区块同步请求时,根据负载均衡器所维护的对等节点的可处理区块同步请求数,选取区块高度最高且可处理区块同步请求数最大的节点作为请求节点,同时将所述请求节点信息发送给网络接口,通过所述网络接口对其他节点请求区块同步。

优选地,所述请求节点的选取包括如下子步骤:

步骤S3.1:从存储器中加载对等节点列表;

步骤S3.2:依次查询所述对等节点列表中每一个对等节点的最高区块高度,并将所述对等节点按照所述对等节点对应的最高区块高度,由高到低进行排列;

步骤S3.3:从排好序的对等节点列表中依次取出节点,计算所述节点的可处理的区块同步请求数,计算公式如下:

可处理的区块同步请求数=最大负载量-吞吐量

若节点最高区块高度相等,则选择可处理的区块同步请求数较大的节点作为请求节点。

根据本发明提供的一种基于负载均衡的区块同步系统,包括:负载均衡器、存储器和网络接口;

所述存储器用于存储当前节点记录的本节点以及其他节点的数据信息;

所述负载均衡器根据所述数据信息进行负载均衡处理,所述负载均衡处理包括对其他节点的区块同步请求进行限流控制和向其他节点的区块同步请求时进行分配控制,进而完成区块同步;

所述网络接口用于节点之间的互联互通和请求与响应消息通信。

优选地,所述数据信息包括当前节点与对等节点的吞吐量数据和最大负载量数据;

所述吞吐量指单位时间内区块链节点成功处理的区块同步请求数;

所述最大负载量指单位时间内区块链节点可处理的最大区块同步请求数。

优选地,所述限流控制包括当当前节点收到来自其他节点的区块同步请求时,通过计算当前节点的可处理区块同步请求数,确定是否能够响应所述区块同步请求;

所述当前节点的可处理区块同步请求数是当前节点的最大负载量和吞吐量的差值;

当当前节点的可处理区块同步请求数大于零时,则表示能够响应所述区块同步请求;当当前节点的可处理区块同步请求数等于零时,则表示不能响应所述区块同步请求。

优选地,所述分配控制包括当当前节点需要发送区块同步请求时,根据负载均衡器所维护的对等节点的可处理区块同步请求数,选取区块高度最高且可处理区块同步请求数最大的节点作为请求节点,同时将所述请求节点信息发送给网络接口,通过所述网络接口对其他节点请求区块同步。

优选地,所述请求节点的选取包括如下子模块:

模块M3.1:从存储器中加载对等节点列表;

模块M3.2:依次查询所述对等节点列表中每一个对等节点的最高区块高度,并将所述对等节点按照所述对等节点对应的最高区块高度,由高到低进行排列;

模块M3.3:从排好序的对等节点列表中依次取出节点,计算所述节点的可处理的区块同步请求数,计算公式如下:

可处理的区块同步请求数=最大负载量-吞吐量

若节点最高区块高度相等,则选择可处理的区块同步请求数较大的节点作为请求节点。

与现有技术相比,本发明具有如下的有益效果:

1、本发明通过负载均衡器为数据请求方节点有效分配其区块同步请求的数据源,保护数据源节点免受过多请求的冲击,在保证区块同步的有效执行的同时,提升了区块链网络的稳定性。

2、本发明通过负载均衡器模块可以实现对区块同步请求的限流与分配,其中区块同步请求的限流保证了来自其他节点的区块同步请求不会超过本区块链节点的处理能力,区块同步请求的分配保证了本节点发出的区块同步请求尽可能在对端节点的处理能力范围内,且能被对端节点响应。

3、本发明负载均衡功能的实现不受限于区块链的架构形态。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为基于区块链的网络拓扑结构示意图。

图2为本发明的系统框架组成示意图。

图3为本发明中向其他节点发送区块同步请求的负载均衡处理流程示意图。

图4为本发明中收到来自其他节点的区块同步请求的负载均衡处理流程示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

一个分布式的区块链网络拓扑结构,如图1所示,在区块链网络中,各个节点都是对等节点,节点之间通过直接或间接的方式互通互联并且区块同步数据的传输是通过节点间的这些连接完成。

根据本发明提供的一种基于负载均衡的区块同步方法,如图2至图4所示,包括:

步骤S1:获取当前节点记录的本节点以及其他节点的数据信息。数据信息包括当前节点与对等节点的吞吐量数据和最大负载量数据,吞吐量指单位时间内区块链节点成功处理的区块同步请求数,最大负载量指单位时间内区块链节点可处理的最大区块同步请求数。其中,对节点吞吐量与最大负载量数据的获取方式包括但不仅限于通过发送请求到对应节点进行查询。具体地,当网络资源较为充裕时,可在每次需要发送区块同步请求之前,先向对等节点发送吞吐量与最大负载量数据的查询请求,由对等节点响应其当前的节点吞吐量与最大负载量数据,继而当前节点根据对等节点响应的数据进行负载均衡处理。当网络资源不充裕时,应尽量避免不必要的请求发送。因此,当前节点仅发送一次请求查询对等节点的吞吐量与最大负载量数据,后续则由当前节点记录并维护该对等节点服务于当前节点的吞吐量,也就是说,此吞吐量可以理解为该对等节点与当前节点的单位时间内的通信量,而不是该对等节点与其他所有节点的单位时间内的通信量,进而减少查询次数。

步骤S2:将所述数据信息存储至存储器中。所述存储器用于对数据的存储与读取,包括对等节点列表、节点吞吐量、最大负载量等。

步骤S3:根据所述数据信息进行负载均衡处理,所述负载均衡处理包括对其他节点的区块同步请求进行限流控制和向其他节点的区块同步请求时进行分配控制,进而完成区块同步。也就是说,负载均衡器为负载均衡策略计算模块,当当前节点需要发送区块同步请求给其他节点或从网络接口收到来自其他节点的区块同步请求时,会触发该模块启动负载均衡策略计算。其中节点之间的互联互通和请求与响应消息通信通过网络接口完成。该网络接口在节点接收到消息时,将消息内容进一步解析并传递至对应的消息处理单元。当节点发送消息时,网络接口对消息进行进一步封装并发送到对等节点。

限流控制包括当当前节点收到来自其他节点的区块同步请求时,如图4所示,通过计算当前节点的可处理区块同步请求数,确定是否能够响应所述区块同步请求,当当前节点的可处理区块同步请求数大于零时,则表示能够响应所述区块同步请求;当当前节点的可处理区块同步请求数等于零时,则表示不能响应所述区块同步请求。其中,当前节点的可处理区块同步请求数是当前节点的最大负载量和吞吐量的差值。

具体地,首先,网络接收来自其他节点的区块同步请求,负载均衡器决策是否需要响应该请求,并从存储器中读取当前节点的最大负载量和吞吐量。然后根据当前节点的最大负载量和吞吐量计算当前节点的可处理区块同步请求数,当前节点的可处理区块同步请求数是否大于零,若是,则说明本节点还有资源处理区块同步请求,进而继续处理区块同步请求,将该请求进一步传输给本节点的业务处理模块;若否,则说明已经没有足够资源处理区块同步请求,进而丢弃该请求不作响应。

分配控制包括当当前节点需要发送区块同步请求时,如图3所示,根据负载均衡器所维护的对等节点的可处理区块同步请求数,选取区块高度最高且可处理区块同步请求数最大的节点作为请求节点,同时将所述请求节点信息发送给网络接口,通过所述网络接口对其他节点请求区块同步。

具体地,首先,负载均衡器从存储器中加载其对等节点列表,以及对等节点的吞吐量和最大负载量。然后,负载均衡器对其维护的对等节点按照可处理区块同步请求数从高到低的顺序进行排序,并依次查询该对等节点的最高区块高度。接着,从排好序的对等节点列表中依次取出节点,选取区块高度最高且可处理区块同步请求数最大的节点作为请求节点。若节点最高区块高度相等,则选择可处理的区块同步请求数较大的节点作为请求节点。最后,将节点信息发送给网络接口,由网络接口负责请求的发送。其中,计算所述节点的可处理的区块同步请求数等于最大负载量与吞吐量的差值

在本发明的一个变化例中,变化在于,通过自适应调整的方式动态选择节点,而无需获取对等节点的吞吐量等数据。具体地,区块链节点随机选择一个对等节点发送一定数量的区块同步请求,若收到对等节点的响应消息,则本节点下次可增量再次发送请求消息到该对等节点;若收到部分对等节点的响应消息,则本节点下次将发送到该对等节点的请求消息数减少;若未收到该对等节点的响应消息,则本节点在一定时间内不再向该对等节点发送请求消息。也就是说,某一个区块链节点随机选择某一个对等节点发送区块同步请求,若收到该对等节点的响应,说明这个对等节点是可用的,则下次仍然向该对等节点发送请求;若没有收到该对等节点的响应,说明该对等节点不可用,则在一定时间内不再向该对等节点发送区块同步请求,而是向除该对等节点之外的其他对等节点发出请求。

本发明旨在区块同步的过程中,通过权衡区块节点的负载情况,对区块同步请求进行负载均衡处理,提升区块链网络的有效性与稳定性。在保证区块同步的有效执行的同时,提升区块链网络的稳定性。

进一步地,通过举例对本发明描述如下:

假设现有一条稳定运行的区块链,提供区块链存证服务,该区块链的网络拓扑如图1所示,拓扑中的每一个节点都存储了相同的存证数据,从而保证了存证数据的不可篡改。现有一个新的节点想要加入该网络获得存证服务,但该节点没有区块链现有的存证数据,这些存证数据以区块的形式存在,因此,该新节点需要向区块链网络中已有的节点进行区块同步请求。

首先,该新节点采用前文提到的策略,通过衡量对等节点的区块高度与可处理的区块同步请求数,选择一个区块高度最高且可处理的区块同步请求数最大的节点,作为目的节点,发送区块同步请求。其次,当对等节点收到区块同步请求后,根据自身的吞吐量与最大负载量,计算自身是否还有足够的资源响应该区块同步请求,若有,则发送区块同步响应消息给该新节点;若无,则拒绝该新节点的区块同步请求。

本发明还提供了一种基于负载均衡的区块同步系统,本领域技术人员可以通过执行所述基于负载均衡的区块同步方法的步骤流程实现所述基于负载均衡的区块同步系统,即可以将所述基于负载均衡的区块同步方法理解为所述基于负载均衡的区块同步系统的优选实施方式。

根据本发明提供的一种基于负载均衡的区块同步系统,如图2所示,图中省略了节点设备的其他组成模块,只重点展示出与本专利所述的基于负载均衡的区块同步相关的模块,包括负载均衡器、存储器和网络接口。

存储器用于存储当前节点记录的本节点以及其他节点的数据信息,这些数据将被负载均衡器用于负载均衡策略决策。所述数据信息包括当前节点与对等节点的吞吐量数据和最大负载量数据。所述吞吐量指单位时间内区块链节点成功处理的区块同步请求数。所述最大负载量指单位时间内区块链节点可处理的最大区块同步请求数。

负载均衡器根据所述数据信息进行负载均衡处理,所述负载均衡处理包括对其他节点的区块同步请求进行限流控制和向其他节点的区块同步请求时进行分配控制,进而完成区块同步。也就是说,负载均衡器为负载均衡策略计算模块,当当前节点需要发送区块同步请求给其他节点或从网络接口收到来自其他节点的区块同步请求时,会触发该模块启动负载均衡策略计算。包括用于对其他节点的区块同步请求进行限流控制,还用于当需要向其他节点发起区块同步请求时,为本节点选取对等节点发送请求。

具体地,限流控制包括当当前节点收到来自其他节点的区块同步请求时,通过计算当前节点的可处理区块同步请求数,确定是否能够响应所述区块同步请求。所述当前节点的可处理区块同步请求数是当前节点的最大负载量和吞吐量的差值。当当前节点的可处理区块同步请求数大于零时,则表示能够响应所述区块同步请求;当当前节点的可处理区块同步请求数等于零时,则表示不能响应所述区块同步请求。

分配控制包括当当前节点需要发送区块同步请求时,根据负载均衡器所维护的对等节点的可处理区块同步请求数,选取区块高度最高且可处理区块同步请求数最大的节点作为请求节点,同时将所述请求节点信息发送给网络接口,通过所述网络接口对其他节点请求区块同步。所述请求节点的选取包括如下子模块:模块M3.1:从存储器中加载对等节点列表。模块M3.2:依次查询所述对等节点列表中每一个对等节点的最高区块高度,并将所述对等节点按照所述对等节点对应的最高区块高度,由高到低进行排列。模块M3.3:从排好序的对等节点列表中依次取出节点,计算所述节点的可处理的区块同步请求数,计算公式如下:

可处理的区块同步请求数=最大负载量-吞吐量

若节点最高区块高度相等,则选择可处理的区块同步请求数较大的节点作为请求节点。

网络接口用于节点之间的互联互通和请求与响应消息通信。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

相关技术
  • 基于区块链系统的支付方法、介质和区块链系统
  • 一种基于区块链实现实时通讯消息同步的方法
  • 基于区块链的商品信息生成方法、区块链节点及其系统
  • 一种基于区块链网络下的区块实现方法及系统
  • 基于区块链的负载均衡调度方法及装置、区块链系统
  • 一种基于区块链与边缘计算的负载均衡方法与系统
技术分类

06120116335838