CN110633151B - 分布式发布消息集群分区平衡的方法、装置及存储介质 - Google Patents

分布式发布消息集群分区平衡的方法、装置及存储介质 Download PDF

Info

Publication number
CN110633151B
CN110633151B CN201910891690.7A CN201910891690A CN110633151B CN 110633151 B CN110633151 B CN 110633151B CN 201910891690 A CN201910891690 A CN 201910891690A CN 110633151 B CN110633151 B CN 110633151B
Authority
CN
China
Prior art keywords
load
nodes
message
cluster
partition
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.)
Active
Application number
CN201910891690.7A
Other languages
English (en)
Other versions
CN110633151A (zh
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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software Co Ltd
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 Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201910891690.7A priority Critical patent/CN110633151B/zh
Publication of CN110633151A publication Critical patent/CN110633151A/zh
Application granted granted Critical
Publication of CN110633151B publication Critical patent/CN110633151B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开是关于一种分布式发布消息集群分区平衡的方法、装置及存储介质,分布式发布消息集群分区平衡方法包括:获取当前集群中所有节点在预设时间段内的负载;按照负载从大到小的顺序,选择第一数量的高负载节点,按照负载从小到大的顺序选择第二数量的低负载节点;若所述高负载节点的总负载与集群中所有节点平均负载之间的比值大于或等于预设比率阈值,则将所述高负载节点中流量最高的消息分区迁移至所述低负载节点。通过本公开可实现集群节点的分区平衡。

Description

分布式发布消息集群分区平衡的方法、装置及存储介质
技术领域
本公开涉及数据存储与消息中间件领域,尤其涉及分布式发布消息集群分区平衡的方法、装置及存储介质。
背景技术
相关技术中,Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。每一个Kafka集群中包含一个或多个服务器,这种服务器被称为broker,也称为节点。消息生产者(producer)可在Kafka集群中用producer身份申请发布相关消息主题(Topic),消息消费者(consumer)可在Kafka集群中用consumer身份申请订阅相关的Topic。其中,Topic都存放在broker的一个或多个分区中,该分区也称为Partition。
发明内容
本公开提供一种分布式发布消息集群分区平衡的方法、装置及存储介质。
根据本公开实施例的第一方面,提供一种分布式发布消息集群分区平衡的方法,包括获取当前集群中所有节点在预设时间段内的负载;按照负载从大到小的顺序,选择第一数量的高负载节点,并按照负载从小到大的顺序选择第二数量的低负载节点;若高负载节点的总负载与集群中所有节点平均负载之间的比值大于或等于预设比率阈值,则将高负载节点中流量最高的消息分区迁移至低负载节点。
在一示例中,分布式发布消息集群分区平衡的方法还包括:获取消费端访问分区内消息的消费延迟值;若连续N次获取的消费延迟值均大于预设消费延迟阈值,则扩容消费端访问消息对应的分区,N为预设的正整数。
在一示例中,分布式发布消息集群分区平衡的方法还包括:预先确定集群、节点、消息和分区之间的映射关系;根据集群和节点之间的映射关系,获取当前集群中所有节点在预设时间段内的负载;根据节点和消息之间的映射关系,确定高负载节点中流量最高的消息;根据消息和分区之间的映射关系,确定流量最高的消息对应的分区;将确定的分区迁移至低负载节点。
在一示例中,通过监控当前集群的动态平衡主机获取当前集群中所有节点在预设时间段内的负载,和消费延迟值。
根据本公开的第二方面,提供一种分布式发布消息集群分区平衡的装置,分布式发布消息集群分区平衡装置包括:获取单元,被配置为获取当前集群中所有节点在预设时间段内的负载;确定单元,被配置为按照负载从大到小的顺序,选择第一数量的高负载节点,并按照负载从小到大的顺序选择第二数量的低负载节点;判断单元,被配置为第一数量节点的总负载与集群中所有节点平均负载之间的比值是否大于等于预设比率阈值;处理单元,被配置为在第一数量节点的总负载与集群中所有节点平均负载之间的比值大于等于预设比率阈值时,将高负载节点中流量最高的消息分区迁移至低负载节点。
在一示例中,获取单元被配置为:获取消费端访问分区内消息的消费延迟值;判断单元,被配置为连续N次获取的消费延迟值是否均大于预设消费延迟阈值;处理单元还被配置为:若连续N次获取的消费延迟值均大于预设消费延迟阈值,则扩容消费端访问消息对应的分区,N为预设的正整数。
在一示例中,确定单元还被配置为:预先确定集群、节点、消息和分区之间的映射关系;获取单元被配置为:根据集群和节点之间的映射关系,获取当前集群中所有节点在预设时间段内的负载;处理单元被配置为:根据节点和消息之间的映射关系,确定高负载节点中流量最高的消息;根据消息和分区之间的映射关系,确定流量最高的消息对应的分区;将确定的分区迁移至低负载节点。
在一示例中,分布式发布消息集群分区平衡的装置还包括:监控单元,被配置为监控当前集群的动态平衡主机;获取单元被配置为:获取当前集群中所有节点在预设时间段内的负载,和消费延迟值。
根据本公开的第三方面,提供了一种非临时性计算机可读存储介质,非临时性计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在由处理器执行时,执行前述方法中的任一方法。
根据本公开的第四方面,提供了一种分布式发布消息集群分区平衡装置,分布式发布消息集群分区平衡装置包括:存储器,配置用于存储指令;以及处理器,配置用于调用指令执行前述方法中的任一方法。
本公开的实施例提供的技术方案可以包括以下有益效果:获取当前集群中所有节点在预设时间段内的负载,并通过将当前集群中预设数量的高负载节点的总负载与集群中所有节点平均负载之间的比值,与预设的比率阈值进行比较,确定出当前集群中负载比较高的节点,将负载高的节点中流量最高的消息分区迁移至低负载节点,避免了由于节点的负载不均衡导致的节点运行缓慢的问题,实现了集群节点的分区平衡。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种分布式发布消息集群分区平衡的方法的流程图。
图2是根据一示例性实施例示出的另一种分布式发布消息集群分区平衡的方法的流程图。
图3是根据一示例性实施例示出的另一种分布式发布消息集群分区平衡的方法的流程图。
图4是根据一示例性实施例示出的另一种分布式发布消息集群分区平衡的方法的流程图。
图5是根据一示例性实施例示出的一种分布式发布消息集群分区平衡的装置的框图。
图6是根据一示例性实施例示出的一种分布式发布消息集群分区平衡的装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
本公开提供的分布式发布消息集群分区平衡的方法可应用于分布式发布消息集群的架构中。本公开中的分布式发布消息集群的架构例如可以包括分布式应用程序协调服务zookeeper、kafka集群和监控系统。
图1是根据一示例性实施例示出的一种分布式发布消息集群分区平衡的方法的流程图,如图1所示,包括以下步骤。
在步骤S11中,获取当前集群中所有节点在预设时间段内的负载。
本公开中,节点在预设时间段的负载可以包括预设时间段的CPU占用率和/或网络带宽使用率和/或磁盘输入输出(Input/Output,IO)。预设时间段可以根据实际需要进行设定,例如是半小时内或者一小时内等。
在步骤S12中,按照负载从大到小的顺序,选择第一数量的高负载节点,按照负载从小到大的顺序选择第二数量的低负载节点。
一种实施方式中,将获取的预设时间段的所有节点的负载,按照节点的负载大小顺序进行排序,按照负载从大到小的顺序选出预设数量的高负载节点。本发明实施例为描述方便,将预设数量的高负载节点称为第一数量的高负载节点。进一步的,本公开中按照节点的负载从小到大的顺序选出预设数量的低负载节点。本发明实施例为描述方便,将预设数量的低负载节点称为第二数量的低负载节点。
作为示例,以下对预设时间段内节点的CPU占用率作为节点的负载进行说明。对所有节点的CPU占用率按照从大到小的顺序进行排序,选出CPU占用率排在前3的节点,作为高负载节点。对所有节点的CPU占用率按照从小到大的顺序进行排序,选出CPU占用率排在前2的节点,作为低负载节点。
在步骤S13中,若高负载节点的总负载与集群中所有节点平均负载之间的比值大于或等于预设比率阈值,则将高负载节点中流量最高的消息分区迁移至低负载节点。
一种实施方式中,根据获取的预设时间段的所有节点的负载,确定出当前集群维度的节点平均负载。根据获取的第一数量的高负载节点负载,确定出第一数量节点的总负载。判断第一数量节点的总负载与节点平均负载之间的比值,是否大于等于预设的比率阈值。其中,该比率阈值可根据实际情况进行设定,本公开并不限定。例如该比率阈值可以设定为2。若第一数量节点的总负载/节点平均负载的值大于等于预设的比率阈值,则调用kafka驱动,将高负载节点中流量最高的消息分区迁移至低负载节点中。在迁移过程中为了保证高负载节点的稳定,可以限制迁移分区并发数量,例如小于3个。
将高负载节点中流量最高的消息分区迁移至低负载节点例如可采用如下方式进行:针对第一数量的高负载节点中的每一个节点,对每个节点中消息分区流量,包括(BytesOutPerSec和/或BytesInPerSec等),由高到低进行排序,选出每个节点中设定数量的消息分区流量高的消息分区,并对选出的流量高的消息分区进行迁移。在对每个节点中消息分区流量进行迁移时,为了减少对消费端访问消息分区的影响,采取先迁移消息分区流量低的,再迁移消息分区流量高的迁移策略。
将高负载节点中流量最高的消息分区迁移至低负载节点例如还可采用如下方式进行:针对第一数量的高负载节点,将第一数量的高负载节点中的消息分区流量,包括(BytesOutPerSec和/或BytesInPerSec等)由高到低进行排序,选出一定数量的消息分区,然后对选出的消息分区进行迁移。在对选出的消息分区进行迁移时,为了减少对消费端访问消息分区的影响,也可以采用先迁移消息分区流量低的,再迁移消息分区流量高的迁移策略。
其中,若第一数量节点的总负载与集群中所有节点平均负载之间的比值小于预设比率阈值,则在第一设定时长之后重新获取当前集群中所有节点在预设时间段内的负载,并判断第一数量节点的总负载与集群中所有节点平均负载之间的比值是否大于等于预设比率阈值。
本公开中,若第一数量节点的总负载与集群中所有节点平均负载之间的比值小于预设比率阈值,则在第一设定时长之后重新获取当前集群中所有节点在预设时间段内的负载。即在间隔第一设定时长的时间之后,重新获取当前集群中所有节点在预设时间段内的负载,该第一设定时长可基于实际情况进行设定。并基于重新获取的当前集群中所有节点在预设时间段内的负载,按照负载从大到小的顺序,选择第一数量的高负载节点。按照负载从小到大的顺序选择第二数量的低负载节点。并再次判断第一数量节点的总负载与集群中所有节点平均负载之间的比值是否大于等于预设比率阈值。
在本公开的示例性实施例中,获取当前集群中所有节点在预设时间段内的负载,并通过将当前集群中预设数量的高负载节点的总负载与集群中所有节点平均负载之间的比值,与预设的比率阈值进行比较,确定出当前集群中负载比较高的节点,将负载高的节点中流量最高的消息分区迁移至低负载节点,避免了由于节点的负载不均衡导致的节点运行缓慢的问题,实现了集群节点的分区平衡。
图2是一示例性实施例示出的一种分布式发布消息集群分区平衡的方法的流程图,如图2所示,包括以下步骤。
在步骤S21中,获取当前集群中所有节点在预设时间段内的负载。
本公开中,通过监控当前集群的动态平衡主机,获取当前集群中所有节点在预设时间段内的负载。本公开中,监控当前集群的动态平衡主机,并获取当前集群中所有节点在预设时间段内的负载的监控系统,例如可以是falcon,利用falcon的rest接口post接口实现。或者监控当前集群的动态平衡主机的监控系统还可以通过zabbix或者ganglia等实现。
在步骤S22中,按照负载从大到小的顺序,选择第一数量的高负载节点,按照负载从小到大的顺序选择第二数量的低负载节点。
在步骤S23中,若高负载节点的总负载与集群中所有节点平均负载之间的比值大于等于预设比率阈值,则将高负载节点中流量最高的消息分区迁移至低负载节点。
在步骤S24中,获取在预设时间段内消费端访问分区内消息的消费延迟值。
本公开中,消费延迟值,也可以称为ConsumerOffsetLag。本公开中,获取在预设时间段内消费端访问分区内消息的消费延迟值,可以是获取在预设时间段内消费端访问分区内topic的消息队列排队的时间。
在步骤S25中,若连续N次获取的消费延迟值均大于预设消费延迟阈值,则扩容消费端访问消息对应的分区。
本公开中,若连续设定次数内,获取的消费延迟值均大于预设消费延迟阈值,说明消费端消费的该Topic的流量激增,导致针对该Topic的生产消息和消费消息的访问排队时间变长,此时存储该Topic的分区处理消息的压力比较大,导致消费端访问该Topic的延迟增加。故,在连续设定次数获取的消费延迟值均大于预设消费延迟阈值时,可调用kafka驱动,自动扩容消费端访问消息对应的分区数量,即增加存储该Topic的分区数量。扩容该Topic的分区数量可通过kafka-topics命令修改topic的分区数量实现。例如通过kafka-topics将topic的分区数量增加到当前该Topic的分区数量的120%。
图2中示出步骤S24-S25在步骤S21-S23之后执行,但是需要注意的是步骤S24-S25和步骤S21-S23的顺序不限于此。作为另一实施方式,步骤S24-S25可以在步骤S21-S23步骤之前执行。作为又一实施方式,步骤S21-S23和步骤S24-S25可以同时执行。本发明在此方面不做限制。
在本公开的示例性实施例中,通过基于消费端访问分区内消息的消费延迟值,可得到各Topic流量中,哪一个或者哪些的Topic的流量激增,进而可针对该Topic,扩容存储该Topic的分区数量,实现分流该Topic的访问流量,进一步保证了集群节点的分区平衡。
图3是一示例性实施例示出的一种分布式发布消息集群分区平衡的方法的流程图,如图4所示,包括以下步骤。
在步骤S31中,获取当前集群中所有节点在预设时间段内的负载,获取消费端访问分区内消息的消费延迟值。
本公开中,通过监控当前集群的动态平衡主机,获取当前集群中所有节点在预设时间段内的负载和消费延迟值。本公开中,监控当前集群的动态平衡主机,并获取当前集群中所有节点在预设时间段内的负载,和消费延迟值的监控系统,例如可以是falcon,利用falcon的rest接口post接口实现。或者监控当前集群的动态平衡主机的监控系统还可以通过zabbix或者ganglia等实现。
在步骤S32中,按照负载从大到小的顺序,选择第一数量的高负载节点,按照负载从小到大的顺序选择第二数量的低负载节点。
在步骤S33中,若高负载节点的总负载与集群中所有节点平均负载之间的比值大于或等于预设比率阈值,则将高负载节点中流量最高的消息分区迁移至低负载节点。
在步骤S34中,若连续N次获取的消费延迟值均大于预设消费延迟阈值,则发送用于用户选择是否进行扩容的提示信息,并基于用户选择扩容的确认消息,扩容消费端访问消息对应的分区。
本公开中,若连续N次获取的消费延迟值均大于预设消费延迟阈值,则发送用于用户选择是否进行扩容的提示信息,并基于用户选择扩容的确认消息,扩容消费端访问消息对应的分区。
在本公开的示例性实施例中,通过发送用于用户选择是否进行扩容的提示信息,可让用户及时清楚的了解到当前集群topic流量的情况,有利于用户准确判断出集群分区使用情况,进而对集群分区做出更有效平衡处理。
图4是一示例性实施例示出的一种分布式发布消息集群分区平衡的方法的流程图,如图4所示,包括以下步骤。
在步骤S41中,预先确定集群、节点、消息和分区之间的映射关系。
本公开中,可通过访问zookeeper,获取kafka集群使用路径的值,通过解析该使用路径的值,可得到当前集群的节点和节点名称的映射关系。其中,映射关系以键值对的形式存储。例如,{'kafka_cluster1':[‘hostA1_brokeridN1’,‘hostA2_brokeridN2’]}。整个键值对的key是kafka集群名称kafka_cluster1,value是一个列表,列表中的元素是主机名例如hostA1和主机对应的brokerid例如brokeridN1组合而成的字符串。本公开中,也可以通过解析minos配置文件,获取当前集群的节点和节点名称的映射关系。
通过kafka-shell的方式连接对应kafka集群,获取所有partition在broker的分布关系,即broker和partition的映射关系。通过和kafka集群节点和节点名称的映射关系整合,构建得到了一个层次更深的数据结构,如{'kafka_cluster1':{‘hostA1_brokeridN1’:[topicX1_partitionM1,topicX2_partitionN1],‘hostA2_brokeridN2’:[topicX1_partitionM2,topicX2_partitionM2,topicX2_partitionN2]}]}其中,最外层键值对的key是kafka集群名称,value是主机名和brokerid信息组合成的字符串的集合,由主机名和brokerid组合成的新字符串作为内层键值对的key,其value是当前节点下的所有topic名和分区名组合成的字符串的集合。这样就映射出了整个kafka集群名、节点、topic、partition的映射关系。本公开中,也可以通过kafka的java接口获取获取当前集群的broker和partition的映射关系的映射关系。
在步骤S42中,根据集群和节点之间的映射关系,获取当前集群中所有节点在预设时间段内的负载。
在步骤S43中,根据节点和消息之间的映射关系,确定高负载节点中流量最高的消息。
在步骤S44中,根据消息和分区之间的映射关系,确定流量最高的消息对应的分区,将确定的分区迁移至低负载节点。
在本公开的示例性实施例中,通过预先确定集群、节点、消息和分区之间的映射关系,为后续的对高负载节点中流量最高的消息分区进行迁移,以及对消费端访问消息对应的分区进行扩容,提供了基础数据,基于该集群、节点、消息和分区之间的映射关系,可准确的对集群分区进行操作。
图5是根据一示例性实施例示出的一种分布式发布消息集群分区平衡的装置100框图。参照图5,该装置包括获取单元101、确定单元102、判断单元103和处理单元104。
获取单元101,被配置为获取当前集群中所有节点在预设时间段内的负载;确定单元102,被配置为按照负载从大到小的顺序,选择第一数量的高负载节点,并按照负载从小到大的顺序选择第二数量的低负载节点;判断单元103,被配置为第一数量节点的总负载与集群中所有节点平均负载之间的比值是否大于等于预设比率阈值;处理单元104,被配置为在第一数量节点的总负载与集群中所有节点平均负载之间的比值大于等于预设比率阈值时,将高负载节点中流量最高的消息分区迁移至低负载节点。
在一示例中,获取单元101被配置为:在第一数量节点的总负载与集群中所有节点平均负载之间的比值小于预设比率阈值时,在第一设定时长之后重新获取当前集群中所有节点在预设时间段内的负载。
在一示例中,获取单元101被配置为:获取消费端访问分区内消息的消费延迟值;判断单元103,被配置为连续N次获取的消费延迟值是否均大于预设消费延迟阈值;处理单元104还被配置为:若连续N次获取的消费延迟值均大于预设消费延迟阈值,则扩容消费端访问消息对应的分区,N为预设的正整数。
在一示例中,获取单元101被配置为:若连续N次获取的消费延迟值存在小于预设消费延迟阈值的消费延迟值,则重新获取消费端访问分区内消息的消费延迟值。
在一示例中,分布式发布消息集群分区平衡装置还包括:提示单元105,被配置为扩容消费端访问消息对应的分区之前,发送用于用户选择是否进行扩容的提示信息;处理单元104被配置为,在扩容消费端访问消息对应的分区之前,确认接收到用户选择扩容的确认消息。
在一示例中,确定单元102还被配置为:预先确定集群、节点、消息和分区之间的映射关系;获取单元101被配置为:根据集群和节点之间的映射关系,获取当前集群中所有节点在预设时间段内的负载;处理单元104被配置为:根据节点和消息之间的映射关系,确定高负载节点中流量最高的消息;根据消息和分区之间的映射关系,确定流量最高的消息对应的分区;将确定的分区迁移至低负载节点。
在一示例中,分布式发布消息集群分区平衡装置还包括:监控单元106,被配置为监控当前集群的动态平衡主机;获取单元101被配置为:获取当前集群中所有节点在预设时间段内的负载,和消费延迟值。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图6是根据一示例性实施例示出的一种用于分布式发布消息集群分区平衡的装置600的框图。例如,装置600可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图6,装置600可以包括以下一个或多个组件:处理组件602,存储器604,电源组件606,多媒体组件608,音频组件610,输入/输出(I/O)的接口612,传感器组件614,以及通信组件616。
处理组件602通常控制装置600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
存储器604被配置为存储各种类型的数据以支持在设备600的操作。这些数据的示例包括用于在装置600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件606为装置600的各种组件提供电源。电源组件606可以包括电源管理系统,一个或多个电源,及其他与为装置600生成、管理和分配电源相关联的组件。
多媒体组件608包括在装置600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当设备600处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件610被配置为输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当装置600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
I/O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件614包括一个或多个传感器,用于为装置600提供各个方面的状态评估。例如,传感器组件614可以检测到设备600的打开/关闭状态,组件的相对定位,例如组件为装置600的显示器和小键盘,传感器组件614还可以检测装置600或装置600一个组件的位置改变,用户与装置600接触的存在或不存在,装置600方位或加速/减速和装置600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件616被配置为便于装置600和其他设备之间有线或无线方式的通信。装置600可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件616还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由装置600的处理器620执行以完成上述方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (10)

1.一种分布式发布消息集群分区平衡的方法,其特征在于,所述方法包括:
获取当前集群中所有节点在预设时间段内的负载;
按照负载从大到小的顺序,选择第一数量的高负载节点;
按照负载从小到大的顺序选择第二数量的低负载节点;
若所述高负载节点的总负载与集群中所有节点平均负载之间的比值大于或等于预设比率阈值,则将所述高负载节点中流量最高的消息分区迁移至所述低负载节点;
所述将所述高负载节点中流量最高的消息分区迁移至所述低负载节点,包括:
对所述第一数量的高负载节点中的每一个节点中的流量由高到低进行排序后,在每一节点中选出设定数量的流量最高的消息分区,或者对所述第一数量的高负载节点中的流量由高到低进行排序后,选出设定数量的流量最高的消息分区;
对所述设定数量的流量最高的消息分区,按照流量由低到高的顺序迁移至所述低负载节点。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取消费端访问分区内消息的消费延迟值;
若连续N次获取的所述消费延迟值均大于预设消费延迟阈值,则扩容所述消费端访问消息对应的分区,所述N为预设的正整数。
3.根据权利要求1至2中任意一项所述的方法,其特征在于,所述方法还包括:
确定集群、节点、消息和分区之间的映射关系;
所述获取当前集群中所有节点在预设时间段内的负载,包括:
根据集群和节点之间的映射关系,获取当前集群中所有节点在预设时间段内的负载;
将所述高负载节点中流量最高的消息分区迁移至所述低负载节点,包括:
根据节点和消息之间的映射关系,确定所述高负载节点中流量最高的消息;
根据消息和分区之间的映射关系,确定所述流量最高的消息对应的分区;
将确定的分区迁移至所述低负载节点。
4.根据权利要求2所述的方法,其特征在于,通过监控所述当前集群的动态平衡主机获取当前集群中所有节点在预设时间段内的负载,和消费延迟值。
5.一种分布式发布消息集群分区平衡装置,其特征在于,所述装置包括:
获取单元,被配置为获取当前集群中所有节点在预设时间段内的负载;
确定单元,被配置为按照负载从大到小的顺序,选择第一数量的高负载节点,并按照负载从小到大的顺序选择第二数量的低负载节点;
判断单元,被配置为所述第一数量节点的总负载与集群中所有节点平均负载之间的比值是否大于等于预设比率阈值;
处理单元,被配置为在所述第一数量节点的总负载与集群中所有节点平均负载之间的比值大于等于预设比率阈值时,将所述高负载节点中流量最高的消息分区迁移至所述低负载节点;
所述处理单元被配置为采用如下方式将所述高负载节点中流量最高的消息分区迁移至所述低负载节点:
对所述第一数量的高负载节点中的每一个节点中的流量由高到低进行排序后,在每一节点中选出设定数量的流量最高的消息分区,或者对所述第一数量的高负载节点中的流量由高到低进行排序后,选出设定数量的流量最高的消息分区;
对所述设定数量的流量最高的消息分区,按照流量由低到高的顺序迁移至所述低负载节点。
6.根据权利要求5所述的装置,其特征在于,所述获取单元被配置为:
获取消费端访问分区内消息的消费延迟值;
所述判断单元,被配置为连续N次获取的所述消费延迟值是否均大于预设消费延迟阈值;
所述处理单元还被配置为:
若连续N次获取的所述消费延迟值均大于预设消费延迟阈值,则扩容所述消费端访问消息对应的分区,所述N为预设的正整数。
7.根据权利要求5至6中任意一项所述的装置,其特征在于,所述确定单元还被配置为:
预先确定集群、节点、消息和分区之间的映射关系;
所述获取单元被配置为:
根据集群和节点之间的映射关系,获取当前集群中所有节点在预设时间段内的负载;
所述处理单元被配置为:
根据节点和消息之间的映射关系,确定所述高负载节点中流量最高的消息;
根据消息和分区之间的映射关系,确定所述流量最高的消息对应的分区;
将确定的分区迁移至所述低负载节点。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
监控单元,被配置为监控所述当前集群的动态平衡主机;
所述获取单元被配置为:
获取当前集群中所有节点在预设时间段内的负载,和消费延迟值。
9.一种分布式发布消息集群分区平衡装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:执行权利要求1至4中任意一项所述的分布式发布消息集群分区平衡方法。
10.一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行权利要求1至4中任意一项所述的分布式发布消息集群分区平衡方法。
CN201910891690.7A 2019-09-20 2019-09-20 分布式发布消息集群分区平衡的方法、装置及存储介质 Active CN110633151B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910891690.7A CN110633151B (zh) 2019-09-20 2019-09-20 分布式发布消息集群分区平衡的方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910891690.7A CN110633151B (zh) 2019-09-20 2019-09-20 分布式发布消息集群分区平衡的方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN110633151A CN110633151A (zh) 2019-12-31
CN110633151B true CN110633151B (zh) 2022-09-02

Family

ID=68971920

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910891690.7A Active CN110633151B (zh) 2019-09-20 2019-09-20 分布式发布消息集群分区平衡的方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN110633151B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113099489B (zh) * 2020-01-09 2022-08-09 普天信息技术有限公司 宽带集群系统用户面负荷均衡方法及装置
CN113138860B (zh) * 2020-01-17 2023-11-03 中国移动通信集团浙江有限公司 消息队列的管理方法及装置
CN111262781A (zh) * 2020-03-19 2020-06-09 黄诗嵘 一种智能加速路由选择方法
CN111970326B (zh) * 2020-07-22 2023-06-09 深圳市欢太科技有限公司 集群流量平衡方法、装置、存储介质及终端
CN111913670B (zh) * 2020-08-07 2024-04-02 北京百度网讯科技有限公司 负载均衡的处理方法、装置、电子设备及存储介质
CN111966289B (zh) * 2020-08-13 2024-02-09 上海哔哩哔哩科技有限公司 基于Kafka集群的分区优化方法和系统
CN112118314B (zh) * 2020-09-18 2023-05-05 北京百度网讯科技有限公司 负载均衡方法和装置
CN112256433B (zh) * 2020-10-30 2022-04-05 上海哔哩哔哩科技有限公司 基于Kafka集群的分区迁移方法和装置
CN112256454B (zh) * 2020-10-30 2023-05-12 上海哔哩哔哩科技有限公司 消息延时处理方法和系统
CN112269661B (zh) * 2020-10-30 2022-04-15 上海哔哩哔哩科技有限公司 基于Kafka集群的分区迁移方法和装置
CN113608870B (zh) * 2021-07-28 2024-07-19 北京金山云网络技术有限公司 消息队列的负载均衡方法及装置、电子设备及存储介质
CN113590319B (zh) * 2021-07-28 2024-07-19 北京金山云网络技术有限公司 一种消息队列的计算资源负载均衡方法及装置
CN113609071A (zh) * 2021-07-28 2021-11-05 北京金山云网络技术有限公司 一种用于消息队列的自动扩容方法及装置
CN114598705B (zh) * 2022-03-07 2023-08-15 北京百度网讯科技有限公司 消息负载均衡方法、装置、设备和介质
CN116137611B (zh) * 2023-04-20 2023-07-25 中国工商银行股份有限公司 流量分发方法、装置、设备和介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104115469A (zh) * 2011-09-23 2014-10-22 混合电路逻辑有限公司 用于分布式系统中的应用的实时迁移和自动恢复的系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8412810B1 (en) * 2010-07-02 2013-04-02 Adobe Systems Incorporated Provisioning and managing a cluster deployed on a cloud
WO2014047902A1 (zh) * 2012-09-28 2014-04-03 华为技术有限公司 负载均衡方法、装置、系统及计算机可读介质
US9197546B2 (en) * 2013-08-06 2015-11-24 Oracle International Corporation System and method for providing a messaging cluster with hybrid partitions
CN103916327B (zh) * 2014-03-21 2017-02-08 西安电子科技大学 一种hp2p网络负载平衡的方法
CN103957246B (zh) * 2014-04-22 2017-03-01 广州杰赛科技股份有限公司 基于租户感知的动态负载均衡方法及系统
US20180091588A1 (en) * 2016-09-26 2018-03-29 Linkedin Corporation Balancing workload across nodes in a message brokering cluster
CN106572181A (zh) * 2016-11-08 2017-04-19 深圳市中博睿存科技有限公司 基于集群文件系统的对象存储接口负载均衡方法和系统
US10609130B2 (en) * 2017-04-28 2020-03-31 Microsoft Technology Licensing, Llc Cluster resource management in distributed computing systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104115469A (zh) * 2011-09-23 2014-10-22 混合电路逻辑有限公司 用于分布式系统中的应用的实时迁移和自动恢复的系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Kafka and Its Using in High-throughput and Reliable Message Distribution;Zhenghe Wang 等;《2015 8th International Conference on Intelligent Networks and Intelligent Systems (ICINIS)》;20160804;117-120 *
On the Fly Load Balancing to Address Hot Topics in Topic-Based Pub/Sub Systems;Dimitris Dedousis 等;《2018 IEEE 38th International Conference on Distributed Computing Systems (ICDCS)》;20180723;76-86 *
分布式数据流系统中负载均衡技术研究;房俊华;《中国博士学位论文全文数据库 信息科技辑》;20170915(第9期);I138-14 *

Also Published As

Publication number Publication date
CN110633151A (zh) 2019-12-31

Similar Documents

Publication Publication Date Title
CN110633151B (zh) 分布式发布消息集群分区平衡的方法、装置及存储介质
KR101706359B1 (ko) 백그라운드 애플리케이션을 제어하기 위한 방법 및 장치
CN106416195B (zh) 一种处理器实现方法、一种通信网络连接的系统和有形的计算机可读存储媒体
US11444795B1 (en) Intelligent meeting assistant
WO2016058322A1 (zh) 智能省电方法、装置及终端
WO2022156736A1 (zh) 语音回落方法、装置及用户设备
WO2020097845A1 (zh) 网络切片的使用方法及装置
US20240265307A1 (en) Model training method and device
CN116709226B (zh) 通信接力方法、电子设备、通信系统及存储介质
JP6240686B2 (ja) コンテキストアウェアサービスの動的な電力管理
CN112671897A (zh) 分布式系统的访问方法、装置、存储介质、设备和产品
CN105517078A (zh) 网络连接的切换方法及装置
WO2022110939A1 (zh) 一种设备推荐方法及电子设备
CN109376013B (zh) 负载均衡方法及装置
CN106254669A (zh) 数据流量提醒方法及装置
CN107908273B (zh) 应用管理方法、装置、存储介质及电子设备
CN110913276B (zh) 数据处理的方法、装置、服务器、终端及存储介质
CN109644353B (zh) 配置调整方法、装置、电子设备和计算机可读存储介质
EP3786852A1 (en) Method for subnetwork sampling, and method and device for building a hypernetwork topology
CN113067757B (zh) 信息发送和存储方法、装置和介质
CN109948012B (zh) 序列号的生成方法、装置及存储介质
CN112954760A (zh) 蓝牙设备的连接方法、装置和电子设备
CN110716985B (zh) 一种节点信息处理方法、装置及介质
WO2023024894A1 (zh) 一种多设备同步播放方法及装置
CN116915830B (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
GR01 Patent grant