CN113779145A - 一种区块链吞吐量提升***及方法 - Google Patents
一种区块链吞吐量提升***及方法 Download PDFInfo
- Publication number
- CN113779145A CN113779145A CN202110995811.XA CN202110995811A CN113779145A CN 113779145 A CN113779145 A CN 113779145A CN 202110995811 A CN202110995811 A CN 202110995811A CN 113779145 A CN113779145 A CN 113779145A
- Authority
- CN
- China
- Prior art keywords
- module
- transaction
- consensus
- node
- receiving
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000007781 pre-processing Methods 0.000 claims abstract description 24
- 230000001105 regulatory effect Effects 0.000 claims abstract description 17
- 230000033228 biological regulation Effects 0.000 claims description 37
- 238000001514 detection method Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 17
- 230000001960 triggered effect Effects 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000000903 blocking effect Effects 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 abstract description 3
- 230000003827 upregulation Effects 0.000 description 6
- 230000003828 downregulation Effects 0.000 description 4
- 238000010516 chain-walking reaction Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Data Mining & Analysis (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Computing Systems (AREA)
- Technology Law (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种区块链吞吐量提升***及方法,该***包含负载均衡模块,以及在区块链节点内部部署的预处理模块、标记模块、接收模块、发送模块、动态调速模块和共识模块;该方法包括以下特征:拥有一个本地的全局计数器且其计数可持久化;接收交易后根据计数器计数将交易封装并存入本地存储;定时地向全网发送共识包,使全网实现匀速共识;可实时调整节点的共识发送速度,实现计算资源的综合利用。本发明缓解了区块链网络中单一节点对网络性能的限制,可以在不改变区块链网络共识算法以及网络结构的情况下大幅度提升网络的交易吞吐能力,提高全网计算资源的综合利用率和网络稳定性。
Description
技术领域
本发明属于区块链和分布式***领域,尤其涉及一种区块链吞吐量提升***及方法。
背景技术
传统的区块链技术在接收交易时往往采用同步接收的方式,即当节点接收足够量的交易后就将其打包并广播以进行共识。这种接收-共识模式在网络压力较小或网络规模不大时具有较好的效果,同时可以保证所上传交易的及时性以及准确性,但这种技术方案存在以下几个缺陷:
(1)当单一节点压力增大时,整个网络的共识速度受单一节点制约,使网络整体共识速度变慢。
(2)共识速度与吞吐量相同,当网络规模扩大时,网络整体的吞吐量几乎不变,严重浪费了计算资源。
(3)各节点平等地接收交易,而引入性能较差节点会成为网络短板,故网络整体的可扩展性较差,整体成本也较高。
发明内容
为了克服现有技术的上述缺点,本发明提出了一种区块链吞吐量提升***及方法,该***可通过异步方式收发交易数据且可通过对网络全局的监控实现全网计算资源的统一调度,在不改变网络本身共识算法及组网方式的前提下提升网络的交易吞吐能力,增强用户的使用体验。
一方面,本发明提供一种区块链吞吐量提升***,该***包含负载均衡模块,以及在区块链节点内部部署的预处理模块、标记模块、接收模块、发送模块、动态调速模块和共识模块;
所述负载均衡模块:根据当前区块链集群负载情况对用户的交易请求进行路由,确定当前交易请求在区块链集群中的具体执行节点;
所述预处理模块:对交易请求进行完整性和合法性验证,并产生交易凭证;
所述标记模块:产生非重复的本地全局计数,且计数值为非易失的;根据交易请求进行计数更新;
所述接收模块:接收交易请求并立即缓存在本地,同时拥有一个内置计数器,用于标记已存储的交易请求数量;
所述发送模块:定时定量地将本地存储的交易请求发送给共识模块,同时拥有两个内置计数器,分别用于标记已发送给共识模块的交易请求数量,以及已处理成功并删除的交易请求数量;
所述动态调速模块包括检测子模块和调速子模块;
所述检测子模块:监测本地节点及区块链集群的资源消耗情况及交易处理情况,并计算得到区块链集群的共识平均速度;
所述调速子模块:根据本地节点自身状态以及检测子模块下发的共识平均速度信息,调整发送模块将交易请求发送给共识模块的速度,即自身共识发送速度;
所述共识模块:对区块链交易请求进行全网广播与共识。
进一步地,所述负载均衡模块根据区块链节点的交易接收权值对交易请求进行转发,权值高的节点将收到更多的交易请求,该过程为动态过程,在集群运行过程中会随着节点的运行状态进行相应的调整。
进一步地,所述预处理模块中,如果发现交易请求为非法请求,将直接丢弃该请求,并返回用户终端错误信息,如果为合法请求,将立即返回交易凭证,此时交易交由***内部异步处理。
进一步地,所述接收模块具体实现步骤如下:
当一笔交易通过预处理验证后,预处理模块将其发送至接收模块,接收模块接收该交易并从标记模块获得该交易的全局计数后将该交易持久化至模块本地存储。同时修改本地存储中的写入计数,记录目前接收交易的情况。
进一步地,所述接收模块采用持久化策略保存交易信息,虽然其在速度上劣于内存缓冲方案,但考虑到在高压力条件下,节点更容易出现宕机、卡顿、内存占用过高等意外情况。
进一步地,所述发送模块具体实现步骤如下:
发送模块中内置了一个可调整的计时器,当计时器被触发时,发送模块会检查本地存储中已存储交易请求数量W,将其与同在本地存储中的已发送交易请求数量S进行比较,若写入计数大于发送计数,即本地存储中存在积压的交易,则发送X笔交易至共识模块并同步更新本地的已发送交易请求数量。其中,X为交易发送阈值K与积压交易总数N=W-S的较小值,即:X=min(K,N)。通过这一机制,可以利用节点本地的存储对交易进行缓冲,从而实现交易接收与共识过程的分离,且由于发送模块的发送策略,交易的共识速度是一个均匀的定值,避免了突发流量对共识过程的冲击,确保了网络整体的稳定性。
进一步地,所述调速子模块中,本地节点自身状态包括:资源消耗情况、接收总交易请求数量、全网共识速度、自身共识发送速度。
进一步地,所述动态调速模块的具体实现步骤如下:
检测子模块定期发送一笔特殊的共识请求,通报本地节点的资源消耗情况及交易处理情况,在接收到全网各节点的通报信息后,计算得出区块链集群的共识平均速度;
调速子模块接收到共识平均速度后,根据接收总交易请求数量以及全网共识速度,再结合本地节点的资源消耗情况修改节点自身共识发送速度;调速结束后调速子模块及时通过特殊共识请求将自身共识发送速度向全网更新。
进一步地,所述检测子模块定期发送的特殊共识请求中,不包含任何具体的实际交易,通过调用区块链节点内的预编译合约,向全网通报自身的资源消耗情况及交易处理情况。
进一步地,所述调速子模块发送的特殊共识请求中,不包含任何具体的实际交易,通过调用区块链节点内的预编译合约,向全网更新自身共识发送速度。
进一步地,所述动态调速模块能够保持共识发送速度的稳定,在固定的区块链共识算法条件下,稳定的请求速率能够大大提升共识算法的效率以及稳定性。
另一方面,本发明提供一种提升区块链吞吐量的方法,包括如下步骤:
S1.用户发起交易请求至负载均衡模块,然后根据节点的交易接收权值将该交易请求转发至相应区块链节点进行交易处理;
S2.区块链节点接收交易请求后通过预处理模块对交易请求进行完整性和合法性验证,处理完成后将该交易请求打包并发送至接收模块;
S3.标记模块内部维护一个全局的并发安全的唯一自增标记,并将其写入本地存储;之后再将该标记连同交易请求一并发送给接收模块,将其作为交易的顺序标记;
S4.接收模块在收到标记以及交易请求后,先将交易请求写入本地非易失存储,然后再根据标记更新接收模块内置计数器中的已存储交易请求数量,待更新完成之后,返回交易成功接收的结果给用户;
S5.当发送模块内置的发送计时器被触发后,发送模块从本地存储中读取已存储交易请求数量W以及已发送交易请求数量S,并据此计算出本地存储中积压的交易总数N=W-S,之后通过交易发送阈值K将所需的min(N,K)个交易读出并打包后发送给共识模块,之后将本地存储中发送成功的交易删除,更新发送模块内置计数器中的已发送给共识模块的交易请求数量,以及已处理成功并删除的交易请求数量;
S6.动态调速模块会定期通过一笔特殊的共识请求向全网节点通报本地节点的资源消耗情况及交易处理情况,并在接收到所有节点的通报消息后,计算得出区块链集群的共识平均速度;之后根据接收总交易请求数量以及全网共识速度,再结合本地节点的资源消耗情况,确定自身节点的共识上传速度,并同时修改交易发送阈值K以及自身的交易接收权值。
进一步地,当某节点***占用过高时,会触发阻断机制,主动发送自身状态的同时降低自身的交易接收权值并同步调低自身的交易发送阈值K。
进一步地,节点内置的垃圾回收计时器被触发时,发送模块检查当前缓存中的数据,将已发送的交易缓存清除,防止占用过多的***储存空间。
进一步地,所述接收模块可以接收交易信息并存储在本地,而当一笔交易请求被节点接收后,节点会先在预处理模块中对交易进行处理,该过程会消耗大量的CPU资源,与共识模块形成竞争,从而影响节点接收请求的效率。通过接收模块的隔断,可让预处理操作与共识操作异步进行,并可根据***当前的资源消耗情况给出动态的调整。
进一步地,所述步骤S4中,根据标记更新接收模块内置计数器中的已存储交易请求数量,该过程为原子过程,该标记用于后续定位交易写入位置。
进一步地,所述标记模块主要用于生成一个本地的全局计数,且计数值为非易失的,用此计数来对节点接收的交易信息进行标记,从而使交易可以在被持久化后依然能够按接收次序被发送。同时,考虑到节点重启,服务器宕机等突发情况,该模块所有的计数均会在下发前被持久化至节点本地,以便于节点在重启时继续计数从而避免重启服务出现计数重复进而导致区块链奔溃或交易被长时间积压。
进一步地,所述步骤S6中,动态调速模块会根据检测子模块收到的其余节点资源消耗情况、交易处理情况判断自身节点状态。当检测到自身***占用较高时,动态调速模块会降低自身的共识上传速度,并调低自身的交易接收权值,将更多的交易分配至其余节点;当自身***占用较低,且全网中有***占用较高节点时,调速模块会适当调高自身的交易接收权值。
进一步地,所述步骤S6中,当全网存在某个节点共识发送速率低于一个预定义的低值时,判断全网共识速度达到极限,此时集群中各节点的共识交易总和会固定为阈值;当全网积压交易达到一个预定义的上限时,全网进入一个“忙碌”状态,直到积压交易降低至某一值。
进一步地,所述步骤S6中,当监测子模块监测到自身节点***占用超过预定义的阈值时,监测子模块会立即发送当前***状态至区块链网络主节点,当主节点的动态调速模块收到响应***状态信息时,立即下发其统计所得的当前全网***占用情况以及全网的共识状态,从节点的动态调速模块接收到该信息后会根据该消息得出全网的平均共识速度。
进一步地,调速子模块内置两个用于判断是否需要增加共识速度的判别器,分别为判定自身***状态的判别器A以及全网共识状态的判别器B。当节点收到来自主节点的全网***运行情况时,判别器B根据该信息得出共识上调权值,以及共识下调权值,此二值与判别器A实时维护的共识上调权值,共识下调权值进行计算,确定自身节点的共识上传速度。
本发明的有益效果:本发明提供了一种区块链吞吐量提升***及方法,该方法可在不改变***整体架构、区块链共识算法等基础设置时,通过调整交易请求的共识策略起到提升区块链***整体吞吐量的效果。同时,本发明允许网络中各节点各自调整自身的交易接收与共识发送策略,因此,性能较差的节点不会成为全网的短板,且性能较好的节点可分担更多的任务压力。
附图说明
图1是本发明实施例提供的区块链吞吐量提升***各模块间关系示意图;
图2是本发明实施例提供的区块链吞吐量提升***收发模块的工作流程;
图3是本发明实施例提供的区块链吞吐量提升***动态调速模块的整体工作流程。
具体实施方式
为了更好的理解本申请的技术方案,下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
图1为本发明一个实施例中的区块链吞吐量提升***各模块间关系示意图。本实施例提供的一种区块链吞吐量提升***,该***包含负载均衡模块,以及在区块链节点内部部署的预处理模块、标记模块、接收模块、发送模块、动态调速模块和共识模块;
所述负载均衡模块:根据当前区块链集群负载情况对用户的交易请求进行路由,确定当前交易请求在区块链集群中的具体执行节点;
所述预处理模块:对交易请求进行完整性和合法性验证,并产生交易凭证;
所述标记模块:产生非重复的本地全局计数,且计数值为非易失的;根据交易请求进行计数更新;
所述接收模块:接收交易请求并立即缓存在本地,同时拥有一个内置计数器,用于标记已存储的交易请求数量;
所述发送模块:定时定量地将本地存储的交易请求发送给共识模块,同时拥有两个内置计数器,分别用于标记已发送给共识模块的交易请求数量,以及已处理成功并删除的交易请求数量;
所述动态调速模块包括检测子模块和调速子模块;
所述检测子模块:监测本地节点及区块链集群的资源消耗情况及交易处理情况,并计算得到区块链集群的共识平均速度;
所述调速子模块:根据本地节点自身状态以及检测子模块下发的共识平均速度信息,调整发送模块将交易请求发送给共识模块的速度,即自身共识发送速度;
所述共识模块:对区块链交易请求进行全网广播与共识。
进一步地,所述负载均衡模块根据区块链节点的交易接收权值对交易请求进行转发,权值高的节点将收到更多的交易请求,该过程为动态过程,在集群运行过程中会随着节点的运行状态进行相应的调整。
进一步地,所述预处理模块中,如果发现交易请求为非法请求,将直接丢弃该请求,并返回用户终端错误信息,如果为合法请求,将立即返回交易凭证,此时交易交由***内部异步处理。
进一步地,所述接收模块具体实现步骤如下:
当一笔交易通过预处理验证后,预处理模块将其发送至接收模块,接收模块接收该交易并从标记模块获得该交易的全局计数后将该交易持久化至模块本地存储。同时修改本地存储中的写入计数,记录目前接收交易的情况。
进一步地,所述接收模块采用持久化策略保存交易信息,虽然其在速度上劣于内存缓冲方案,但考虑到在高压力条件下,节点更容易出现宕机、卡顿、内存占用过高等意外情况。
进一步地,所述发送模块具体实现步骤如下:
发送模块中内置了一个可调整的计时器,当计时器被触发时,发送模块会检查本地存储中已存储交易请求数量W,将其与同在本地存储中的已发送交易请求数量S进行比较,若写入计数大于发送计数,即本地存储中存在积压的交易,则发送X笔交易至共识模块并同步更新本地的已发送交易请求数量。其中,X为交易发送阈值K与积压交易总数N=W-S的较小值,即:X=min(K,N)。通过这一机制,可以利用节点本地的存储对交易进行缓冲,从而实现交易接收与共识过程的分离,且由于发送模块的发送策略,交易的共识速度是一个均匀的定值,避免了突发流量对共识过程的冲击,确保了网络整体的稳定性。
进一步地,所述调速子模块中,本地节点自身状态包括:资源消耗情况、接收总交易请求数量、全网共识速度、自身共识发送速度。
进一步地,所述动态调速模块的具体实现步骤如下:
检测子模块定期发送一笔特殊的共识请求,通报本地节点的资源消耗情况及交易处理情况,在接收到全网各节点的通报信息后,计算得出区块链集群的共识平均速度;
调速子模块接收到共识平均速度后,根据接收总交易请求数量以及全网共识速度,再结合本地节点的资源消耗情况修改节点自身共识发送速度;调速结束后调速子模块及时通过特殊共识请求将自身共识发送速度向全网更新。
进一步地,所述检测子模块定期发送的特殊共识请求中,不包含任何具体的实际交易,通过调用区块链节点内的预编译合约,向全网通报自身的资源消耗情况及交易处理情况。
进一步地,所述调速子模块发送的特殊共识请求中,不包含任何具体的实际交易,通过调用区块链节点内的预编译合约,向全网更新自身共识发送速度。
进一步地,所述动态调速模块能够保持共识发送速度的稳定,在固定的区块链共识算法条件下,稳定的请求速率能够大大提升共识算法的效率以及稳定性。
在另一个实施例中,提供一种提升区块链吞吐量的方法,包括如下步骤:
S1.用户发起交易请求至负载均衡模块,负载均衡模块查询路由表并根据各节点的交易接收权值将该交易转发至相关区块链节点进行交易处理;
S2.区块链节点接收交易请求后通过预处理模块对交易请求进行完整性和合法性验证,处理完成后将该交易请求打包并发送至接收模块;
S3.标记模块内部维护一个全局的并发安全的唯一自增标记,并将其写入本地存储;之后再将该标记连同交易请求一并发送给接收模块,将其作为交易的顺序标记;此处采用先写入再输出的方式,可以很好地规避因***意外宕机产生的标记重复问题;
S4.如图2所示,接收模块在收到标记以及交易请求后,先将交易请求写入本地非易失存储,然后再根据标记更新接收模块内置计数器中的已存储交易请求数量,待更新完成之后,返回交易成功接收的结果给用户;根据标记更新接收模块内置计数器中的已存储交易请求数量,该过程为原子过程,该标记用于后续定位交易写入位置;
S5.当发送模块内置的发送计时器被触发后,发送模块从本地存储中读取已存储交易请求数量W以及已发送交易请求数量S,并据此计算出本地存储中积压的交易总数N=W-S,若N的值不为0,则发送模块向共识模块发送交易发送阈值K;若N<K,则将N笔交易读出,将其打包后发送给共识模块;若N>K,则将K笔交易读出,将其打包后发送给共识模块;即X=min(N,K),将X笔交易请求打包后发送给共识模块,之后将本地存储中发送成功的交易删除,更新发送模块内置计数器中的已发送给共识模块的交易请求数量,以及已处理成功并删除的交易请求数量;
S6.如图3所示,当动态调速模块内置的计时器被触发时,该模块的监测子模块会通过一笔特殊的共识请求向全网节点通报本地节点的资源消耗情况及交易处理情况,并在接收到所有节点的通报消息后,计算得出区块链集群的共识平均速度;调速子模块根据接收总交易请求数量以及全网共识速度,再结合本地节点的资源消耗情况,确定自身节点的共识上传速度,并同时修改交易发送阈值K以及自身的交易接收权值。
进一步地,当某节点***占用过高时,会触发阻断机制,主动发送自身状态的同时降低自身的交易接收权值并同步调低自身的交易发送阈值K。
进一步地,节点内置的垃圾回收计时器被触发时,发送模块检查当前缓存中的数据,将已发送的交易缓存清除,防止占用过多的***储存空间。
进一步地,所述接收模块可以接收交易信息并存储在本地,而当一笔交易请求被节点接收后,节点会先在预处理模块中对交易进行处理,该过程会消耗大量的CPU资源,与共识模块形成竞争,从而影响节点接收请求的效率。通过接收模块的隔断,可让预处理操作与共识操作异步进行,并可根据***当前的资源消耗情况给出动态的调整。
进一步地,所述标记模块主要用于生成一个本地的全局计数,且计数值为非易失的,用此计数来对节点接收的交易信息进行标记,从而使交易可以在被持久化后依然能够按接收次序被发送。同时,考虑到节点重启,服务器宕机等突发情况,该模块所有的计数均会在下发前被持久化至节点本地,以便于节点在重启时继续计数从而避免重启服务出现计数重复进而导致区块链奔溃或交易被长时间积压。
进一步地,如图3所示,所述步骤S6中,动态调速模块会根据检测子模块收到的其余节点资源消耗情况、交易处理情况判断自身节点状态。当检测到自身***占用较高时,动态调速模块会降低自身的共识上传速度,并调低自身的交易接收权值,将更多的交易分配至其余节点;当自身***占用较低,且全网中有***占用较高节点时,调速模块会适当调高自身的交易接收权值。
当全网存在某个节点共识发送速率低于一个预定义的低值时,判断全网共识速度达到极限,此时集群中各节点的共识交易总和会固定为阈值;当全网积压交易达到一个预定义的上限时,全网进入一个“忙碌”状态,直到积压交易降低至某一值。
当监测子模块监测到自身节点***占用超过预定义的阈值时,监测子模块会立即发送当前***状态至区块链网络主节点,当主节点的动态调速模块收到响应***状态信息时,立即下发其统计所得的当前全网***占用情况以及全网的共识状态,从节点的动态调速模块接收到该信息后会根据该消息得出全网的平均共识速度。
调速子模块内置两个用于判断是否需要增加共识速度的判别器,分别为判定自身***状态的判别器A以及全网共识状态的判别器B。当节点收到来自主节点的全网***运行情况时,判别器B根据该信息得出共识上调权值Vbu,以及共识下调权值Vbd,此二值与判别器A实时维护的共识上调权值Vau,共识下调权值Vad进行计算,确定自身节点的共识上传速度Vcon。
在一个实施例中,提出了一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中提升区块链吞吐量的方法中的步骤。
在一个实施例中,提出了一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述各实施例中提升区块链吞吐量的方法中的步骤。其中,存储介质可以为非易失性存储介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (10)
1.一种区块链吞吐量提升***,其特征在于,该***包含负载均衡模块,以及在区块链节点内部部署的预处理模块、标记模块、接收模块、发送模块、动态调速模块和共识模块;
所述负载均衡模块:根据当前区块链集群负载情况对用户的交易请求进行路由,确定当前交易请求在区块链集群中的具体执行节点;
所述预处理模块:对交易请求进行完整性和合法性验证,并产生交易凭证;
所述标记模块:产生非重复的本地全局计数,且计数值为非易失的;根据交易请求进行计数更新;
所述接收模块:接收交易请求并立即缓存在本地,同时拥有一个内置计数器,用于标记已存储的交易请求数量;
所述发送模块:定时定量地将本地存储的交易请求发送给共识模块,同时拥有两个内置计数器,分别用于标记已发送给共识模块的交易请求数量,以及已处理成功并删除的交易请求数量;
所述动态调速模块包括检测子模块和调速子模块;
所述检测子模块:监测本地节点及区块链集群的资源消耗情况及交易处理情况,并计算得到区块链集群的共识平均速度;
所述调速子模块:根据本地节点自身状态以及检测子模块下发的共识平均速度信息,调整发送模块将交易请求发送给共识模块的速度,即自身共识发送速度;
所述共识模块:对区块链交易请求进行全网广播与共识。
2.根据权利要求1所述的区块链吞吐量提升***,其特征在于,所述调速子模块中,本地节点自身状态包括:资源消耗情况、接收总交易请求数量、全网共识速度、自身共识发送速度。
3.根据权利要求1所述的区块链吞吐量提升***,其特征在于,所述动态调速模块的具体实现步骤如下:
所述检测子模块定期发送一笔特殊的共识请求,通报本地节点的资源消耗情况及交易处理情况,在接收到全网各节点的通报信息后,计算得出区块链集群的共识平均速度;
所述调速子模块接收到共识平均速度后,根据接收总交易请求数量以及全网共识速度,再结合本地节点的资源消耗情况修改节点自身共识发送速度;调速结束后调速子模块及时通过特殊共识请求将自身共识发送速度向全网更新。
4.根据权利要求3所述的区块链吞吐量提升***,其特征在于,所述检测子模块定期发送的特殊共识请求中,不包含任何具体的实际交易,通过调用区块链节点内的预编译合约,向全网通报自身的资源消耗情况及交易处理情况。
5.根据权利要求3所述的区块链吞吐量提升***,其特征在于,所述调速子模块发送的特殊共识请求中,不包含任何具体的实际交易,通过调用区块链节点内的预编译合约,向全网更新自身共识发送速度。
6.根据权利要求1所述的区块链吞吐量提升***,其特征在于,所述负载均衡模块根据区块链节点的交易接收权值对交易请求进行转发,权值高的节点将收到更多的交易请求,该过程为动态过程,在集群运行过程中会随着节点的运行状态进行相应的调整。
7.一种基于权利要求1-6任一项所述***提升区块链吞吐量的方法,其特征在于,该方法包括如下步骤:
S1.用户发起交易请求至负载均衡模块,根据节点的交易接收权值将该交易请求转发至相应区块链节点进行交易处理;
S2.区块链节点接收交易请求后通过预处理模块对交易请求进行完整性和合法性验证,处理完成后将该交易请求打包并发送至接收模块;
S3.标记模块内部维护一个全局的并发安全的唯一自增标记,并将其写入本地存储;之后再将该标记连同交易请求一并发送给接收模块,将其作为交易的顺序标记;
S4.接收模块在收到标记以及交易请求后,先将交易请求写入本地非易失存储,然后再根据标记更新接收模块内置计数器中的已存储交易请求数量,待更新完成之后,返回交易成功接收的结果给用户;
S5.当发送模块内置的发送计时器被触发后,发送模块从本地存储中读取已存储交易请求数量W以及已发送交易请求数量S,并据此计算出本地存储中积压的交易总数N=W-S,之后通过交易发送阈值K将所需的min(N,K)个交易读出并打包后发送给共识模块,之后将本地存储中发送成功的交易删除,更新发送模块内置计数器中的已发送给共识模块的交易请求数量,以及已处理成功并删除的交易请求数量;
S6.动态调速模块会定期通过一笔特殊的共识请求向全网节点通报本地节点的资源消耗情况及交易处理情况,并在接收到所有节点的通报消息后,计算得出区块链集群的共识平均速度;之后根据接收总交易请求数量以及全网共识速度,再结合本地节点的资源消耗情况,确定自身节点的共识上传速度,并同时修改交易发送阈值K以及自身的交易接收权值。
8.根据权利要求7所述的方法,其特征在于,当某节点***占用过高时,会触发阻断机制,主动发送自身状态的同时降低自身的交易接收权值并同步调低自身的交易发送阈值K。
9.根据权利要求7所述的方法,其特征在于,节点内置的垃圾回收计时器被触发时,发送模块检查当前缓存中的数据,将已发送的交易缓存清除,防止占用过多的***储存空间。
10.根据权利要求7所述的方法,其特征在于,所述步骤S4中,根据标记更新接收模块内置计数器中的已存储交易请求数量,该过程为原子过程,该标记用于后续定位交易写入位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110995811.XA CN113779145B (zh) | 2021-08-27 | 2021-08-27 | 一种区块链吞吐量提升***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110995811.XA CN113779145B (zh) | 2021-08-27 | 2021-08-27 | 一种区块链吞吐量提升***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113779145A true CN113779145A (zh) | 2021-12-10 |
CN113779145B CN113779145B (zh) | 2024-07-16 |
Family
ID=78839532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110995811.XA Active CN113779145B (zh) | 2021-08-27 | 2021-08-27 | 一种区块链吞吐量提升***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113779145B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108616596A (zh) * | 2018-05-09 | 2018-10-02 | 南京邮电大学 | 基于动态授权和网络环境感知的区块链自适应共识方法 |
CN109150598A (zh) * | 2018-08-10 | 2019-01-04 | 上交所技术有限责任公司 | 一种基于块片的bft共识算法带宽使用率改进方法 |
CN110445619A (zh) * | 2017-03-30 | 2019-11-12 | 腾讯科技(深圳)有限公司 | 区块链***、消息处理方法及存储介质 |
CN110602096A (zh) * | 2019-09-12 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 区块链网络中的数据处理方法、装置、存储介质和设备 |
CN111711526A (zh) * | 2020-06-16 | 2020-09-25 | 深圳前海微众银行股份有限公司 | 一种区块链节点的共识方法及*** |
CN112564960A (zh) * | 2020-12-01 | 2021-03-26 | 浙商银行股份有限公司 | 基于区块链节点中心度弹性调整共识的方法及装置 |
CN113138853A (zh) * | 2021-04-09 | 2021-07-20 | 浙商银行股份有限公司 | 区块链***自适应服务降级方法、设备及存储介质 |
-
2021
- 2021-08-27 CN CN202110995811.XA patent/CN113779145B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110445619A (zh) * | 2017-03-30 | 2019-11-12 | 腾讯科技(深圳)有限公司 | 区块链***、消息处理方法及存储介质 |
CN108616596A (zh) * | 2018-05-09 | 2018-10-02 | 南京邮电大学 | 基于动态授权和网络环境感知的区块链自适应共识方法 |
CN109150598A (zh) * | 2018-08-10 | 2019-01-04 | 上交所技术有限责任公司 | 一种基于块片的bft共识算法带宽使用率改进方法 |
CN110602096A (zh) * | 2019-09-12 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 区块链网络中的数据处理方法、装置、存储介质和设备 |
US20210203509A1 (en) * | 2019-09-12 | 2021-07-01 | Tencent Technology (Shenzhen) Company Limited | Data processing method and apparatus in blockchain network, storage medium, and computer device |
CN111711526A (zh) * | 2020-06-16 | 2020-09-25 | 深圳前海微众银行股份有限公司 | 一种区块链节点的共识方法及*** |
CN112564960A (zh) * | 2020-12-01 | 2021-03-26 | 浙商银行股份有限公司 | 基于区块链节点中心度弹性调整共识的方法及装置 |
CN113138853A (zh) * | 2021-04-09 | 2021-07-20 | 浙商银行股份有限公司 | 区块链***自适应服务降级方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113779145B (zh) | 2024-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110061927B (zh) | 一种多队列数据中心环境中面向微突发流的拥塞感知与标记方法 | |
US10848428B2 (en) | Method for dynamically allocating resources in an SDN/NFV network based on load balancing | |
US8099492B2 (en) | Method and system for background replication of data objects | |
CN106533970B (zh) | 面向云计算数据中心网络的差分流传输控制方法及装置 | |
CN103841052B (zh) | 一种带宽资源分配***与方法 | |
WO2020019743A1 (zh) | 流量控制方法及装置 | |
CN110460534B (zh) | 一种请求消息上报方法、装置、设备及存储介质 | |
CN101662483A (zh) | 云计算网络的缓存***及其方法 | |
CN108446179B (zh) | 基于负载均衡机制的权重优先Task任务调度方法 | |
CN104572498B (zh) | 报文的缓存管理方法和装置 | |
CN101459966A (zh) | 基于IEEE802.16的Ad Hoc网络MAC层QoS保障方法 | |
CN115412497A (zh) | 一种bbr拥塞控制算法的性能优化方法 | |
US9667569B1 (en) | System and method for adaptive server shielding | |
CN116980342B (zh) | 一种多链路聚合传输数据的方法和*** | |
CN102882809A (zh) | 一种基于报文缓存的网络限速方法及装置 | |
CN107197039A (zh) | 一种基于cdn的paas平台服务包分发方法及*** | |
CN113779145A (zh) | 一种区块链吞吐量提升***及方法 | |
CN115883465B (zh) | 流量控制方法、装置、服务器、***及存储介质 | |
CN107193488B (zh) | 一种分布式***数据重分配方法及其装置 | |
JP2022541730A (ja) | ネットワーク伝送制御方法および装置 | |
CN105323320A (zh) | 一种内容分发的方法及装置 | |
WO2011054224A1 (zh) | 客户端接口机、服务端接口机及其消息处理方法、*** | |
CN113934531A (zh) | 一种高吞吐量流处理方法及装置 | |
CN111966694A (zh) | 一种后端数据存储空间的优化***及方法 | |
CN117439655B (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 |