数据消费的负载均衡方法及装置制造方法及图纸

技术编号:15695660 阅读:101 留言:0更新日期:2017-06-24 11:10
本申请提供一种数据消费的负载均衡方法,包括:计算与集群订阅的各待分配消息主题对应的散列值,并将该散列值在待分配节点设备列表中的映射位置确定为对应于各待分配消息主题的起始分配位置;基于集群订阅的消息队列的总数,对应于各待分配节点设备的平均数,从与所述分配起始位置对应的节点设备开始,为所述待分配节点设备列表中的各节点设备平均分配消息队列,并对分配至各节点设备的消息队列的数据量进行组合搭配;当集群订阅的各消息队列均分配完成,查找分配至本设备的目标消息队列,并基于拉模式从所述目标消息队列中获取消息数据进行消息处理。本申请可以确保分配至各节点设备的消息队列,在数量和对应的数据量上均能够达到均衡。

【技术实现步骤摘要】
数据消费的负载均衡方法及装置
本申请涉及计算机应用领域,尤其涉及一种数据消费的负载均衡方法及装置。
技术介绍
拉模式(Pull)数据消费,是指消息数据的生产者将产生的消息数据,通过消息中间件分散保存到消息系统中不同的消息队列中;当消息数据的消费者需要消费消息队列中的消息数据时,可以主动向消息队列发起数据获取请求,将消息队列中存储的消息数据“拉”到本地进行消息处理。在相关技术中,消息系统通常可以基于消息数据的类型,将产生的消息数据划分为不同的消息主题(Topic),每一个消息主题下又可以划分出若干个消息队列(quene),而消息数据的消费者可以订阅消息系统中的一个或者多个消息主题,然后通过拉模式从订阅的消息主题下的消息队列中主动“拉”数据进行消息处理。在实际应用中,如果消息数据的消费者为分布式集群,由于分布式集群中可以包括若干台作为消费者的节点设备,因此当分布式集群订阅了消息系统中的多个消息主题,并且这些消息主题下均包含若干个消息队列的话,通常需要按照统一的分配策略,为各节点设备分别分配消息队列。在拉模式下,通常是由各节点设备基于统一的分配策略分别为各节点设备分配消息队列;在现有的消息分配机制中,为了避免各节点设备自主分配的消息队列出现重复,通常是由各节点设备采用统一的节点设备列表,以及订阅的消息主题列表,按照列表中统一的顺序为各节点设备分别分配消息队列;然而,现有的这种消息分配机制,虽然能够避免分配至各节点设备的消息队列出现重复,但由于这种分配方式是一种完全按照列表中的顺序进行的机械式的分配,因此存在消息队列分配不够灵活的问题。
技术实现思路
本申请提出一种数据消费的负载均衡方法,应用于与消息系统对接的分布式集群中的任一节点设备,所述分布式集群订阅了所述消息系统中的至少一个消息主题的消息数据,所述消息主题包括若干消息队列;所述节点设备基于拉模式从所述消息系统获取与所述消息主题对应的消息数据进行消息处理,所述方法包括:计算与集群订阅的各待分配消息主题对应的散列值,并将该散列值在待分配节点设备列表中的映射位置确定为对应于各待分配消息主题的起始分配位置;基于集群订阅的消息队列的总数,对应于所述待分配节点设备列表中各待分配节点设备的平均数,从与所述分配起始位置对应的节点设备开始,为所述待分配节点设备列表中的各节点设备平均分配消息队列,并基于预设的负载均衡策略对分配至各节点设备的消息队列的数据量进行组合搭配;当集群订阅的各消息队列均分配完成,查找分配至本设备的目标消息队列,并基于拉模式从所述目标消息队列中获取消息数据进行消息处理。本申请还提出一种数据消费的负载均衡装置,应用于与消息系统对接的分布式集群中的任一节点设备,所述分布式集群订阅了所述消息系统中的至少一个消息主题的消息数据,所述消息主题包括若干消息队列;所述节点设备基于拉模式从所述消息系统获取与所述消息主题对应的消息数据进行消息处理,所述装置包括:计算模块,计算与集群订阅的各待分配消息主题对应的散列值,并将该散列值在待分配节点设备列表中的映射位置确定为对应于各待分配消息主题的起始分配位置;分配模块,基于集群订阅的消息队列的总数,对应于所述待分配节点设备列表中各待分配节点设备的平均数,从与所述分配起始位置对应的节点设备开始,为所述待分配节点设备列表中的各节点设备平均分配消息队列,并基于预设的负载均衡策略对分配至各节点设备的消息队列的数据量进行组合搭配;获取模块,当集群订阅的各消息队列均分配完成,查找分配至本设备的目标消息队列,并基于拉模式从所述目标消息队列中获取消息数据进行消息处理。本申请中,分布式集群中的各节点设备通过将集群订阅的消息主题列表中的待分配消息主题下的消息队列,分配至集群中的各节点设备时,通过与各待分配消息主题对应的散列值在待分配节点设备列表中确定对应于各待分配消息主题的起始分配位置,并根据集群订阅的消息队列的总数对应于各节点设备的平均数,从与该起始分配位置对应的节点设备开始,为各节点设备平均分配节点设备;同时,在分配的过程中,还可以基于预设的负载均衡策略对分配至各节点设备的消息队列的数据量进行组合搭配,并在订阅的所有消息主题下的消息队列分配完成后,基于拉模式从分配至本设备的目标消息队列中获取消息数据进行消息处理,从而可以最大程度的确保分配至各节点设备的消息队列,在数量和对应的数据量上均能够达到均衡,使得各节点设备基于拉模式从分配至本设备的消息队列中获取数据进行消息处理时,集群中各节点设备的消息处理负载能够大致平衡,进而可以优化分布式集群在进行消息处理时的整体处理效率。附图说明图1是本申请一实施例示出的一种数据消费的负载均衡方法的流程图;图2是本申请一实施例示出的一种基于拉模式数据消费的负载均衡装置的逻辑框图;图3是本申请一实施例示出的承载所述基于拉模式数据消费的负载均衡装置的节点设备所涉及的硬件结构图。具体实施方式在实际应用中,当分布式集群订阅了消息系统中的一个或者多个消息主题,并且订阅的消息主题下包括若干个消息队列时,在拉模式下,通常是由各节点设备基于统一的分配策略自主的为各节点设备分别分配消息队列。在现有的消息分配机制中,为了避免各节点设备自主分配的消息队列出现重复,各节点设备可以分别在内存中加载统一的待分配节点设备列表,以及集群订阅的消息主题列表,然后按照消息主题列表中各待分配消息主题的顺序,以及待分配节点设备列表中各待分配节点设备的顺序,将各待分配的消息主题下的消息队列,依次分配给各节点设备。例如,假设消息系统中包含4个消息主题topic1-4;topic1有3个队列tp1.q1、tp1.q2和tp1.q3;topic2有2个队列tp2.q1和tp2.q2;topic3有1个队列tp3.q1;以及,topic4有2个队列tp4.q1和tp4.q2,总共8个队列。同时订阅了这4个topic的分布式集群中,一共包含4个作为消费者的节点设备client1-4。基于现有的消息队列分配机制,最终的分配结果可以是如下表1所示:表1如表1所示,由于现有的分配机制,是按照列表中的顺序完全机械式的分配,因此会将待分配消息主题列表中排在首位的tp1.q1、tp2.q1、tp3.q1以及tp4.q1分配给在待分配节点设备列表中排在首位的client1;将待分配消息主题列表中排在第二位的tp1.q2、tp2.q2、tp4.q2分配给在待分配节点设备列表中排在第二位的client2,以此类推。由表1可见,最终client1分配到了4个消息队列,client2分配到了3个消息队列,client3分配到了2个消息队列,而client4未分配到消息对列。可见,基于现有的消息队列分配方式,排在待分配节点设备列表前面的节点设备,可以优先分配到消息队列;而排在待分配节点设备列表靠后的节点设备,可能无法分配到消息队列;而且,通过这种方式,最终分配给同一集群中的各节点设备的消息队列数量,也会存在不均衡的问题,因此无法最大程度的利用到集群中的消息处理资源。有鉴于此,本申请提出一种在拉模式下,分布式集群中的各节点设备消息消费的负载均衡方法。分布式集群中的各节点设备通过将集群订阅的消息主题列表中的待分配消息主题下的消息队列,分配至集群中的各节点设备时,通过与各待分配消息本文档来自技高网...
数据消费的负载均衡方法及装置

【技术保护点】
一种消息处理的负载均衡方法,其特征在于,应用于与消息系统对接的分布式集群中的任一节点设备,所述分布式集群订阅了所述消息系统中的至少一个消息主题的消息数据,所述消息主题包括若干消息队列;所述节点设备基于拉模式从所述消息系统获取与所述消息主题对应的消息数据进行消息处理,所述方法包括:计算与集群订阅的各待分配消息主题对应的散列值,并将该散列值在待分配节点设备列表中的映射位置确定为对应于各待分配消息主题的起始分配位置;基于集群订阅的消息队列的总数,对应于所述待分配节点设备列表中各待分配节点设备的平均数,从与所述分配起始位置对应的节点设备开始,为所述待分配节点设备列表中的各节点设备平均分配消息队列,并基于预设的负载均衡策略对分配至各节点设备的消息队列的数据量进行组合搭配;当集群订阅的各消息队列均分配完成,查找分配至本设备的目标消息队列,并基于拉模式从所述目标消息队列中获取消息数据进行消息处理。

【技术特征摘要】
1.一种消息处理的负载均衡方法,其特征在于,应用于与消息系统对接的分布式集群中的任一节点设备,所述分布式集群订阅了所述消息系统中的至少一个消息主题的消息数据,所述消息主题包括若干消息队列;所述节点设备基于拉模式从所述消息系统获取与所述消息主题对应的消息数据进行消息处理,所述方法包括:计算与集群订阅的各待分配消息主题对应的散列值,并将该散列值在待分配节点设备列表中的映射位置确定为对应于各待分配消息主题的起始分配位置;基于集群订阅的消息队列的总数,对应于所述待分配节点设备列表中各待分配节点设备的平均数,从与所述分配起始位置对应的节点设备开始,为所述待分配节点设备列表中的各节点设备平均分配消息队列,并基于预设的负载均衡策略对分配至各节点设备的消息队列的数据量进行组合搭配;当集群订阅的各消息队列均分配完成,查找分配至本设备的目标消息队列,并基于拉模式从所述目标消息队列中获取消息数据进行消息处理。2.根据权利要求1所述的方法,其特征在于,所述将该散列值在待分配节点设备列表中的映射位置确定为对应于各待分配消息主题的起始分配位置,包括:针对所述散列值与所述节点设备列表中的节点设备总数进行取余运算;查找所述节点设备列表中与所述取余运算结果对应的位置;将查找到的位置确定为对应于各待分配消息主题的分配起始位置。3.根据权利要求1所述的方法,其特征在于,所述基于预设的数据量均衡策略对分配至各节点设备的消息队列的数据量进行组合搭配,包括:统计所述待分配消息主题的各消息队列的数据量大小;按照数据量大小对所述待分配消息主题的各消息队列进行排序,并基于排序后的顺序生成序列;在为各节点设备分配消息队列时,从所述序列的首端以及尾端为各节点设备分别选取消息队列,以对分配至各节点设备的消息队列的数据量进行组合搭配。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:基于各消息队列中的消息数据的处理开销值,以及各消息队列的数据量大小,为各消息队列分别计算对应的负载权重值;基于计算出所述负载权重值,对分配至各节点设备的消息队列的数量进行调整,以均衡分配至各节点设备的消息队列对应的负载。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:获取为各消息队列预配置的负载权重值;基于为各消息队列预配置的所述负载权重值,对分配至各节点设备的消息队列的数...

【专利技术属性】
技术研发人员:刘恒
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1