CN116450658A - 基于节点集群增益最大化区块存储方法及装置 - Google Patents
基于节点集群增益最大化区块存储方法及装置 Download PDFInfo
- Publication number
- CN116450658A CN116450658A CN202210016189.8A CN202210016189A CN116450658A CN 116450658 A CN116450658 A CN 116450658A CN 202210016189 A CN202210016189 A CN 202210016189A CN 116450658 A CN116450658 A CN 116450658A
- Authority
- CN
- China
- Prior art keywords
- node
- block
- blocks
- allocated
- gain
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 89
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 56
- 238000005457 optimization Methods 0.000 claims abstract description 34
- 238000004364 calculation method Methods 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 22
- 238000010606 normalization Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 5
- 230000003068 static effect Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- SLXKOJJOQWFEFD-UHFFFAOYSA-N 6-aminohexanoic acid Chemical compound NCCCCCC(O)=O SLXKOJJOQWFEFD-UHFFFAOYSA-N 0.000 description 1
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于节点集群增益最大化区块分配方法及装置,本发明首先计算当前区块链系统中所有待分配的区块,以保证节点集群能够保存完整的区块链数据副本。然后利用每一个节点的存储成本、存储上限、对每个区块的访问频率,定义了在区块链系统中每个区块均被分配条件下最大化总增益的优化目标函数,实现区块的分配,将节点存储区块的增益最大化,根据我们的优化目标提出了三种启发式算法,基于成本的区块分配算法、基于增益的区块分配算法、基于skyline层的区块分配算法。本发明考虑节点的存储成本、存储上限、对每个区块的访问频率等具体特性进行区块存储分配可以有效利用节点的存储和计算资源,提高区块链系统的可扩展性和适用性。
Description
技术领域
本发明涉及区块链技术领域,尤其是一种基于节点集群增益最大化区块存储方法及装置。
背景技术
区块链的存储问题是区块链技术实际应用的一大挑战,直接影响到区块链的存储性能。在传统的区块链系统中,每个节点(区块链节点)保存一个完整的区块链副本。参照图1,在区块链系统中最基本的结构就是区块,区块链是由多个区块像链表一样链接组成。一个区块由两部分组成,即区块头区块体,包含许多信息,包括索引父区块哈希值(PrevHash)、时间戳(Timestamp)、Nonce、默克尔树根(Merkle Root)、交易数据等数据。区块头用于记录当前区块的元信息,一个没有交易数据的区块头大约是80字节,其中Prev Hash用于链接父区块,Nonce是随机数,用于工作量证明算法,TimeStamp记录当前时间。Merkle树的叶子节点存储了交易数据(Transaction,Tx)的哈希值,非叶子节点是根据孩子节点的哈希值计算得出新的哈希值。如果区块中的数据发生了更改,会影响Merkle树的结构发生变化,因此使得区块链具有防篡改的功能。区块体中包含了该区块存储的交易。
尽管业界对区块链充满热情,但将区块链应用到实际环境中仍然存在一些障碍,例如区块链节点的大量存储需求。根本原因是每个节点都需要处理和存储账本的完整副本。记录的快速增长导致区块链数据存储的快速增长。比特币已经产生了超过70万个区块,总大小在2021年12月已超过448GB。以太坊的大小超过9000GB,大约有1380万个区块。平均13.66秒生成一个新区块。要运行以太坊的完整节点,基本硬件规格包括8GB RAM和至少500GB可用空间的驱动器。当区块链系统用于处理数据密集型应用程序(如图像/视频识别)和快速且连续的数据流场景(如物联网数据收集)时,节点的存储空间问题变得更加严重。实际上,许多普通设备(例如智能手机)的存储空间和计算能力都有限。这些设备存储完整的区块链数据是不切实际的。
现有工作中已经提出了几种解决方案来解决大存储容量的问题,通过允许参与节点保存整个区块链数据的一部分。现有的解决方案主要可以分为两种:链下存储和链上存储。链下存储(例如,轻节点和IPFS)将尽可能多的交易从区块链移动到链下存储系统。然而,链下解决方案无法保证链下交易的有效性,因为链下交易是通过第三方存储系统来保存数据。链上存储是在区块链本身中存储各种数量的信息,并从系统协议层(例如分片和节点集群)。区块链节点被分成小组,同一组中的成员就他们的交易达成一致。然而,分片技术面临着符合跨分片交易的挑战,其中应该在组之间执行多轮通信。此外,大多数先前的研究根据数据内容的信息(例如哈希值)将区块链数据放置到节点上,而忽略了节点属性(例如存储容量和查询成本)。伴随节点属性而来的一个问题是节点可以获得的增益。这意味着存储方案应该能够最大化区块链节点的总收益,以充分激励节点贡献自己的存储和计算资源。
发明内容
针对上述现有技术的不足,本发明提出一种基于节点集群增益最大化区块分配方法及装置,在每个节点具有存储容量约束的条件下,实现区块的分配并最大化系统的总增益;有效利用节点的存储和计算资源,提高区块链系统的可扩展性和适用性。
本发明的第一方面,提供一种基于节点集群增益最大化区块分配方法,包括如下步骤:
计算当前区块链节点集群中每一个节点的存储成本、存储上限、对每个区块的访问频率;
计算当前区块链系统中所有待分配的区块,以保证节点集群能够保存完整的区块链数据副本;
构建优化目标函数和约束条件,所述优化目标函数为:
其中,所述表示每一个所述待分配的区块均被分配完成的情况下最大化总增益,所述/>表示节点对于区块的访问频率,所述fmax为整个系统中节点对于区块访问频率的最大值,所述/>表示为节点对区块的访问频率进行归一化,所述cj表示节点存储一个区块所消耗的单位成本,所述cmax表示为整个系统中节点存储区块的单位成本的最大值,所述/>表示对单位存储成本的归一化,所述C1C2为优化目标的权值;
所述约束条件为:
其中,所述约束条件(2)表示所有的区块都必须全部分配完成,其中Bj表示被节点存储的区块集合,B表示区块链系统中的区块集合;所述约束条件(3)表示一个区块只能被一个节点存储;所述约束条件(4)表示节点分配的区块个数不能超过存储上限kj;
根据所述优化目标函数和所述约束条件,将所述待分配区块分配至相应的所述节点。
根据本发明的实施例,至少具有如下技术效果:
首先计算当前区块链节点集群中每一个节点的存储成本、存储上限、对每个区块的访问频率,能够保证根据节点的特性对区块链中的区块分配。然后计算当前区块链系统中所有待分配的区块,以保证节点集群能够保存完整的区块链数据副本,定义了在所述约束条件下最大化总增益的优化目标,在保证所有区块被分配的情况下实现增益的最大化,提高区块链系统的可扩展性。
本发明的第二方面提供了基于节点集群的增益最大化的区块分配装置,包括:
第一计算单元,用于计算当前区块链节点集群中每一个节点的存储成本、存储上限、对每个区块的访问频率;
第二计算单元,用于计算当前区块链系统中所有待分配的区块,以保证节点集群能够保存完整的区块链数据副本;
第三计算单元,用于构建优化目标函数和约束条件,所述优化目标函数为:
区块分配单元,用于根据所述优化目标函数和所述约束条件,将所述待分配区块分配至相应的所述节点。
本发明的第三方面,提供了一种电子设备,包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行上述的可扩展的协作式区块链区块存储方法。
本发明的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述的可扩展的协作式区块链区块存储方法。
需要注意的是,本发明的第二方面至第四方面与现有技术之间的有益效果与上述的基于节点集群的增益最大化的区块分配方法与现有技术之间的有益效果相同,此处不再细述。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为区块链系统的基本结构图;
图2为本发明实施例提供的区块链系统的结构示意图;
图3为本发明实施例提供的基于节点集群增益最大化区块存储方法及装置的流程示意图;
图4为本发明实施例提供的基于成本的区块分配算法的分配过程示意图;
图5为本发明实施例提供的基于增益的区块分配算法的分配过程示意图;
图6为本发明实施例提供的基于skyline层的区块分配算法的分配过程示意图;
图7为本发明实施例提供的基于skyline层的区块分配算法中构建skyline层过程示意图。
图8为本发明实施例提供的计算机设备的结构示意图;
图9为本发明实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
非另有定义,本发明所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本发明中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本发明。
在介绍本申请的方法实施例之前,先介绍本申请的系统实施例,参照图2。考虑一个区块链应用场景。节点被组织成集群,其中同一集群中的节点一起工作以存储完整的区块链数据,如图1所示。交易被打包成区块存储在区块链节点上。假设区块链中150个区块。每个节点的存储空间有限,不能存储总共150个块。例如,节点n1最多可以存储45个区块。用户向最近的节点发起访问区块的请求。当一个节点需要一个它没有存储的块时,这个节点需要请求同一个集群中的其他节点来传输这个块。
参照图3,本发明的一个实施例,提供了一种可扩展的协作式区块链区块存储方法,本申请的方法实施例用于上述的区块链系统,本方法包括如下步骤:
步骤S100、计算当前区块链节点集群中每一个节点的存储成本、存储上限、对每个区块的访问频率;
步骤S200、计算当前区块链系统中所有待分配的区块,以保证节点集群能够保存完整的区块链数据副本;
步骤S300、构建优化目标函数和约束条件,所述优化目标函数为:
其中,所述表示每一个所述待分配的区块均被分配完成的情况下最大化总增益,所述/>表示节点对于区块的访问频率,所述fmax为整个系统中节点对于区块访问频率的最大值,所述/>表示为节点对区块的访问频率进行归一化,所述cj表示节点存储一个区块所消耗的单位成本,所述cmax表示为整个系统中节点存储区块的单位成本的最大值,所述/>表示对单位存储成本的归一化,所述C1C2为优化目标的权值;
所述约束条件为:
其中,所述约束条件(2)表示所有的区块都必须全部分配完成,其中Bj表示被节点存储的区块集合,B表示区块链系统中的区块集合;所述约束条件(3)表示一个区块只能被一个节点存储;所述约束条件(4)表示节点分配的区块个数不能超过存储上限kj;
步骤S400、根据所述优化目标函数和所述约束条件,将所述待分配区块分配至相应的所述节点。
以下充分展开对上述步骤S100至步骤S400的说明:
定义N为区块链中所有节点的集合:N={n1,…,n|N|},其中nj表示区块链中的一个节点。用户向最近的节点发起请求以访问区块。我们定义节点对区块的访问频率,令表示节点nj对区块bi的访问频率。访问频率越高,意味着单位时间内用户请求读取区块具有更高的次数。节点对于不同的区块有不同的访问频率,因此优先存储访问频率高的区块,便于用户对区块进行本地访问。节点的存储空间是有限制的,因此节点具有存储上限。假设节点nj最多可以存储kj个区块。节点存储区块,消耗成本(包含存储和查询的成本),令cj为节点nj存储单个区块的成本。令节点nj当前存储的区块个数为τj,那么该节点的成本为τjcj。基于上述思想,节点nj使用访问频率、成本、存储上限来表示。
定义B为区块链中所有区块的集合:B={b1,…,b|B|},其中bi表示区块链系统中的一个区块。为了节约存储开销,我们将区块链中的节点按照地理区域划分为小组,每个小组保存B的一个副本,每个区块只能被组内一个节点存储。为了防止发生单点故障造成的无法查询的问题,对于任一区块bi∈B,在区块链系统中保存有m个副本,即有m个区块小组保存了区块bi。当某一节点发生单点故障情况,该节点组的节点也能从其他节点组中查询该区块。
定义1(节点):nj节点表示为其中/>表示节点nj对区块bi的访问频率,cj表示nj存储单个区块所需要的成本,kj表示nj能存储的最大区块个数。
现在定义区块分配的节点访问增益。如果区块bi被分配给节点nj,那么nj查询区块bi可以直接从节点nj本地查询获得,而不需要求助其他节点来获得区块bi,这样就避免了通信开销。此时频率越大,节点nj存储bi的获益越大。另一方面,节点nj存储区块bi需要成本cj,成本越小越好。我们对/>和cj进行归一化。由于涉及到两个目标函数,同时最大化所有目标的难度非常大,因此采用加权的方法计算总增益。根据用户对不同目标的重视程度不同,对不同的目标函数确定不同的权重。定义区块bi被分配给节点nj的增益为:
其中,C1和C2为加权系数,C1,C2≥0且C1+C2=1。用户可以为两个优化目标设置不同的权重,以此表示对不同目标的重视程度。根据上述分析,我们的区块分配问题的目标是将所有区块进行分配并且只分配一次,最大化总增益。
定义2(区块链区块分配问题):给定区块集合B={b1,…,b|B|}、节点集合N={n1,…,n|N|}。区块链区块的分配问题是将B中的区块分配给N,即产生一个区块分配方案Λ,令每个节点nj被分配的区块集合为Bj。使用表示将区块bi分配给节点nj。区块链分配问题是将B中的所有区块都必须全部分配完成的情况下,最大化总增益。
约束条件:
所有的区块都必须全部分配完成:
一个区块只能被一个节点存储:
节点分配的区块个数不能超过上限:
对于单个区块来说,最好是存储在成本低、被频繁访问的节点中,即最大化的值。为了化简公式(1)可以将这个值用p(bi,nj)代替。因此公式(1)可化简为:
下表为本文符号汇总:
表1符号列表
在步骤S300构建优化目标函数和约束条件之后,需要证明本方法实施提出的区块分配问题是一个NP难问题,才能实现求解。
证明过程:可以将广义分配问题规约至区块分配问题。给出广义分配问题的实例:给定I={1,…,m}是背包的集合,J={1,…,n}是物品的集合。令将物品j分配给背包i的价值是pij,将物品j分配给背包i的重量是wij,背包i的容量是vi。广义分配问题的目的是找到一个分配矩阵X=(xij),最大化总价值,如果物品j被分配给背包i,则xij=1,否则xij=0,即
约束条件:
条件(7)确保分配给每个背包的物品的总重量不超过背包的总容量。条件(8)确保每个物品恰好分配给一个背包。
根据上述广义分配问题实例构造区块分配问题实例:区块链区块分配问题中的节点代表背包,节点有不同的存储空间对应于背包的容量,区块对应物品。因此容易证明区块分配问题和广义分配问题的优化目标是相同的。只有在求得广义分配问题的解的情况下,才能得到区块分配问题的解。已知广义分配问题是一个NP难问题,因此区块链中的区块分配问题是一个NP难问题。
上述已经证明了区块分配问题是一个NP难问题,因此本实施的步骤S400,可以根据优化目标函数和约束条件,将待分配区块分配至相应的节点。
具体的,本申请实施例提供了以下三种启发式算法来进行分配计算:
第一种方法,通过基于成本的区块分配算法求解:
由于优化目标和访问频率和成本有关,成本越低,访问频率越大,获得的增益越大。一个最直接的想法就是,首先选择成本最低的节点进行区块分配,对于该节点优先分配频率大的区块。
基于上述思想,设计基于成本的区块分配算法。如算法1所示,将节点根据存储成本由小到大排序(行2)。选择当前成本最小的节点nj,令B′为当前尚未被分配的区块集。现在需要从B′中选择区块分配给nj。将B′中的区块按照访问频率进行排序,分配/>值最大的kj个区块给节点nj(行3-4)。对于每一个已经被分配的区块,将其纳入分配方案Λ,并将该区块从B′中删除(行5-7)。直到所有的区块均被分配完成,循环结束(行8)。从算法1可以看出,给定节点nj,由于成本cj是固定的,因此值/>是固定,由于我们优先选择的是访问频率最大的区块,实际上是优先选择带来增益最大的区块。
时间复杂度分析:对节点集合进行排序的复杂度为O(|N|log|N|)。对区块进行排序的复杂度为O(|N||B|log|B|)。算法1的时间复杂度为O(|N||B|log|B|+|N|log|N|)
表2区块及节点集示例
为了便于理解,这里提供一组具体实例,给定六个区块,将其分配给三个节点,节点集对于不同区块的访问频率及其他属性如表2所示。令C1,C2的值均为0.5。算法1的执行步骤如下。首先根据节点的单位成本对节点进行排序,按照单位成本低从低到高的顺序为节点分配区块。因此首先为n1节点分配区块。n1节点的存储上限k1为3,因此n1节点最多可以存储3个区块,n1节点选择访问频率最高的三个区块b3,b5,b6(如图4(a)所示,线上的数值表示频率)。按照节点的排序,接下来为n2节点选择区块,n2节点的选择上限k2为2,因此为n2节点在未分配的区块中选择访问频率最高的两个区块,因此将b1和b2分配给n2节点(如图4(b)所示)。最后将剩下的b4区块分配给n3节点(如图4(c)所示)。最终的分配计划是(n1,b3b5b6)(n2,b1b2)(n3,b4)。我们将成本及访问频率进行归一化(归一化的结果如表3所示),然后计算所有分配对的增益,如表4所示。该分配计划的总增益为3.032。
表3节点成本及对区块访问频率归一化
表4分配对的增益
第二种方法,通过基于增益的区块分配算法求解:
算法1优先选择成本低的节点,为其分配区块集合中的区块;节点一旦被确定,会将kj个区块分配给节点,该节点便不再参与分配。算法1并没有从全局来考虑将区块分配给节点的增益,可能会导致区块未能被分配到增益最大的节点中。针对该问题,解决思路是考虑所有的区块和节点,选择增益最大的分配对。根据公式5计算加入分配对(bi,nj)后产生的增益:
基于上述思想,设计基于增益的区块分配算法。如算法2所示,因为要将所有区块全部分配完成,因此算法2的循环条件是(行2)。计算B′中所有区块bi分配给每个节点nj的增益p(bi,nj),找出p(nj,bi)值最大的分配对。根据最大增益确定应该被分配的区块和存储该区块的节点,并将其纳入分配计划(行3-5)。对于被分配的区块bi,要将该区块从B′中删除,同时要更新节点的存储上限,一旦达到了节点的存储上限,要将该节点从节点集中删除(行6-8)。直到所有的区块被分配完成,返回分配计划Λ。从算法2可以看出,总是会优先分配给系统带来增益最大的区块和相应的节点。
算法的时间复杂度分析:计算所有分配对的增益并且进行排序的时间复杂度为O(|B||N|log(|B||N|))(行2)。行3-8的时间复杂度为O(|B||N|),因此算法2的时间复杂度为O(|B||N|log(|B||N|))。
为了便于理解,这里提供一组具体实例。同样使用上文中表2作为输入,执行算法2的步骤如下。分配对的增益值如表4所示。首先将所有分配对的增益值由大到小排序,根据最大的增益值确定了区块和节点,因为最大的增益值是p(n2,b3)=1×0.5+0.25×0.5=0.625,因此将b3分配给n2节点,并且将和b3有关的分配对从分配对集合中删除。下一个最大的增益值是p(n2,b5)=0.969×0.5+0.25×0.5=0.610,因此将b5分配给n2节点,此时n2节点达到了存储上限(如图5(a)所示)。再对剩余区块增益值进行比较,其中最大的增益值为p(n1,b6)=0.653×0.5+0.5×0.5=0.577,因此将b2区块被分配到n1节点。类似地将b2区块被分配到n1节点。在剩余区块中,最大增益值为p(n1,b1)=0.449×0.5+0.5×0.5=0.474,b1所以被分配给n1节点,此时n1节点达到了存储上限(如图5(b)所示)。最后将b4被分配给n3节点(如图5(c)所示),此时p(n3,b4)=0.816×0.5+0×0.5=0.408。最终的分配计划是(n1,b1b2b6)(n2,b3b5)(n3,b4)。总增益为3.209。
第三种方法,通过基于skyline层的区块分配算法求解:
根据公式1,最大化增益实际上是最大化和/>这里有两个优化目标和/>公式1通过加权函数将多目标优化转化成单目标优化问题,需要用户输入权值。实际应用中,要找到合适的权值并不是件容易的事情。另一方面,我们假设节点存储任何区块都会消耗相同的成本,而在真实的区块链网络中,由于区块数据量、交易类型等不同导致区块的大小也不同,节点存储区块的所消耗的成本也会有差异。因此,本章假设节点存储不同的区块会有不同的成本。令/>为节点nj存储区块bi的成本。那么优化目标中的/>变为/> 我们采用基于多目标优化的方法进行区块分配。使用Skyline查询来解决多目标优化问题。将分配对映射为二维空间的对象,组织成skyline对象层,按照skyline层选择分配对。低层的对象要优于高层的对象,同一层的对象没有优劣之分。
Skyline查询也称为Pareto最优(帕类托,在不损害他方利益的条件下,自身己达最优)。Skyline计算返回对象集D的一个子集S(D),S(D)中的对象称为skyline对象。skyline点优于D-S(D)中的对象;同时对于任意两个skyline对象,没有优劣之分。对于D中的对象p,我们使用p[k]表示p在维度k上的值。
定义3(Skyline):给定存在于d-维数据空间中的对象集D,对象p∈D支配对象q∈D(记做),若(1)对任意维度k(1≤k≤d),p[k]≥q[k];且(2)至少存在一个维度l(1≤l≤d),p[l]>q[l]。则skyline集SKY(D)包括D中所有不被其它任何对象控制的数据对象。SKY(D)中的点称作skyline对象。
在区块分配中,我们将每个分配对(bi,nj)视为D中的一个对象,简写为pi,j,其数值包含增益的两个分量和/>因此pi,j是一个二维数据:pi,j=(pi,j[1],pi,j[2]),其中/>
定义4(Skyline层):将对象集D划分成skyline层:D={S1,S2,…,Sm},对任意Sl满足:Sl=SKY(D-∑1≤i≤l-1Si)。在skyline层中,Sl层中的对象总是数据集D-∑1≤i≤l-1Si的skyline对象,Sl层中的对象总是优于Sl+1层。
注意到我们将分配对映射到二维空间的对象,可以使用基于排序的算法来计算skyline集。将D中的所有对象按照第1个维度的值从高到低进行排序,按照这个顺序依次考察每个对象。我们使用Sl来存储Skyline对象,令对象p∈Sl,对于任一尚未被考察的对象q,满足p[1]≥q[1]。那么只有当p[2]<q[2],对象q才不会被对象p所支配。因此,我们使用a来max[2]来保存Sl当前所包含的对象在第2个维度上的最大值,当max[2]<q[2]时,对象q不被Sl中任一对象支配,这样q是新的skyline对象。
基于上述概念及思想,设计基于skyline层的区块分配算法。如算法3所示,首先计算所有分配对(bi,nj)的和/>构成对象集D。接着将D中的对象按照第1个维度的值从高到低进行排序。当区块集B中存在未被分配的区块时,则继续执行分配,因此循环条件是/>(行2)。第5-8行用来计算skyline层Sl,从Sl中任意选择分配对pi,j进行分配(行10-11)。由于pi,j表示将区块bi分配给节点nj,不需要再考虑分配区块bi,因此将bi从B′中删除,并且将所有和bi有关的分配对从对象集D和Sl中删除(行13-14)。对于节点nj,如果达到存储个数上限,那么后续分配不再考虑节点nj,因此将所有和nj有关的分配对从对象集D和Sl中删除(行16-17)。/>
算法的时间复杂度分析:计算skyline的时间复杂度为O(|B||N|log(|B||N|)),假设共有k个skyline层,这样计算skyline层的时间复杂度为O(k|B||N|log(|B||N|))。第2行循环最大执行次数为为O(k)。第10-17行的时间复杂度为O(|N|+|B|)。算法3的时间复杂度为O(k|B||N|log(|B||N|))。
为了便于理解,这里提供一组具体实例。使用表5所示数据构建skyline层,考虑6个区块和3个节点,总共构成了18个分配对,表6展示了表5区块及节点集的节点成本和对区块访问频率归一化,图7展示了这些分配对以及构成的4个skyline层。图6展示了基于skyline层的区块分配算法的分配过程。首先计算第1层skyline层S1,因为skyline对象没有优劣之分,随机选择一个对象分配,我们选择a对象,因此得到分配对(n2,b3)。再随机选择m点,得到分配对(n1,b6)。此时S1层已经选择完毕,并且和b3或者b6相关的分配对从D中删除(如图6(a)所示)。再选择S2层的对象,随机选择b对象,得到分配对(n2,b5)。此时b5区块被分配,所以同为S2层的n对象代表分配对(n1,b5)不能再被选择。且n2节点达到存储上限,和n2或者b5相关的分配对从D中删除(如图6(b)所示)。再选择S3层的p对象,确定分配对(n1,b2)。再选择l对象,确定分配对(n3,b4)(如图6(c)所示)。再选择S4层的d对象,确定分配对(n3,b1)(如图6(d)所示)。此时n3节点达到存储上限。此时所有的区块均被分配完成,算法结束。图中黑色的点代表算法执行过程中从点集D中删除的点。最终得到的分配方案为(n1,b2b6)(n2,b3b5)(n3,b1b4)。
表5区块及节点集示例
表6节点成本及对区块访问频率归一化
以下提供实验结果:
实验平台(环境):实验的硬件环境是Inter(R)Core(TM)i5-10400FCPU(2.90GHz),RAM为16GB的PC机,操作系统为Windows10,编程语言为C++。
实验数据:总共有|B|个区块,|B|的取值范围是500-2100。有|N|个节点,|N|的取值范围是50-250。节点的存储上限kj为[α1,α2]区间的随机值。节点对每个区块的访问频率为[0,1]区间的随机值。节点存储区块的单位成本为[5,30]范围内的随机值。具体参数取值如表3所示,加粗数值为默认数值。
对比算法:随机算法(Random algorithm,RAN-Algorithm),基于最低成本的区块分配算法(Block allocation algorithm based on minimum cost,MC-Algorithm),基于最大增益的区块分配算法(Block allocation algorithm based on maximum gain,MG-Algorithm),基于skyline层的区块分配算法(Block allocation algorithm based onSkyline layer,SKY-Algorithm)。其中随机算法随机选择一个块并将其分配给一个节点。每个算法运行20次,计算平均增益和平均运行时间。由于基于skyline层的区块分配算法是多目标优化算法,与前两个算法不同。因此,对于基于skyline层的区块分配算法,我们记录该算法的层数以及每层分配对的数量。
性能指标:在所有区块被分配且每个区块只能被分配一次的情况下分配计划的总增益以及运行时间。
表3
参数 | 取值 |
节点数量|N| | (50,100,150,200,250) |
区块数量|B| | (500,900,1300,1700,2100) |
节点对区块的访问频率范围 | (0,0.4],[0.4,0.7],[0.7,1] |
节点的存储上限 | [15,35],[35,55],[55,75] |
单位成本 | [5,30] |
本发明的一个实施例,提供了一种基于节点集群增益最大化区块分配装置,包括第一计算单元、第二计算单元、第三计算单元以及区块分配单元,其中:第一计算单元用于执行上述方法实施例中的步骤S100,第二计算单元用于执行上述方法实施例中的步骤S200,第三计算单元用于执行上述方法实施例中的步骤S300,区块分配单元用于执行上述方法实施例中的步骤S400。
参照图8,本申请还提供一种计算机设备301,包括:存储器310、处理器320及存储在存储器310上并可在处理器上运行的计算机程序311,处理器320执行计算机程序311时实现:如上述的可扩展的自适应的协作式区块链区块存储方法。
处理器320和存储器310可以通过总线或者其他方式连接。
存储器310作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器310可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器310可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实现上述实施例的基于节点集群的增益最大化的区块分配方法所需的非暂态软件程序以及指令存储在存储器中,当被处理器执行时,执行上述实施例中的可扩展的协作式区块链区块存储方法,例如,执行以上描述的图3中的方法步骤S100至步骤S400。
参照图9,本申请还提供一种计算机可读存储介质401,存储有计算机可执行指令410,计算机可执行指令410用于执行:
如上述的可扩展的协作式区块链区块存储方法。
该计算机可读存储介质401存储有计算机可执行指令410,该计算机可执行指令410被一个处理器或控制器执行,例如,被上述电子设备实施例中的一个处理器执行,可使得上述处理器执行上述实施例中的可扩展的协作式区块链区块存储方法,例如,执行以上描述的图3中的方法步骤S100至步骤S400。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储数据(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的数据并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何数据递送介质。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (7)
1.基于节点集群增益最大化区块分配方法,其特征在于,包括以下步骤:
本发明的第一方面,提供一种基于节点集群增益最大化区块分配方法,包括如下步骤:
计算当前区块链节点集群中每一个节点的存储成本、存储上限、对每个区块的访问频率;
计算当前区块链系统中所有待分配的区块,以保证节点集群能够保存完整的区块链数据副本;
构建优化目标函数和约束条件,所述优化目标函数为:
其中,所述表示每一个所述待分配的区块均被分配完成的情况下最大化总增益,所述fj i表示节点对于区块的访问频率,所述fmax为整个系统中节点对于区块访问频率的最大值,所述/>表示为节点对区块的访问频率进行归一化,所述cj表示节点存储一个区块所消耗的单位成本,所述cmax表示为整个系统中节点存储区块的单位成本的最大值,所述/>表示对单位存储成本的归一化,所述C1C2为优化目标的权值;
所述约束条件为:
其中,所述约束条件(2)表示所有的区块都必须全部分配完成,其中Bj表示被节点存储的区块集合,B表示区块链系统中的区块集合;所述约束条件(3)表示一个区块只能被一个节点存储;所述约束条件(4)表示节点分配的区块个数不能超过存储上限kj;
根据所述优化目标函数和所述约束条件,将所述待分配区块分配至相应的所述节点。
2.根据权利要求1所述的基于节点集群增益最大化区块分配方法,其特征在于,在所述获取当前每一个节点的存储成本、存储上限、对每个区块的访问频率之前,还包括步骤:
按照预设规则将整个区块链网络中的节点组成多个节点集群。
3.根据权利要求2所述的基于节点集群增益最大化区块分配方法,其特征在于,根据所述优化目标函数和所述约束条件,通过静态的启发式方法将所述待分配区块分配至相应的所述节点。
4.根据权利要求3所述的基于节点集群增益最大化区块分配方法,其特征在于,所述静态的启发式方法包括基于成本的区块分配算法、基于增益的区块分配算法以及基于skyline层的区块分配算法中的任意一个。
5.一种基于节点集群增益最大化区块分配方法及装置,其特征在于,包括:
第一计算单元,用于计算当前区块链节点集群中每一个节点的存储成本、存储上限、对每个区块的访问频率;
第二计算单元,用于计算当前区块链系统中所有待分配的区块,以保证节点集群能够保存完整的区块链数据副本;
第三计算单元,用于构建优化目标函数和约束条件,所述优化目标函数为:
其中,所述表示每一个所述待分配的区块均被分配完成的情况下最大化总增益,所述fj i表示节点对于区块的访问频率,所述fmax为整个系统中节点对于区块访问频率的最大值,所述/>表示为节点对区块的访问频率进行归一化,所述cj表示节点存储一个区块所消耗的单位成本,所述cmax表示为整个系统中节点存储区块的单位成本的最大值,所述/>表示对单位存储成本的归一化,所述C1C2为优化目标的权值;
所述约束条件为:
其中,所述约束条件(2)表示所有的区块都必须全部分配完成,其中Bj表示被节点存储的区块集合,B表示区块链系统中的区块集合;所述约束条件(3)表示一个区块只能被一个节点存储;所述约束条件(4)表示节点分配的区块个数不能超过存储上限kj;
区块分配单元,用于根据所述优化目标函数和所述约束条件,将所述待分配区块分配至相应的所述节点。
6.一种电子设备,其特征在于:包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行权利要求1至5任一项所述的基于节点集群增益最大化区块分配方法。
7.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1至5任一项所述的基于节点集群增益最大化区块分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210016189.8A CN116450658A (zh) | 2022-01-07 | 2022-01-07 | 基于节点集群增益最大化区块存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210016189.8A CN116450658A (zh) | 2022-01-07 | 2022-01-07 | 基于节点集群增益最大化区块存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116450658A true CN116450658A (zh) | 2023-07-18 |
Family
ID=87122466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210016189.8A Pending CN116450658A (zh) | 2022-01-07 | 2022-01-07 | 基于节点集群增益最大化区块存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116450658A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117424912A (zh) * | 2023-12-14 | 2024-01-19 | 湖北省楚天云有限公司 | 基于区块链的物联网节点集群数据存储方法、系统及介质 |
-
2022
- 2022-01-07 CN CN202210016189.8A patent/CN116450658A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117424912A (zh) * | 2023-12-14 | 2024-01-19 | 湖北省楚天云有限公司 | 基于区块链的物联网节点集群数据存储方法、系统及介质 |
CN117424912B (zh) * | 2023-12-14 | 2024-04-05 | 湖北省楚天云有限公司 | 基于区块链的物联网节点集群数据存储方法、系统及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xu et al. | Asynchronous federated learning on heterogeneous devices: A survey | |
KR102499076B1 (ko) | 그래프 데이터 기반의 태스크 스케줄링 방법, 디바이스, 저장 매체 및 장치 | |
CN112398899B (zh) | 一种面向边缘云系统的软件微服务组合优化方法 | |
CN103345514A (zh) | 大数据环境下的流式数据处理方法 | |
Leconte et al. | Bipartite graph structures for efficient balancing of heterogeneous loads | |
CN113141317A (zh) | 流媒体服务器负载均衡方法、系统、计算机设备、终端 | |
CN105357247B (zh) | 基于分层云对等网络的多维属性云资源区间查找方法 | |
CN113485826A (zh) | 一种边缘服务器负载均衡方法、系统 | |
CN111258980A (zh) | 一种云存储系统中基于组合预测的动态文件放置方法 | |
CN116450658A (zh) | 基于节点集群增益最大化区块存储方法及装置 | |
Hieu et al. | Deep reinforcement learning for resource management in blockchain-enabled federated learning network | |
Wang et al. | Joint service caching, resource allocation and computation offloading in three-tier cooperative mobile edge computing system | |
CN109032499B (zh) | 一种分布式数据存储的数据存取方法、信息数据处理终端 | |
CN116737370A (zh) | 一种多资源调度方法、系统、存储介质及终端 | |
CN115248811B (zh) | 一种可扩展的协作式区块链区块存储方法以及装置 | |
WO2022160752A1 (zh) | 一种运筹优化方法、装置和计算设备 | |
CN112632615B (zh) | 基于混合云环境的科学工作流数据布局方法 | |
JPWO2013005684A1 (ja) | オブジェクト配置装置、オブジェクト配置方法及びプログラム | |
CN113709817A (zh) | 多基站多服务器场景下的任务卸载和资源调度方法及装置 | |
KR102054068B1 (ko) | 그래프 스트림에 대한 실시간 분산 저장을 위한 분할 방법 및 분할 장치 | |
Mo et al. | Graph convolutional network augmented deep reinforcement learning for dependent task offloading in mobile edge computing | |
CN115987998B (zh) | 微服务系统领袖者选举方法、系统、存储介质和电子设备 | |
CN116896436B (zh) | 基于改进差分进化算法的灵活以太网时隙分配方法及装置 | |
CN117407174A (zh) | 基于人工蜂群算法的预测性维护任务卸载与资源分配方法 | |
CN114500551B (zh) | 边缘计算传输负载均衡方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |