一种区块链吞吐量提升系统及方法与流程

文档序号:27932707发布日期:2021-12-11 12:23阅读:357来源:国知局
一种区块链吞吐量提升系统及方法与流程

1.本发明属于区块链和分布式系统领域,尤其涉及一种区块链吞吐量提升系统及方法。


背景技术:

2.传统的区块链技术在接收交易时往往采用同步接收的方式,即当节点接收足够量的交易后就将其打包并广播以进行共识。这种接收

共识模式在网络压力较小或网络规模不大时具有较好的效果,同时可以保证所上传交易的及时性以及准确性,但这种技术方案存在以下几个缺陷:
3.(1)当单一节点压力增大时,整个网络的共识速度受单一节点制约,使网络整体共识速度变慢。
4.(2)共识速度与吞吐量相同,当网络规模扩大时,网络整体的吞吐量几乎不变,严重浪费了计算资源。
5.(3)各节点平等地接收交易,而引入性能较差节点会成为网络短板,故网络整体的可扩展性较差,整体成本也较高。


技术实现要素:

6.为了克服现有技术的上述缺点,本发明提出了一种区块链吞吐量提升系统及方法,该系统可通过异步方式收发交易数据且可通过对网络全局的监控实现全网计算资源的统一调度,在不改变网络本身共识算法及组网方式的前提下提升网络的交易吞吐能力,增强用户的使用体验。
7.一方面,本发明提供一种区块链吞吐量提升系统,该系统包含负载均衡模块,以及在区块链节点内部部署的预处理模块、标记模块、接收模块、发送模块、动态调速模块和共识模块;
8.所述负载均衡模块:根据当前区块链集群负载情况对用户的交易请求进行路由,确定当前交易请求在区块链集群中的具体执行节点;
9.所述预处理模块:对交易请求进行完整性和合法性验证,并产生交易凭证;
10.所述标记模块:产生非重复的本地全局计数,且计数值为非易失的;根据交易请求进行计数更新;
11.所述接收模块:接收交易请求并立即缓存在本地,同时拥有一个内置计数器,用于标记已存储的交易请求数量;
12.所述发送模块:定时定量地将本地存储的交易请求发送给共识模块,同时拥有两个内置计数器,分别用于标记已发送给共识模块的交易请求数量,以及已处理成功并删除的交易请求数量;
13.所述动态调速模块包括检测子模块和调速子模块;
14.所述检测子模块:监测本地节点及区块链集群的资源消耗情况及交易处理情况,
并计算得到区块链集群的共识平均速度;
15.所述调速子模块:根据本地节点自身状态以及检测子模块下发的共识平均速度信息,调整发送模块将交易请求发送给共识模块的速度,即自身共识发送速度;
16.所述共识模块:对区块链交易请求进行全网广播与共识。
17.进一步地,所述负载均衡模块根据区块链节点的交易接收权值对交易请求进行转发,权值高的节点将收到更多的交易请求,该过程为动态过程,在集群运行过程中会随着节点的运行状态进行相应的调整。
18.进一步地,所述预处理模块中,如果发现交易请求为非法请求,将直接丢弃该请求,并返回用户终端错误信息,如果为合法请求,将立即返回交易凭证,此时交易交由系统内部异步处理。
19.进一步地,所述接收模块具体实现步骤如下:
20.当一笔交易通过预处理验证后,预处理模块将其发送至接收模块,接收模块接收该交易并从标记模块获得该交易的全局计数后将该交易持久化至模块本地存储。同时修改本地存储中的写入计数,记录目前接收交易的情况。
21.进一步地,所述接收模块采用持久化策略保存交易信息,虽然其在速度上劣于内存缓冲方案,但考虑到在高压力条件下,节点更容易出现宕机、卡顿、内存占用过高等意外情况。
22.进一步地,所述发送模块具体实现步骤如下:
23.发送模块中内置了一个可调整的计时器,当计时器被触发时,发送模块会检查本地存储中已存储交易请求数量w,将其与同在本地存储中的已发送交易请求数量s进行比较,若写入计数大于发送计数,即本地存储中存在积压的交易,则发送x笔交易至共识模块并同步更新本地的已发送交易请求数量。其中,x为交易发送阈值k与积压交易总数n=w

s的较小值,即:x=min(k,n)。通过这一机制,可以利用节点本地的存储对交易进行缓冲,从而实现交易接收与共识过程的分离,且由于发送模块的发送策略,交易的共识速度是一个均匀的定值,避免了突发流量对共识过程的冲击,确保了网络整体的稳定性。
24.进一步地,所述调速子模块中,本地节点自身状态包括:资源消耗情况、接收总交易请求数量、全网共识速度、自身共识发送速度。
25.进一步地,所述动态调速模块的具体实现步骤如下:
26.检测子模块定期发送一笔特殊的共识请求,通报本地节点的资源消耗情况及交易处理情况,在接收到全网各节点的通报信息后,计算得出区块链集群的共识平均速度;
27.调速子模块接收到共识平均速度后,根据接收总交易请求数量以及全网共识速度,再结合本地节点的资源消耗情况修改节点自身共识发送速度;调速结束后调速子模块及时通过特殊共识请求将自身共识发送速度向全网更新。
28.进一步地,所述检测子模块定期发送的特殊共识请求中,不包含任何具体的实际交易,通过调用区块链节点内的预编译合约,向全网通报自身的资源消耗情况及交易处理情况。
29.进一步地,所述调速子模块发送的特殊共识请求中,不包含任何具体的实际交易,通过调用区块链节点内的预编译合约,向全网更新自身共识发送速度。
30.进一步地,所述动态调速模块能够保持共识发送速度的稳定,在固定的区块链共
识算法条件下,稳定的请求速率能够大大提升共识算法的效率以及稳定性。
31.另一方面,本发明提供一种提升区块链吞吐量的方法,包括如下步骤:
32.s1.用户发起交易请求至负载均衡模块,然后根据节点的交易接收权值将该交易请求转发至相应区块链节点进行交易处理;
33.s2.区块链节点接收交易请求后通过预处理模块对交易请求进行完整性和合法性验证,处理完成后将该交易请求打包并发送至接收模块;
34.s3.标记模块内部维护一个全局的并发安全的唯一自增标记,并将其写入本地存储;之后再将该标记连同交易请求一并发送给接收模块,将其作为交易的顺序标记;
35.s4.接收模块在收到标记以及交易请求后,先将交易请求写入本地非易失存储,然后再根据标记更新接收模块内置计数器中的已存储交易请求数量,待更新完成之后,返回交易成功接收的结果给用户;
36.s5.当发送模块内置的发送计时器被触发后,发送模块从本地存储中读取已存储交易请求数量w以及已发送交易请求数量s,并据此计算出本地存储中积压的交易总数n=w

s,之后通过交易发送阈值k将所需的min(n,k)个交易读出并打包后发送给共识模块,之后将本地存储中发送成功的交易删除,更新发送模块内置计数器中的已发送给共识模块的交易请求数量,以及已处理成功并删除的交易请求数量;
37.s6.动态调速模块会定期通过一笔特殊的共识请求向全网节点通报本地节点的资源消耗情况及交易处理情况,并在接收到所有节点的通报消息后,计算得出区块链集群的共识平均速度;之后根据接收总交易请求数量以及全网共识速度,再结合本地节点的资源消耗情况,确定自身节点的共识上传速度,并同时修改交易发送阈值k以及自身的交易接收权值。
38.进一步地,当某节点系统占用过高时,会触发阻断机制,主动发送自身状态的同时降低自身的交易接收权值并同步调低自身的交易发送阈值k。
39.进一步地,节点内置的垃圾回收计时器被触发时,发送模块检查当前缓存中的数据,将已发送的交易缓存清除,防止占用过多的系统储存空间。
40.进一步地,所述接收模块可以接收交易信息并存储在本地,而当一笔交易请求被节点接收后,节点会先在预处理模块中对交易进行处理,该过程会消耗大量的cpu资源,与共识模块形成竞争,从而影响节点接收请求的效率。通过接收模块的隔断,可让预处理操作与共识操作异步进行,并可根据系统当前的资源消耗情况给出动态的调整。
41.进一步地,所述步骤s4中,根据标记更新接收模块内置计数器中的已存储交易请求数量,该过程为原子过程,该标记用于后续定位交易写入位置。
42.进一步地,所述标记模块主要用于生成一个本地的全局计数,且计数值为非易失的,用此计数来对节点接收的交易信息进行标记,从而使交易可以在被持久化后依然能够按接收次序被发送。同时,考虑到节点重启,服务器宕机等突发情况,该模块所有的计数均会在下发前被持久化至节点本地,以便于节点在重启时继续计数从而避免重启服务出现计数重复进而导致区块链奔溃或交易被长时间积压。
43.进一步地,所述步骤s6中,动态调速模块会根据检测子模块收到的其余节点资源消耗情况、交易处理情况判断自身节点状态。当检测到自身系统占用较高时,动态调速模块会降低自身的共识上传速度,并调低自身的交易接收权值,将更多的交易分配至其余节点;
当自身系统占用较低,且全网中有系统占用较高节点时,调速模块会适当调高自身的交易接收权值。
44.进一步地,所述步骤s6中,当全网存在某个节点共识发送速率低于一个预定义的低值时,判断全网共识速度达到极限,此时集群中各节点的共识交易总和会固定为阈值;当全网积压交易达到一个预定义的上限时,全网进入一个“忙碌”状态,直到积压交易降低至某一值。
45.进一步地,所述步骤s6中,当监测子模块监测到自身节点系统占用超过预定义的阈值时,监测子模块会立即发送当前系统状态至区块链网络主节点,当主节点的动态调速模块收到响应系统状态信息时,立即下发其统计所得的当前全网系统占用情况以及全网的共识状态,从节点的动态调速模块接收到该信息后会根据该消息得出全网的平均共识速度。
46.进一步地,调速子模块内置两个用于判断是否需要增加共识速度的判别器,分别为判定自身系统状态的判别器a以及全网共识状态的判别器b。当节点收到来自主节点的全网系统运行情况时,判别器b根据该信息得出共识上调权值,以及共识下调权值,此二值与判别器a实时维护的共识上调权值,共识下调权值进行计算,确定自身节点的共识上传速度。
47.本发明的有益效果:本发明提供了一种区块链吞吐量提升系统及方法,该方法可在不改变系统整体架构、区块链共识算法等基础设置时,通过调整交易请求的共识策略起到提升区块链系统整体吞吐量的效果。同时,本发明允许网络中各节点各自调整自身的交易接收与共识发送策略,因此,性能较差的节点不会成为全网的短板,且性能较好的节点可分担更多的任务压力。
附图说明
48.图1是本发明实施例提供的区块链吞吐量提升系统各模块间关系示意图;
49.图2是本发明实施例提供的区块链吞吐量提升系统收发模块的工作流程;
50.图3是本发明实施例提供的区块链吞吐量提升系统动态调速模块的整体工作流程。
具体实施方式
51.为了更好的理解本技术的技术方案,下面结合附图对本技术实施例进行详细描述。
52.应当明确,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
53.在本技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
54.图1为本发明一个实施例中的区块链吞吐量提升系统各模块间关系示意图。本实施例提供的一种区块链吞吐量提升系统,该系统包含负载均衡模块,以及在区块链节点内
部部署的预处理模块、标记模块、接收模块、发送模块、动态调速模块和共识模块;
55.所述负载均衡模块:根据当前区块链集群负载情况对用户的交易请求进行路由,确定当前交易请求在区块链集群中的具体执行节点;
56.所述预处理模块:对交易请求进行完整性和合法性验证,并产生交易凭证;
57.所述标记模块:产生非重复的本地全局计数,且计数值为非易失的;根据交易请求进行计数更新;
58.所述接收模块:接收交易请求并立即缓存在本地,同时拥有一个内置计数器,用于标记已存储的交易请求数量;
59.所述发送模块:定时定量地将本地存储的交易请求发送给共识模块,同时拥有两个内置计数器,分别用于标记已发送给共识模块的交易请求数量,以及已处理成功并删除的交易请求数量;
60.所述动态调速模块包括检测子模块和调速子模块;
61.所述检测子模块:监测本地节点及区块链集群的资源消耗情况及交易处理情况,并计算得到区块链集群的共识平均速度;
62.所述调速子模块:根据本地节点自身状态以及检测子模块下发的共识平均速度信息,调整发送模块将交易请求发送给共识模块的速度,即自身共识发送速度;
63.所述共识模块:对区块链交易请求进行全网广播与共识。
64.进一步地,所述负载均衡模块根据区块链节点的交易接收权值对交易请求进行转发,权值高的节点将收到更多的交易请求,该过程为动态过程,在集群运行过程中会随着节点的运行状态进行相应的调整。
65.进一步地,所述预处理模块中,如果发现交易请求为非法请求,将直接丢弃该请求,并返回用户终端错误信息,如果为合法请求,将立即返回交易凭证,此时交易交由系统内部异步处理。
66.进一步地,所述接收模块具体实现步骤如下:
67.当一笔交易通过预处理验证后,预处理模块将其发送至接收模块,接收模块接收该交易并从标记模块获得该交易的全局计数后将该交易持久化至模块本地存储。同时修改本地存储中的写入计数,记录目前接收交易的情况。
68.进一步地,所述接收模块采用持久化策略保存交易信息,虽然其在速度上劣于内存缓冲方案,但考虑到在高压力条件下,节点更容易出现宕机、卡顿、内存占用过高等意外情况。
69.进一步地,所述发送模块具体实现步骤如下:
70.发送模块中内置了一个可调整的计时器,当计时器被触发时,发送模块会检查本地存储中已存储交易请求数量w,将其与同在本地存储中的已发送交易请求数量s进行比较,若写入计数大于发送计数,即本地存储中存在积压的交易,则发送x笔交易至共识模块并同步更新本地的已发送交易请求数量。其中,x为交易发送阈值k与积压交易总数n=w

s的较小值,即:x=min(k,n)。通过这一机制,可以利用节点本地的存储对交易进行缓冲,从而实现交易接收与共识过程的分离,且由于发送模块的发送策略,交易的共识速度是一个均匀的定值,避免了突发流量对共识过程的冲击,确保了网络整体的稳定性。
71.进一步地,所述调速子模块中,本地节点自身状态包括:资源消耗情况、接收总交
易请求数量、全网共识速度、自身共识发送速度。
72.进一步地,所述动态调速模块的具体实现步骤如下:
73.检测子模块定期发送一笔特殊的共识请求,通报本地节点的资源消耗情况及交易处理情况,在接收到全网各节点的通报信息后,计算得出区块链集群的共识平均速度;
74.调速子模块接收到共识平均速度后,根据接收总交易请求数量以及全网共识速度,再结合本地节点的资源消耗情况修改节点自身共识发送速度;调速结束后调速子模块及时通过特殊共识请求将自身共识发送速度向全网更新。
75.进一步地,所述检测子模块定期发送的特殊共识请求中,不包含任何具体的实际交易,通过调用区块链节点内的预编译合约,向全网通报自身的资源消耗情况及交易处理情况。
76.进一步地,所述调速子模块发送的特殊共识请求中,不包含任何具体的实际交易,通过调用区块链节点内的预编译合约,向全网更新自身共识发送速度。
77.进一步地,所述动态调速模块能够保持共识发送速度的稳定,在固定的区块链共识算法条件下,稳定的请求速率能够大大提升共识算法的效率以及稳定性。
78.在另一个实施例中,提供一种提升区块链吞吐量的方法,包括如下步骤:
79.s1.用户发起交易请求至负载均衡模块,负载均衡模块查询路由表并根据各节点的交易接收权值将该交易转发至相关区块链节点进行交易处理;
80.s2.区块链节点接收交易请求后通过预处理模块对交易请求进行完整性和合法性验证,处理完成后将该交易请求打包并发送至接收模块;
81.s3.标记模块内部维护一个全局的并发安全的唯一自增标记,并将其写入本地存储;之后再将该标记连同交易请求一并发送给接收模块,将其作为交易的顺序标记;此处采用先写入再输出的方式,可以很好地规避因系统意外宕机产生的标记重复问题;
82.s4.如图2所示,接收模块在收到标记以及交易请求后,先将交易请求写入本地非易失存储,然后再根据标记更新接收模块内置计数器中的已存储交易请求数量,待更新完成之后,返回交易成功接收的结果给用户;根据标记更新接收模块内置计数器中的已存储交易请求数量,该过程为原子过程,该标记用于后续定位交易写入位置;
83.s5.当发送模块内置的发送计时器被触发后,发送模块从本地存储中读取已存储交易请求数量w以及已发送交易请求数量s,并据此计算出本地存储中积压的交易总数n=w

s,若n的值不为0,则发送模块向共识模块发送交易发送阈值k;若n<k,则将n笔交易读出,将其打包后发送给共识模块;若n>k,则将k笔交易读出,将其打包后发送给共识模块;即x=min(n,k),将x笔交易请求打包后发送给共识模块,之后将本地存储中发送成功的交易删除,更新发送模块内置计数器中的已发送给共识模块的交易请求数量,以及已处理成功并删除的交易请求数量;
84.s6.如图3所示,当动态调速模块内置的计时器被触发时,该模块的监测子模块会通过一笔特殊的共识请求向全网节点通报本地节点的资源消耗情况及交易处理情况,并在接收到所有节点的通报消息后,计算得出区块链集群的共识平均速度;调速子模块根据接收总交易请求数量以及全网共识速度,再结合本地节点的资源消耗情况,确定自身节点的共识上传速度,并同时修改交易发送阈值k以及自身的交易接收权值。
85.进一步地,当某节点系统占用过高时,会触发阻断机制,主动发送自身状态的同时
降低自身的交易接收权值并同步调低自身的交易发送阈值k。
86.进一步地,节点内置的垃圾回收计时器被触发时,发送模块检查当前缓存中的数据,将已发送的交易缓存清除,防止占用过多的系统储存空间。
87.进一步地,所述接收模块可以接收交易信息并存储在本地,而当一笔交易请求被节点接收后,节点会先在预处理模块中对交易进行处理,该过程会消耗大量的cpu资源,与共识模块形成竞争,从而影响节点接收请求的效率。通过接收模块的隔断,可让预处理操作与共识操作异步进行,并可根据系统当前的资源消耗情况给出动态的调整。
88.进一步地,所述标记模块主要用于生成一个本地的全局计数,且计数值为非易失的,用此计数来对节点接收的交易信息进行标记,从而使交易可以在被持久化后依然能够按接收次序被发送。同时,考虑到节点重启,服务器宕机等突发情况,该模块所有的计数均会在下发前被持久化至节点本地,以便于节点在重启时继续计数从而避免重启服务出现计数重复进而导致区块链奔溃或交易被长时间积压。
89.进一步地,如图3所示,所述步骤s6中,动态调速模块会根据检测子模块收到的其余节点资源消耗情况、交易处理情况判断自身节点状态。当检测到自身系统占用较高时,动态调速模块会降低自身的共识上传速度,并调低自身的交易接收权值,将更多的交易分配至其余节点;当自身系统占用较低,且全网中有系统占用较高节点时,调速模块会适当调高自身的交易接收权值。
90.当全网存在某个节点共识发送速率低于一个预定义的低值时,判断全网共识速度达到极限,此时集群中各节点的共识交易总和会固定为阈值;当全网积压交易达到一个预定义的上限时,全网进入一个“忙碌”状态,直到积压交易降低至某一值。
91.当监测子模块监测到自身节点系统占用超过预定义的阈值时,监测子模块会立即发送当前系统状态至区块链网络主节点,当主节点的动态调速模块收到响应系统状态信息时,立即下发其统计所得的当前全网系统占用情况以及全网的共识状态,从节点的动态调速模块接收到该信息后会根据该消息得出全网的平均共识速度。
92.调速子模块内置两个用于判断是否需要增加共识速度的判别器,分别为判定自身系统状态的判别器a以及全网共识状态的判别器b。当节点收到来自主节点的全网系统运行情况时,判别器b根据该信息得出共识上调权值vbu,以及共识下调权值vbd,此二值与判别器a实时维护的共识上调权值vau,共识下调权值vad进行计算,确定自身节点的共识上传速度vcon。
93.在一个实施例中,提出了一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中提升区块链吞吐量的方法中的步骤。
94.在一个实施例中,提出了一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述各实施例中提升区块链吞吐量的方法中的步骤。其中,存储介质可以为非易失性存储介质。
95.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,read only memory)、随机存取存储器(ram,random access memory)、磁盘或光盘等。
96.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1