一种利用状态规约的区块链分片负载均衡方法及系统 |
|||||||
申请号 | CN202311507305.7 | 申请日 | 2023-11-13 | 公开(公告)号 | CN118051326A | 公开(公告)日 | 2024-05-17 |
申请人 | 北京航空航天大学; 国网安徽省电力有限公司电力科学研究院; 中国电力科学研究院有限公司; | 发明人 | 邱望洁; 郑志明; 李春培; 段祥骏; 李金中; 王鑫; 汪玉; 曹盼盼; 张淑娟; 李运硕; 许媛媛; | ||||
摘要 | 本 发明 公开了一种利用状态规约的 区 块 链 分片负载均衡方法及系统,包括:1)在区块链系统开始运行后,依据 节点 存储状态的能 力 和处理验证交易的能力,构建状态规约模型,将节点划分到不同的分片中,完成区块链系统分片;2)在完成区块链分片后,各分片执行共识进行交易验证;3)在各分片完成交易验证后,利用负载计算模型量化本轮交易验证结束后的剩余交易,计算剩余负载;4)在获得本轮剩余负载后,根据共识验证节点在本轮交易验证中的表现来综合评估节点性能,获得节点评级;5)在完成节点评级后,根据本轮剩余负载情况及节点评级选取相应的负载均衡策略,更新分片内参加新一轮交易验证的节点集合,继续执行新一轮的交易验证五个阶段。本发明能够在不降低单个分片的交易验证率及平均交易处理能力的 基础 上,有效缓解各分片间负载不均衡的现象。 | ||||||
权利要求 | 1.一种利用状态规约的区块链分片负载均衡方法,其特征在于,所述方法包括: |
||||||
说明书全文 | 一种利用状态规约的区块链分片负载均衡方法及系统技术领域背景技术[0002] 分片技术是解决区块链可扩展性的一种有效方案,主要思想是“分而治之”,将系统中参与验证的节点分成多个分片,各个分片独立验证分配到该分片的交易,分片之间并行处理事务,使得系统的吞吐量提高。在电力区块链中应用分片技术,可以实现大规模能源交易的高效处理、数据隐私与安全保护、能源资源整合,以及网络的可扩展性。这些优势将推动电力行业实现数字化转型,提高电力市场灵活度和电力资源利用效率,促进能源行业的可持续发展。 [0003] 然而,在区块链的分片技术中,负载不均衡是一个重要的问题。分片负载不均衡指的是不同分片之间的负载分布不平衡,即某些分片负载较重,而其他分片负载较轻。这可能导致一些分片的性能下降,而其他分片可能未能充分利用资源,从而影响整个区块链网络的性能和效率。在电力区块链中,不同地区的能源交易量可能存在差异,导致涉及较大交易量的分片负载较重。此外,当前基于分片的区块链协议在按既定规则将交易映射到分片时并未考虑分片内各节点的能力差异,节点依靠随机分配,因此可能会出现某个分片负载大但节点性能不一定好的情况。在各个分片性能差距过大的情况下处理交易,不仅会造成资源浪费,还不利于提升区块链的整体性能。发明内容 [0004] 本申请的目的是针对分片中共识验证节点不足以处理分配到当前分片的交易,导致分片内交易拥堵,造成的分片间负载不均衡问题,提供一种区块链分片负载均衡方法,该方法应用状态归约模型弱化分片内节点间的能力差异,根据网络中的节点的性能和表现对其评分且划分等级,通过在剩余负载增大的分片中随机分配性能和表现更优的节点,以求快速减少分片内的剩余负载,实现分片间负载均衡。 [0005] 为实现上述目的,本申请提供了一种利用状态规约的区块链分片负载均衡方法及系统,旨在缓解分片内节点的压力,有效解决电力区块链中分片负载不均衡的问题,从而提升系统的整体性能和稳定性。 [0006] 第一方面,本申请提供了一种利用状态规约的区块链分片负载均衡方法,所述方法包括: [0007] a.在区块链系统开始运行后,依据节点存储状态的能力和处理验证交易的能力,构建状态规约模型,将节点划分到不同的分片中,完成区块链系统分片; [0008] b.在完成区块链分片后,各分片执行共识进行交易验证; [0009] c.在各分片完成交易验证后,利用负载计算模型量化本轮交易验证结束后的剩余交易,计算剩余负载; [0010] d.在获得本轮剩余负载后,根据共识验证节点在本轮交易验证中的表现来综合评估节点性能,获得节点评级; [0011] e.在完成节点评级后,根据本轮剩余负载情况及节点评级选取相应的负载均衡策略,更新分片内参加新一轮交易验证的节点集合,继续执行新一轮的交易验证。 [0012] 优选的,将节点划分到不同的分片中,完成区块链系统分片,包括: [0014] b.根据节点自身性能和所述初始分片的约束,各节点选择是否同步相邻分片的状态,决定是否向上归约,最终被划分为不同类别,每个类别的节点形成一个合成分片,所有分片形成满二叉树结构,获得状态规约模型; [0015] c.形成的状态规约模型中,从最底层的初始分片到最上层的合成分片,分片内节点的性能逐渐增强;各分片中的节点被划分为多个状态节点集合,包括分片内待同步节点序列、分片内就绪节点队列、分片内共识验证节点集合、全局待选择节点队列、黑名单以及局外节点集合。 [0016] 优选的,在完成区块链分片后,各分片执行共识进行交易验证,包括: [0017] a.根据上一轮交易验证中共识验证节点的表现,更新状态节点集合,若上一轮中共识验证节点集合中节点行为被证明是拜占庭行为,则直接进入黑名单,否则节点的表现将计入历史数据,节点进入分片内就绪节点队列; [0018] b.依据VRF算法从分片内就绪节点队列中选出节点加入分片内共识验证节点集合; [0019] c.每个分片内更新后的分片内共识验证节点集合独立运行PBFT共识算法执行交易验证。 [0020] 优选的,在各分片完成交易验证后,利用负载计算模型量化本轮交易验证结束后的剩余交易,计算剩余负载,包括: [0021] 构建负载计算模型,用分片s的共识验证节点集合在时隙t收集到的交易总数与分片s的共识验证节点集合在时隙t验证过的交易数的差值作为该轮共识的剩余负载,负载计算模型的计算公式如下: [0022] Surplustrt(s)=Sumtrt(s)‑Verificationtrt(s) [0023] 其中,Sumtrt(s)表示分片s的共识验证节点集合在时隙t收集到的交易总数,Verificationtrt(s)表示分片s的共识验证节点集合在时隙t验证过的交易数。 [0024] 优选的,在获得本轮剩余负载后,根据共识验证节点在本轮交易验证中的表现来综合评估节点性能,获得节点评级,包括: [0025] a.节点提供自身性能评分si01; [0026] b.根据节点同步状态的速度,给出节点状态同步速度评分si02; [0027] c.结合所述的节点评分si01和si02,根据公式si0=k×si01+(1‑k)×si02,得到节点的性能评分si0; [0028] d.根据历史记录中记录的节点行为,计算节点的行为评分si1; [0029] e.结合所述的节点性能评分si0和节点行为评分si1,根据公式Scorei(t)=si0+si1,得到节点i在时隙t的综合评分; [0030] f.根据节点综合评分和等级的对应关系对节点进行等级划分。 [0031] 优选的,在完成节点评级后,根据本轮剩余负载情况及节点评级选取相应的负载均衡策略,更新分片内参加新一轮交易验证的节点集合,继续执行新一轮的交易验证,包括: [0032] 负载均衡策略主要是依据时隙t与时隙t‑1的剩余负载进行比较来优化区块链系统的性能。比较时隙t与时隙t‑1的剩余负载;当时隙t的剩余负载多于时隙t‑1的剩余负载时,根据当前分片内共识验证节点集合中的节点平均评分及当前分片的状态选取剩余负载的交易验证方法。 [0033] 进一步地,所述根据当前分片内共识验证节点集合中的节点平均评分及当前分片的状态选取剩余负载的交易验证方法,包括: [0034] a.选取2/3评分不低于当前时隙平均评分的节点参与交易验证; [0035] b.当分片内共识验证节点集合中的节点平均评分对应的等级为最高级,但剩余负载仍然在增加时,将交易向上归约,提交给上层分片进行验证; [0036] c.若上层分片产生交易拥堵或者已经在最高层,则将剩余负载单独验证。 [0037] 第二方面,本申请提供了一种利用状态规约的区块链分片负载均衡系统,所述系统包括: [0038] 状态规约模型构建模块,用于根据节点存储状态的能力和处理验证交易的能力对区块链节点的状态进行动态调整,并划分为不同的分片,实现区块链系统的分片; [0039] 分片交易验证模块,在完成区块链系统分片后,从各分片中选取共识验证节点集合参与交易验证; [0040] 剩余负载计算模块,在各分片完成交易验证后,计算各分片在执行交易验证后的未处理交易数量,以便获得所述各分片的剩余负载状态; [0041] 节点综合评价模块,在剩余负载计算完成后,根据节点的性能和共识表现来综合评估节点的性能,并分别设置一个指标权重占比,对两个指标进行综合权衡,获得节点评级; [0042] 交易负载均衡模块,根据所述各分片的剩余负载状态和所述各分片中各节点的节点评级执行相应的负载均衡策略对所述分片中的未处理交易执行交易验证操作。 [0043] 可选的,所述状态规约模型构建模块包括: [0044] 状态规约单元,用于对区块链系统进行状态分片,首先,节点通过随机算法被随机分配到各个分片,获得初始分片;然后,根据节点自身性能和所述初始分片的约束,各节点选择是否同步相邻分片的状态,决定是否向上规约,最终被划分为不同类别,每个类别的节点形成一个合成分片,所有分片形成满二叉树结构,获得状态规约模型; [0045] 状态节点集合管理单元,用于维护分片内各节点状态,各分片中的节点被划分为多个状态节点集合,包括分片内待同步节点序列、分片内就绪节点队列、分片内共识验证节点集合、全局待选择节点队列、黑名单以及局外节点集合,在系统运行构成中,节点在所述的集中集合之间进行转换。 [0046] 可选的,所述分片交易验证模块包括: [0047] 共识验证节点选取单元,用于从当前分片中选取节点参与本轮的交易验证,首先根据上一轮交易验证中共识验证节点的表现,更新分片内就绪节点队列;然后依据VRF算法从分片内就绪节点队列中选出节点加入分片内共识验证节点集合;其中,所述共识验证节点集合用于运行PBFT共识算法执行交易验证。 [0048] 可选的,所述剩余负载计算模块包括: [0049] 剩余负载计算单元,用于量化上一轮共识中未验证的交易,用分片s的共识验证节点集合在时隙t收集到的交易总数与分片s的共识验证节点集合在时隙t验证过的交易数的差值作为时隙t的剩余负载。 [0050] 可选的,所述节点综合评价模块包括: [0051] 节点性能评分单元,用于根据节点自身性能参数和同步状态的速度计算节点的性能评分; [0052] 节点行为评分单元,用于根据历史记录中记录的节点行为计算节点的行为评分。 [0053] 可选的,所述交易负载均衡模块包括: [0054] 负载均衡处理单元,用于根据剩余负载和节点评级执行负载均衡策略;通过比较时隙t和时隙t‑1的剩余负载,当时隙t的剩余负载多于时隙t‑1的剩余负载时,根据当前分片内共识验证节点集合中的节点平均评分及当前分片的状态选取剩余负载的交易验证方法;其中所述根据当前分片内共识验证节点集合中的节点平均评分及当前分片的状态选取剩余负载的交易验证方法包括,选取2/3评分不低于当前时隙平均评分的节点参与交易验证、将剩余交易向上规约提交给上层分片、将剩余负载单独验证。 [0055] 本申请所述的一种利用状态规约的区块链分片负载均衡方法及系统具有以下优势: [0056] 1.与传统基于分片技术的电力区块链相比,本方法利用状态规约实现了分片负载均衡,能够应对电力区块链中不同区域或能源类型的分片负载存在差异的问题,最大限度地发挥分片技术的优势,帮助实现高效、安全和可扩展的电力区块链应用。 [0057] 2.与多轮验证方案相比,本方法利用了状态规约模型,减轻了单个节点的存储压力,能够在不降低单个分片交易验证率的情况下,有效减轻分片间负载不均衡的情况。 [0058] 3.本方法具有灵活性与可扩展性:基于状态规约的分片负载均衡方法可以根据实际情况进行动态调整。这意味着在网络负载变化或出现新的负载模式时,负载均衡算法可以快速适应,确保资源的最优分配,从而满足了复杂的分布式电力交易场景下应用需求。 [0059] 本方法针对分片中共识验证节点不足以处理分配到当前分片的交易,导致分片内交易拥堵,造成的分片间负载不均衡问题,提出了利用状态归约的分片负载均衡方法。该方法应用状态归约模型弱化分片内节点间的能力差异,根据网络中的节点的性能和表现对其评分且划分等级,通过在剩余负载增大的分片随机分配性能和表现更优的节点,以求快速减少分片内的剩余负载。总之,本方法实现的基于状态规约的分片负载均衡方法能够提供更加智能、高效和精确的资源分配,以满足不同分片的需求,优化整个区块链网络的性能和可扩展性。 附图说明[0061] 图1为电力区块链应用分片技术对系统节点进行划分的示意图; [0062] 图2为本申请一种利用状态规约的区块链分片负载均衡方法实施例的方案流程图; [0063] 图3为本申请一种利用状态规约的区块链分片负载均衡系统实施例的实例模块图。 具体实施方式[0064] 以下通过附图和实施例对本申请的技术方案作进一步说明。 [0065] 除非另外定义,本申请使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。 [0066] 在某地区,应用分片技术对电力区块链系统节点进行划分,在采用分片技术前,区块链系统中的全部共识验证节点参与交易验证。假设区块链系统中性能较差的节点所占比重较小,远少于三分之一,拜占庭节点不会影响交易验证。但在分片后,节点随机分配,可能出现图1的情况。在图中,空心圆表示自身性能相对较弱的节点,实心圆表示性能较强的节点。性能较差的节点在分片1和分片2中比重较小,对共识结果的影响相对较小;但在分片3中,性能较差的节点数量较多,在验证交易时,性能较差的验证节点在给定时间内完不成交易验证,导致分片达成共识的速度较慢甚至达不成共识,交易验证速度较慢,交易得不到及时处理,最终该分片可能会出现交易拥堵的现象,使该分片的剩余负载过大,分片间负载不均衡现象明显。为了解决上述问题和挑战,可使用本方法实现各分片之间的负载均衡。 [0067] 参照图1,电力区块链应用分片技术对系统节点进行划分的示意图;参照图2,一种利用状态规约的区块链分片负载均衡方法实施例的方案流程图,所述方法包括五个阶段: [0068] a.在区块链系统开始运行后,依据节点存储状态的能力和处理验证交易的能力,构建状态规约模型,将节点划分到不同的分片中,完成区块链系统分片; [0069] b.在完成区块链分片后,各分片执行共识进行交易验证; [0070] c.在各分片完成交易验证后,利用负载计算模型量化本轮交易验证结束后的剩余交易,计算剩余负载; [0071] d.在获得本轮剩余负载后,根据共识验证节点在本轮交易验证中的表现来综合评估节点性能,获得节点评级; [0072] e.在完成节点评级后,根据本轮剩余负载情况及节点评级选取相应的负载均衡策略,更新分片内参加新一轮交易验证的节点集合,继续执行新一轮的交易验证。 [0073] 所述将节点划分到不同的分片中,完成区块链系统分片,包括: [0074] a.验证节点通过随机算法被随机分配到各个分片,获得初始分片; [0075] b.根据节点自身性能和所述初始分片的约束,各节点选择是否同步相邻分片的状态,决定是否向上归约,最终被划分为不同类别,每个类别的节点形成一个合成分片,所有分片形成满二叉树结构,获得状态规约模型; [0076] c.形成的状态规约模型中,从最底层的初始分片到最上层的合成分片,分片内节点的性能逐渐增强;各分片中的节点被划分为多个状态节点集合,包括分片内待同步节点序列、分片内就绪节点队列、分片内共识验证节点集合、全局待选择节点队列、黑名单以及局外节点集合。 [0077] 所述在完成区块链分片后,各分片执行共识进行交易验证,包括: [0078] a.根据上一轮交易验证中共识验证节点的表现,更新状态节点集合,若上一轮中共识验证节点集合中节点行为被证明是拜占庭行为,则直接进入黑名单,否则节点的表现将计入历史数据,节点进入分片内就绪节点队列; [0079] b.依据VRF算法从分片内就绪节点队列中选出节点加入分片内共识验证节点集合; [0080] c.每个分片内更新后的分片内共识验证节点集合独立运行PBFT共识算法执行交易验证。 [0081] 所述在各分片完成交易验证后,利用负载计算模型量化本轮交易验证结束后的剩余交易,计算剩余负载,包括: [0082] 构建负载计算模型,用分片s的共识验证节点集合在时隙t收集到的交易总数与分片s的共识验证节点集合在时隙t验证过的交易数的差值作为该轮共识的剩余负载,负载计算模型的计算公式如下: [0083] Surplustrt(s)=Sumtrt(s)‑Verificationtrt(s) [0084] 其中,Sumtrt(s)表示分片s的共识验证节点集合在时隙t收集到的交易总数,Verificationtrt(s)表示分片s的共识验证节点集合在时隙t验证过的交易数。 [0085] 所述在获得本轮剩余负载后,根据共识验证节点在本轮交易验证中的表现来综合评估节点性能,获得节点评级,包括: [0086] a.节点提供自身性能评分si01; [0087] b.根据节点同步状态的速度,给出节点状态同步速度评分si02; [0088] c.结合所述的节点评分si01和si02,根据公式si0=k×si01+(1‑k)×si02,得到节点的性能评分si0; [0089] d.根据历史记录中记录的节点行为,计算节点的行为评分si1; [0090] e.结合所述的节点性能评分si0和节点行为评分si1,根据公式Scorei(t)=si0+si1,得到节点i在时隙t的综合评分; [0091] f.根据节点综合评分和等级的对应关系对节点进行等级划分。 [0092] 所述在完成节点评级后,根据本轮剩余负载情况及节点评级选取相应的负载均衡策略,更新分片内参加新一轮交易验证的节点集合,继续执行新一轮的交易验证,包括: [0093] 比较时隙t与时隙t‑1的剩余负载;当时隙t的剩余负载多于时隙t‑1的剩余负载时,根据当前分片内共识验证节点集合中的节点平均评分及当前分片的状态选取剩余负载的交易验证方法。 [0094] 根据当前分片内共识验证节点集合中的节点平均评分及当前分片的状态选取剩余负载的交易验证方法的具体过程如下: [0095] a.选取2/3评分不低于当前时隙平均评分的节点参与交易验证; [0096] b.当分片内共识验证节点集合中的节点平均评分对应的等级为最高级,但剩余负载仍然在增加时,将交易向上归约,提交给上层分片进行验证; [0097] c.若上层分片产生交易拥堵或者已经在最高层,则将剩余负载单独验证。 [0098] 参照图3,一种利用状态规约的区块链分片负载均衡系统实施例的实例模块图,所述系统包括: [0099] 状态规约模型构建模块,用于根据节点存储状态的能力和处理验证交易的能力对区块链节点的状态进行动态调整,并划分为不同的分片,实现区块链系统的分片; [0100] 分片交易验证模块,在完成区块链系统分片后,从各分片中选取共识验证节点集合参与交易验证; [0101] 剩余负载计算模块,在各分片完成交易验证后,计算各分片在执行交易验证后的未处理交易数量,以便获得所述各分片的剩余负载状态; [0102] 节点综合评价模块,在剩余负载计算完成后,根据节点的性能和共识表现来综合评估节点的性能,并分别设置一个指标权重占比,对两个指标进行综合权衡,获得节点评级; [0103] 交易负载均衡模块,根据所述各分片的剩余负载状态和所述各分片中各节点的节点评级执行相应的负载均衡策略对所述分片中的未处理交易执行交易验证操作。 [0104] 可选的,所述状态规约模型构建模块包括: [0105] 状态规约单元,用于对区块链系统进行状态分片,首先,节点通过随机算法被随机分配到各个分片,获得初始分片;然后,根据节点自身性能和所述初始分片的约束,各节点选择是否同步相邻分片的状态,决定是否向上规约,最终被划分为不同类别,每个类别的节点形成一个合成分片,所有分片形成满二叉树结构,获得状态规约模型; [0106] 状态节点集合管理单元,用于维护分片内各节点状态,各分片中的节点被划分为多个状态节点集合,包括分片内待同步节点序列、分片内就绪节点队列、分片内共识验证节点集合、全局待选择节点队列、黑名单以及局外节点集合,在系统运行构成中,节点在所述的集中集合之间进行转换。 [0107] 可选的,所述分片交易验证模块包括: [0108] 共识验证节点选取单元,用于从当前分片中选取节点参与本轮的交易验证,首先根据上一轮交易验证中共识验证节点的表现,更新分片内就绪节点队列;然后依据VRF算法从分片内就绪节点队列中选出节点加入分片内共识验证节点集合;其中,所述共识验证节点集合用于运行PBFT共识算法执行交易验证。 [0109] 可选的,所述剩余负载计算模块包括: [0110] 剩余负载计算单元,用于量化上一轮共识中未验证的交易,用分片s的共识验证节点集合在时隙t收集到的交易总数与分片s的共识验证节点集合在时隙t验证过的交易数的差值作为时隙t的剩余负载。 [0111] 可选的,所述节点综合评价模块包括: [0112] 节点性能评分单元,用于根据节点自身性能参数和同步状态的速度计算节点的性能评分; [0113] 节点行为评分单元,用于根据历史记录中记录的节点行为计算节点的行为评分。 [0114] 可选的,所述交易负载均衡模块包括: [0115] 负载均衡处理单元,用于根据剩余负载和节点评级执行负载均衡策略;通过比较时隙t和时隙t‑1的剩余负载,当时隙t的剩余负载多于时隙t‑1的剩余负载时,根据当前分片内共识验证节点集合中的节点平均评分及当前分片的状态选取剩余负载的交易验证方法;其中所述根据当前分片内共识验证节点集合中的节点平均评分及当前分片的状态选取剩余负载的交易验证方法包括,选取2/3评分不低于当前时隙平均评分的节点参与交易验证、将剩余交易向上规约提交给上层分片、将剩余负载单独验证。 [0116] 最后应说明的是:以上实施例仅用以说明本申请的技术方案而非对其进行限制,尽管参照较佳实施例对本申请进行了详细的说明,本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。 [0117] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。 [0118] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。 [0119] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。 [0120] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。 [0121] 显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。 |