CN113347238A - 基于区块链的消息分区方法及***、设备、存储介质 - Google Patents

基于区块链的消息分区方法及***、设备、存储介质 Download PDF

Info

Publication number
CN113347238A
CN113347238A CN202110579854.XA CN202110579854A CN113347238A CN 113347238 A CN113347238 A CN 113347238A CN 202110579854 A CN202110579854 A CN 202110579854A CN 113347238 A CN113347238 A CN 113347238A
Authority
CN
China
Prior art keywords
partition
message
resource consumption
matching degree
block chain
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
Application number
CN202110579854.XA
Other languages
English (en)
Inventor
王鑫
马超群
米先华
周中定
李信儒
兰秋军
万丽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan University
Original Assignee
Hunan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hunan University filed Critical Hunan University
Priority to CN202110579854.XA priority Critical patent/CN113347238A/zh
Publication of CN113347238A publication Critical patent/CN113347238A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于区块链的消息分区方法及***、设备、存储介质,该方法在区块链产生交易消息进入对应的分区后,先计算该分区的资源消耗量,若超过第一阈值,意味着该分区已满,后续不能再进入新消息,则通过计算该分区所在的Topic中的其它分区与该分区的匹配度,并在匹配度值最大的分区的当前资源消耗量不超过第一阈值时,将后续准备进入该分区的新消息分配至匹配度值最大的分区,一方面,超出分区资源承载能力的部分消息无需长时间等待该分区腾出资源,省去了等待时间,另一方面,将消息分配至匹配度值最大的分区进行共识处理,确保了共识的可靠性,整体强化了Kafka集群处理高并发数据的能力,提升了区块链整体的共识效率。

Description

基于区块链的消息分区方法及***、设备、存储介质
技术领域
本发明涉及区块链技术领域,特别地,涉及一种基于区块链的消息分区方法及***、设备、计算机可读取的存储介质。
背景技术
区块链技术作为一种分布式账本技术,是由多方共同维护,综合使用分布式账本、链式数据结构、点对点传输、共识机制、密码学原理等融合的一项技术,具有去中心化、开放透明、数据不可篡改、可追溯、隐私保护及高度自治等重要特性,在众多领域中具有广泛的应用。在区块链网络中,不同的参与者发起的交易必须按照产生的顺序被依次写入到账本中。如何在分布式场景下所有节点对同一个交易提案达成一致性,是区块链技术必须考虑且解决的重要问题。要实现这一目标,交易顺序必须被正确的建立,并且必须包含对交易被篡改或者恶意提交交易的处理方法,而共识算法就是保证分布式***一致性实现的解决方式,共识算法是计算机科学中用于在分布式过程或***之间实现对单个数据值的一致性的过程,旨在解决分布式网络中多个不可靠节点的可靠性问题。
现有的区块链网络采用Kafka的消息消费-订阅模式实现数据的共识过程,相关角色包括:Producer(生产者)、Kafka集群、Topic(主题)、Partition(分区)、Broker(数据存储服务器)、Zookeeper集群、Consumer(消费者)。Producer为消息生产者,在区块链网络中由某些节点充当该角色(这类节点由Zookeeper集群进行指定,主要负责消息的获取和发送,以及打包区块),采用push方式将接收到的消息(即交易数据)发送给Kafka集群。其中,Kafka集群由一组服务器构成,功能上分为Topic(主题)、Partition(分区)和Broker(数据存储服务器)。Topic是消息主题,一个Kafka集群同时支持多个Topic,消息进入集群后进入相应的Topic中。Partition是Topic下的分区,一个Topic可以同时支持多个Partition分区,消息进入Topic后会被分配到Partition分区中。Topic下的Partition数量由Zookeeper集群进行管理。Broker为数据存储服务器,是一种用于实现数据存储的主机服务器,每个Topic都有一个Broker,存储当前各个Partition的消息数据。Zookeeper集群由一组服务器构成,用于对Kafka集群进行管理,可以指定和注册Producer和Consumer节点、配置Kafka集群的Topic和Partition,以及在***资源出现压力时进行负载均衡。Consumer为消息消费者,在区块链网络中由某些节点充当该角色,采用pull方式将消息从Broker服务器获取到本地,并打包成区块,将区块分发给区块链网络中的其它节点进行验证。消息是Kafka中最基本的数据单元,在Kafka中,一条消息由key和value两部分构成,在发送一条消息时,可以指定这个key,Producer会根据key来判断当前消息应该发送并存储到哪个Partition中。消息选择Partition分区的策略主要有哈希策略与轮询策略两种,当没有为消息指定key,即key为null时,消息会以轮询的方式发送到各个分区,当key不为null时,Producer节点会使用key的哈希值(采用Murmur2Hash算法)对Partition数量取模,以此来决定把消息发送到哪个Partition上。
但是,在区块链网络中,Kafka集群在提供共识服务的过程中,涉及到消息的分发、存储、消费和订阅等操作,尤其在高并发场景下,短时间内大量消息可能会造成Kafka集群中的Partition分区过度服务,比如在某些大型商业应用场景下,短时间内会出现某个Topic主题下涌入大量新消息,这些消息在向Partition分区进行分发时,分区不仅需要处理消息的排序、存储,还要处理Consumer节点的订阅请求,当消息数量超过分区某个第一阈值时,就会出现Partition分区无法继续服务的问题,导致超出第一阈值部分的那些消息无法及时得到处理,从而影响到整个集群的共识效率。
现有技术中针对上述情况的解决方法通常是:1)消息等待分区有剩余资源后再进入分区;2)人工修改Partition分区的配置文件,增加分区数。但是,仍然存在下述问题:
1.当分区出现消息过多,无法继续服务的问题时,消息无法及时进入该分区得到排序处理,只有等待分区资源空出来后再进入,效率较低;
2.分区数量的增加目前主要依靠人工经验判断,容易出现判断错误的情况,这种错误会造成分区新增数量过多,资源浪费;或者分区新增数量不够,还是会出现新消息无法及时进入分区得到排序处理的情况;
3.人工配置分区存在时间滞后,效率较低。
发明内容
本发明提供了一种基于区块链的消息分区方法及***、设备、计算机可读取的存储介质,以解决目前的区块链采用Kafka集群进行共识处理时在高并发场景下存在的消息处理效率低的技术问题。
根据本发明的一个方面,提供一种基于区块链的消息分区方法,包括以下内容:
步骤S1:在区块链网络中部署Kafka共识集群,初始化Partition文件,配置分区设置参数;
步骤S2:区块链***产生交易信息后,消息经Producer节点进入其中分区A,计算分区A的资源消耗量,若计算得到的分区A的资源消耗量超过第一阈值,下一个新消息不再进入分区A,否则下一个新消息仍然可进入分区A;
步骤S3:当分区A的资源消耗量超过第一阈值时,计算同一Topic下的其他所有分区与分区A的匹配度,形成匹配度序列,从中选择匹配度值最大的分区并计算其当前资源消耗量,若所述匹配度值最大的分区的当前资源消耗量不超过第一阈值,则在下一个新消息准备进入分区A时将其分配至所述匹配度值最大的分区。
进一步地,所述步骤S3还包括以下内容:
若所述匹配度值最大的分区的当前资源消耗量超过第一阈值,则按照匹配度值从大到小的顺序逐一计算每个分区当前的资源消耗量,直至找到当前资源消耗量不超过第一阈值的分区,并将下一个准备进入分区A的新消息分配至该分区。
进一步地,还包括以下内容:
步骤S4:若在所述匹配度序列中无法找到当前资源消耗量不超过第一阈值的分区,则自动修改Partition配置文件以在该Topic下新增一个新的分区,并将后续的新消息分配至新分区中。
进一步地,采用以下公式来计算每个分区的资源消耗量:
Figure BDA0003085744860000041
其中,CPCt表示t时刻分区的资源消耗量,Rest(x)表示t时刻分区中消息x的资源消耗数;
Rest(x)=α1ResNumt(x,M1)+α2ResCont(x,M2)+α3ResDatt(x,M3)
其中,α1,α2,α3∈(0,1)为加权系数,ResNumt(x,M1)表示t时刻消息x的订阅总数,ResCont(x,M2)表示t时刻消息x的访问连接总数,ResDatt(x,M3)表示t时刻消息x的数据大小,消息数据大小包括消息的value值对应的字符位数和key值对应的字符位数。
进一步地,采用以下公式计算匹配度:
Figure BDA0003085744860000042
其中,
Figure BDA0003085744860000043
表示分区B与分区A的消息序列的相似匹配度,Megi表示消息i在序列中的id编号,sequenceAi表示分区A的消息序列sequenceA的第i个消息,sequenceBj表示分区B的消息序列sequenceB的第j个消息,βi,j∈(0,1)为加权系数,p为指数参数,p≥1。
进一步地,还包括以下内容:
步骤S5:监测每个分区的资源消耗量,当至少一个分区的资源消耗量小于第二阈值时,在新分区完成共识处理后删除新分区。
另外,本发明的另一实施例还提供一种基于区块链的消息分区***,包括:
配置模块,用于在区块链网络中部署Kafka共识集群,初始化Partition文件,配置分区设置参数;
第一计算模块,用于在消息进入分区A时计算分区A的资源消耗量;
第二计算模块,用于在所述第一计算模块计算得到的分区A的资源消耗量超过第一阈值时计算同一Topic下的其他所有分区与分区A的匹配度,形成匹配度序列;
分配模块,用于从所述匹配度序列中选择匹配度值最大的分区并计算其当前资源消耗量,若所述匹配度值最大的分区的当前资源消耗量不超过第一阈值,则在下一个新消息准备进入分区A时将其分配至所述匹配度值最大的分区。
进一步地,还包括:
更新模块,用于在所述匹配度序列中无法找到当前资源消耗量不超过第一阈值的分区时,自动修改Partition配置文件以在该Topic下新增一个新的分区,并将后续的新消息分配至新分区中。
另外,本发明的另一实施例还提供一种设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行如上所述的方法的步骤。
另外,本发明的另一实施例还提供一种计算机可读取的存储介质,用于存储基于区块链进行消息分区的计算机程序,该计算机程序在计算机上运行时执行如上所述的方法的步骤。
本发明具有以下效果:
本发明的基于区块链的消息分区方法,在区块链产生交易消息进入对应的分区后,先计算该分区的资源消耗量,若超过第一阈值,意味着该分区已满,后续不能再进入新消息,则通过计算该分区所在的Topic中的其它分区与该分区的匹配度,并在匹配度值最大的分区的当前资源消耗量不超过第一阈值时,将后续准备进入该分区的新消息分配至匹配度值最大的分区,一方面,超出分区资源承载能力的部分消息无需长时间等待该分区腾出资源,省去了等待时间,另一方面,将消息分配至匹配度值最大的分区进行共识处理,确保了共识的可靠性,整体强化了Kafka集群处理高并发数据的能力,提升了区块链整体的共识效率。
另外,本发明的基于区块链的消息分区***同样具有上述优点。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是现有采用Kafka集群进行共识处理的区块链网络的架构示意图。
图2是本发明优选实施例的基于区块链的消息分区方法的流程示意图。
图3是本发明的基于区块链的消息分区方法的另一实施方式的流程示意图。
图4是本发明的基于区块链的消息分区方法的又一实施方式的流程示意图。
图5是本发明另一实施例的基于区块链的消息分区***的模块结构示意图。
具体实施方式
以下结合附图对本发明的实施例进行详细说明,但是本发明可以由下述所限定和覆盖的多种不同方式实施。
如图1所示,目前采用Kafka集群进行共识处理的区块链网络中,具体的共识过程包括以下内容:
客户端向区块链共识模块中的Producer节点发送交易信息(即消息);
Producer节点根据消息的key值,按照哈希取模或轮询方式将消息推送到Kafka集群中Topic下的某个Partition分区;
消息在分区中进行排序,形成有序的消息队列;
Consumer节点从订阅的Topic下的Partition分区中获取消息队列,并打包成区块;
Consumer节点将区块分发给区块链网络中的其他节点进行验证。
通过以上共识过程,区块链网络能够使用Kafka集群快速进行数据共识。但在此共识过程中,如果消息瞬时数量过多(比如高并发状态),很可能出现Partition分区不够的情况,此时多余的消息只能等待分区资源空出来之后,才能进入分区进行排序。因此,如图2所示,本发明的优选实施例提供一种基于区块链的消息分区方法,包括以下内容:
步骤S1:在区块链网络中部署Kafka共识集群,初始化Partition文件,配置分区设置参数;
步骤S2:区块链***产生交易信息后,消息经Producer节点进入其中分区A,计算分区A的资源消耗量,若计算得到的分区A的资源消耗量超过第一阈值,下一个新消息不再进入分区A,否则下一个新消息仍然可进入分区A;
步骤S3:当分区A的资源消耗量超过第一阈值时,计算同一Topic下的其他所有分区与分区A的匹配度,形成匹配度序列,从中选择匹配度值最大的分区并计算其当前资源消耗量,若所述匹配度值最大的分区的当前资源消耗量不超过第一阈值,则在下一个新消息准备进入分区A时将其分配至所述匹配度值最大的分区。
可以理解,在所述步骤S1中,配置的分区设置参数包括分区的数量、每个分区资源消耗量的第一阈值等,另外,Kafka共识集群中包含的Topic数量和每个Topic的共识算法均在初始化阶段进行配置。在分区文件配置好后,每个Topic下都默认生成预设数量的分区。
可以理解,在所述步骤S2中,消息按照哈希策略或者轮询策略分配至分区A后,若计算得到的分区A的当前资源消耗量超过第一阈值,意味着分区A已满,后续无法再进入新消息,后续分配至分区A的消息需要进行转移处理。若计算得到分区A的当前资源消耗量不超过第一阈值,意味着分区A尚有剩余的资源处理能力,后续仍然可以分配消息进入而不会出现过载的风险。
可以理解,在所述步骤S3中,当分区A的资源消耗量超过第一阈值时,意味着分区A已满。此时,通过计算同一个Topic下的其它分区与分区A的匹配度,筛选出匹配度值最大的分区,意味着其与分区A在消息属性上最匹配,然后将下一个准备进入分区A的新消息分配至匹配度值最大的分区。一方面,省去了新消息的等待时间,提高了消息处理效率,另一方面,由于匹配度值最大的分区在消息属性上与分区A最接近,确保了共识处理的可靠性。
可以理解,本实施例的基于区块链的消息分区方法,在区块链产生交易消息进入对应的分区后,先计算该分区的资源消耗量,若超过第一阈值,意味着该分区已满,后续不能再进入新消息,则通过计算该分区所在的Topic中的其它分区与该分区的匹配度,并在匹配度值最大的分区的当前资源消耗量不超过第一阈值时,将后续准备进入该分区的新消息分配至匹配度值最大的分区,一方面,超出分区资源承载能力的部分消息无需长时间等待该分区腾出资源,省去了等待时间,另一方面,将消息分配至匹配度值最大的分区进行共识处理,确保了共识的可靠性,整体强化了Kafka集群处理高并发数据的能力,提升了区块链整体的共识效率。
可以理解,所述步骤S3还包括以下内容:
若所述匹配度值最大的分区的当前资源消耗量超过第一阈值,则按照匹配度值从大到小的顺序逐一计算每个分区当前的资源消耗量,直至找到当前资源消耗量不超过第一阈值的分区,并将下一个准备进入分区A的新消息分配至该分区。
当匹配度值最大的分区的当前资源消耗量超过第一阈值时,意味着其也处于满载状态,无法再对新消息进行共识处理,此时,按照匹配度值从大到小的顺序进行迭代筛选,直至找到一个当前资源消耗量不超过第一阈值的分区,并将下一个分配至分区A的新消息转移至该分区进行共识处理。
可以理解,如图3所示,所述基于区块链的消息分区方法还包括以下内容:
步骤S4:若在所述匹配度序列中无法找到当前资源消耗量不超过第一阈值的分区,则自动修改Partition配置文件以在该Topic下新增一个新的分区,并将后续的新消息分配至新分区中。
若在分区A所在的Topic下无法找到当前资源消耗量不超过第一阈值的分区,意味着目前Topic下的所有分区均已满,不具备处理新消息的能力,此时,通过修改分区配置文件在该Topic下新增一个新的分区,然后将后续的新消息分配至新分区中,新分区则按照预设的共识算法进行共识排序。从而可以根据整个Topic的消息处理能力来自动增加分区的数量,以保证消息的处理效率。
可以理解,本发明中采用了资源消耗量和分区匹配度这两个数据指标来进行消息的分区选择。其中,分区的资源消耗量用来描述当前时刻某个分区因处理消息而消耗的资源,分区匹配度用来描述同一时刻同一Topic下不同分区之间的相似匹配程度。具体地,采用以下公式来计算每个分区的资源消耗量:
Figure BDA0003085744860000091
其中,CPCt表示t时刻分区的资源消耗量,Rest(x)表示t时刻分区中消息x的资源消耗数,则分区当前的资源消耗量等于当前分区中所有消息的资源消耗数之和。
Rest(x)=α1ResNumt(x,M1)+α2ResCont(x,M2)+α3ResDatt(x,M3)
其中,α1,α2,α3∈(0,1)为加权系数,ResNumt(x,M1)表示t时刻消息x的订阅总数,ResCont(x,M2)表示t时刻消息x的访问连接总数,ResDatt(x,M3)表示t时刻消息x的数据大小,消息数据大小包括消息的value值对应的字符位数和key值对应的字符位数。本发明基于消息的订阅总数、连接总数和数据大小三个维度来综合评估分区的资源消耗量,提高了计算的精准度。
另外,具体采用以下公式计算匹配度:
Figure BDA0003085744860000101
假设对于任意Partition分区,在时刻t拥有的消息序列表示为Partitiont={Meg1,Meg2,...,Megn},其中n为该序列在时刻t的消息总数,Megi表示消息i在序列中的id编号,消息***序列时会生成一个id号。其中,PMD
Figure BDA0003085744860000103
表示分区B与分区A的消息序列的相似匹配度,Megi表示消息i在序列中的id编号,sequenceAi表示分区A的消息序列sequenceA的第i个消息,sequenceBj表示分区B的消息序列sequenceB的第j个消息,βi,j∈(0,1)为加权系数,p为指数参数,p≥1。本发明通过采用闵可夫斯基距离来计算两个分区消息序列的相似匹配度,并结合了加权计算,可以准确地计算出两个分区的匹配度。
另外,当p=2时,计算得到的结果为曼哈顿距离,即公式可表示为:
Figure BDA0003085744860000102
可以理解,如图4所示,所述基于区块链的消息分区方法还包括以下内容:
步骤S5:监测每个分区的资源消耗量,当至少一个分区的资源消耗量小于第二阈值时,在新分区完成共识处理后删除新分区。
对每个分区的资源消耗量进行实时监测或定时监测,若有至少一个分区的资源消耗量小于第二阈值,意味着有至少一个分区具有充足的资源承载能力,此时,在新分区完成共识任务之后删除该新分区,避免在高并发业务场景结束后造成资源的浪费。其中,所述第二阈值小于第一阈值,第二阈值的具体数值也在步骤S1中初始化时进行配置。
另外,如图5所示,本发明的另一实施例还提供一种基于区块链的消息分区***,优选采用如上所述的消息分区方法,该***包括:
配置模块,用于在区块链网络中部署Kafka共识集群,初始化Partition文件,配置分区设置参数;
第一计算模块,用于在消息进入分区A时计算分区A的资源消耗量;
第二计算模块,用于在所述第一计算模块计算得到的分区A的资源消耗量超过第一阈值时计算同一Topic下的其他所有分区与分区A的匹配度,形成匹配度序列;
分配模块,用于从所述匹配度序列中选择匹配度值最大的分区并计算其当前资源消耗量,若所述匹配度值最大的分区的当前资源消耗量不超过第一阈值,则在下一个新消息准备进入分区A时将其分配至所述匹配度值最大的分区。
可以理解,本实施例的基于区块链的消息分区***,在区块链产生交易消息进入对应的分区后,先计算该分区的资源消耗量,若超过第一阈值,意味着该分区已满,后续不能再进入新消息,则通过计算该分区所在的Topic中的其它分区与该分区的匹配度,并在匹配度值最大的分区的当前资源消耗量不超过第一阈值时,将后续准备进入该分区的新消息分配至匹配度值最大的分区,一方面,超出分区资源承载能力的部分消息无需长时间等待该分区腾出资源,省去了等待时间,另一方面,将消息分配至匹配度值最大的分区进行共识处理,确保了共识的可靠性,整体强化了Kafka集群处理高并发数据的能力,提升了区块链整体的共识效率。
另外,所述消息分区***还包括:
更新模块,用于在所述匹配度序列中无法找到当前资源消耗量不超过第一阈值的分区时,自动修改Partition配置文件以在该Topic下新增一个新的分区,并将后续的新消息分配至新分区中。
另外,所述消息分区***还包括:
监测模块,用于监测每个分区的资源消耗量,当至少一个分区的资源消耗量小于第二阈值时,在新分区完成共识处理后删除新分区。
可以理解,本实施例的***中的各个模块与上述方法实施例中的各个步骤相对应,故各个模块的具体工作过程在此不再赘述。
另外,本发明的另一实施例还提供一种设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行如上所述的方法的步骤。
另外,本发明的另一实施例还提供一种计算机可读取的存储介质,用于存储基于区块链进行消息分区的计算机程序,该计算机程序在计算机上运行时执行如上所述的方法的步骤。
一般计算机可读取介质的形式包括:软盘(floppy disk)、可挠性盘片(flexibledisk)、硬盘、磁带、任何其与的磁性介质、CD-ROM、任何其余的光学介质、打孔卡片(punchcards)、纸带(paper tape)、任何其余的带有洞的图案的物理介质、随机存取存储器(RAM)、可编程只读存储器(PROM)、可抹除可编程只读存储器(EPROM)、快闪可抹除可编程只读存储器(FLASH-EPROM)、其余任何存储器芯片或卡匣、或任何其余可让计算机读取的介质。指令可进一步被一传输介质所传送或接收。传输介质这一术语可包含任何有形或无形的介质,其可用来存储、编码或承载用来给机器执行的指令,并且包含数字或模拟通信信号或其与促进上述指令的通信的无形介质。传输介质包含同轴电缆、铜线以及光纤,其包含了用来传输一计算机数据信号的总线的导线。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于区块链的消息分区方法,其特征在于,包括以下内容:
步骤S1:在区块链网络中部署Kafka共识集群,初始化Partition文件,配置分区设置参数;
步骤S2:区块链***产生交易信息后,消息经Producer节点进入其中分区A,计算分区A的资源消耗量,若计算得到的分区A的资源消耗量超过第一阈值,下一个新消息不再进入分区A,否则下一个新消息仍然可进入分区A;
步骤S3:当分区A的资源消耗量超过第一阈值时,计算同一Topic下的其他所有分区与分区A的匹配度,形成匹配度序列,从中选择匹配度值最大的分区并计算其当前资源消耗量,若所述匹配度值最大的分区的当前资源消耗量不超过第一阈值,则在下一个新消息准备进入分区A时将其分配至所述匹配度值最大的分区。
2.如权利要求1所述的基于区块链的消息分区方法,其特征在于,所述步骤S3还包括以下内容:
若所述匹配度值最大的分区的当前资源消耗量超过第一阈值,则按照匹配度值从大到小的顺序逐一计算每个分区当前的资源消耗量,直至找到当前资源消耗量不超过第一阈值的分区,并将下一个准备进入分区A的新消息分配至该分区。
3.如权利要求2所述的基于区块链的消息分区方法,其特征在于,还包括以下内容:
步骤S4:若在所述匹配度序列中无法找到当前资源消耗量不超过第一阈值的分区,则自动修改Partition配置文件以在该Topic下新增一个新的分区,并将后续的新消息分配至新分区中。
4.如权利要求1所述的基于区块链的消息分区方法,其特征在于,采用以下公式来计算每个分区的资源消耗量:
Figure FDA0003085744850000011
其中,CPCt表示t时刻分区的资源消耗量,Rest(x)表示t时刻分区中消息x的资源消耗数;
Rest(x)=α1ResNumt(x,M1)+α2ResCont(x,M2)+α3ResDatt(x,M3)
其中,α1,α2,α3∈(0,1)为加权系数,ResNumt(x,M1)表示t时刻消息x的订阅总数,ResCont(x,M2)表示t时刻消息x的访问连接总数,ResDatt(x,M3)表示t时刻消息x的数据大小,消息数据大小包括消息的value值对应的字符位数和key值对应的字符位数。
5.如权利要求1所述的基于区块链的消息分区方法,其特征在于,采用以下公式计算匹配度:
Figure FDA0003085744850000021
其中,
Figure FDA0003085744850000022
表示分区B与分区A的消息序列的相似匹配度,Megi表示消息i在序列中的id编号,sequenceAi表示分区A的消息序列sequenceA的第i个消息,sequenceBj表示分区B的消息序列sequenceB的第j个消息,βi,j∈(0,1)为加权系数,p为指数参数,p≥1。
6.如权利要求3所述的基于区块链的消息分区方法,其特征在于,还包括以下内容:
步骤S5:监测每个分区的资源消耗量,当至少一个分区的资源消耗量小于第二阈值时,在新分区完成共识处理后删除新分区。
7.一种基于区块链的消息分区***,其特征在于,包括:
配置模块,用于在区块链网络中部署Kafka共识集群,初始化Partition文件,配置分区设置参数;
第一计算模块,用于在消息进入分区A时计算分区A的资源消耗量;
第二计算模块,用于在所述第一计算模块计算得到的分区A的资源消耗量超过第一阈值时计算同一Topic下的其他所有分区与分区A的匹配度,形成匹配度序列;
分配模块,用于从所述匹配度序列中选择匹配度值最大的分区并计算其当前资源消耗量,若所述匹配度值最大的分区的当前资源消耗量不超过第一阈值,则在下一个新消息准备进入分区A时将其分配至所述匹配度值最大的分区。
8.如权利要求7所述的基于区块链的消息分区***,其特征在于,还包括:
更新模块,用于在所述匹配度序列中无法找到当前资源消耗量不超过第一阈值的分区时,自动修改Partition配置文件以在该Topic下新增一个新的分区,并将后续的新消息分配至新分区中。
9.一种设备,其特征在于,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行如权利要求1~6任一项所述的方法的步骤。
10.一种计算机可读取的存储介质,用于存储基于区块链进行消息分区的计算机程序,其特征在于,该计算机程序在计算机上运行时执行如权利要求1~6任一项所述的方法的步骤。
CN202110579854.XA 2021-05-26 2021-05-26 基于区块链的消息分区方法及***、设备、存储介质 Pending CN113347238A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110579854.XA CN113347238A (zh) 2021-05-26 2021-05-26 基于区块链的消息分区方法及***、设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110579854.XA CN113347238A (zh) 2021-05-26 2021-05-26 基于区块链的消息分区方法及***、设备、存储介质

Publications (1)

Publication Number Publication Date
CN113347238A true CN113347238A (zh) 2021-09-03

Family

ID=77472188

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110579854.XA Pending CN113347238A (zh) 2021-05-26 2021-05-26 基于区块链的消息分区方法及***、设备、存储介质

Country Status (1)

Country Link
CN (1) CN113347238A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116048819A (zh) * 2023-03-30 2023-05-02 杭州西软计算机工程有限公司 一种高并发数据存储方法和***
WO2024037629A1 (zh) * 2022-08-19 2024-02-22 顺丰科技有限公司 区块链的数据整合方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109873904A (zh) * 2019-03-05 2019-06-11 平安科技(深圳)有限公司 消息推送的用户消息状态上报处理方法、装置及存储介质
CN111818112A (zh) * 2019-04-11 2020-10-23 ***通信集团四川有限公司 一种基于Kafka***的发送消息的方法和装置
CN112328404A (zh) * 2020-11-26 2021-02-05 北京百度网讯科技有限公司 负载均衡方法及装置、电子设备、计算机可读介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109873904A (zh) * 2019-03-05 2019-06-11 平安科技(深圳)有限公司 消息推送的用户消息状态上报处理方法、装置及存储介质
CN111818112A (zh) * 2019-04-11 2020-10-23 ***通信集团四川有限公司 一种基于Kafka***的发送消息的方法和装置
CN112328404A (zh) * 2020-11-26 2021-02-05 北京百度网讯科技有限公司 负载均衡方法及装置、电子设备、计算机可读介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
颜晓莲等: "Kafka中改进型 Partition过载优化算法", 《计算机技术与发展(第30卷第12期)》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024037629A1 (zh) * 2022-08-19 2024-02-22 顺丰科技有限公司 区块链的数据整合方法、装置、计算机设备及存储介质
CN116048819A (zh) * 2023-03-30 2023-05-02 杭州西软计算机工程有限公司 一种高并发数据存储方法和***
CN116048819B (zh) * 2023-03-30 2024-05-31 鸿盈科技实业(深圳)有限公司 一种高并发数据存储方法和***

Similar Documents

Publication Publication Date Title
CN108776934B (zh) 分布式数据计算方法、装置、计算机设备及可读存储介质
US9888048B1 (en) Supporting millions of parallel light weight data streams in a distributed system
US9703610B2 (en) Extensible centralized dynamic resource distribution in a clustered data grid
CN110096336B (zh) 数据监控方法、装置、设备和介质
US8671134B2 (en) Method and system for data distribution in high performance computing cluster
CN109729106B (zh) 处理计算任务的方法、***和计算机程序产品
JP6336988B2 (ja) 使用要求の小バッチ処理のためのシステムおよび方法
CN107453929B (zh) 集群***自构建方法、装置及集群***
US20100138540A1 (en) Method of managing organization of a computer system, computer system, and program for managing organization
US20160277152A1 (en) Method and system for robust message retransmission
CN108200112B (zh) 分布式存储方法及***
CN113347238A (zh) 基于区块链的消息分区方法及***、设备、存储介质
CN113364877B (zh) 数据处理方法、装置、电子设备和介质
CN114861911A (zh) 深度学习模型的训练方法、装置、***、设备和介质
CN113574515B (zh) 用于分布式***中的异步存储管理的***和方法
CN112887407B (zh) 用于分布式集群的作业流量控制方法和装置
CN111951112A (zh) 基于区块链的智能合约执行方法、终端设备和存储介质
CN116089477B (zh) 分布式训练方法及***
CN113760522A (zh) 一种任务处理方法和装置
CN109992575B (zh) 大数据的分布式存储***
CN204425400U (zh) 应用服务器***
CN112884382B (zh) 云平台的资源配额管理方法、装置、设备以及存储介质
CN114363988A (zh) 分簇方法、装置和电子设备
CN113641688A (zh) 节点更新方法、相关装置及计算机程序产品
CN115878309A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20210903

RJ01 Rejection of invention patent application after publication