CN112328404A - 负载均衡方法及装置、电子设备、计算机可读介质 - Google Patents
负载均衡方法及装置、电子设备、计算机可读介质 Download PDFInfo
- Publication number
- CN112328404A CN112328404A CN202011349763.9A CN202011349763A CN112328404A CN 112328404 A CN112328404 A CN 112328404A CN 202011349763 A CN202011349763 A CN 202011349763A CN 112328404 A CN112328404 A CN 112328404A
- Authority
- CN
- China
- Prior art keywords
- middleware
- entity
- subscription
- partition
- middleware entity
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Abstract
本申请提供了一种负载均衡方法,涉及数据处理技术领域,具体涉及消息订阅技术领域,具体实现方案为:确定本客户端设备当前连接的第一中间件实体的订阅指标;响应于所述订阅指标满足预设条件,获取本客户端设备所在分区中各个中间件实体的订阅指标;根据本客户端设备所在分区中各个中间件实体的订阅指标确定第一目标中间件实体;接入所述第一目标中间件实体;可以合理评估当前客户端设备所连接的中间件实体是否合适,能够在中间件实体宕机之前主动发现问题,并及时进行中间件实体的切换,提高消息订阅系统性能以及客户端设备对主题的订阅速度。本申请还提供了一种负载均衡装置、电子设备和计算机可读介质。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及消息订阅技术领域,尤其涉及一种负载均衡方法及装置、电子设备、计算机可读介质。
背景技术
用户向流式数据处理平台(例如Datahub)订阅数据时存在订阅堆积量大、订阅进度滞后的问题。为保证容错性,现有的流式数据处理平台对每个主题(topic)的各分区(partition)均提供了多副本备份机制,对于订阅进度滞后的问题,各产品的解决方案如下。
针对Kafka平台方案,为减少磁盘IO(输入输出)、网络IO对订阅消息性能的影响,对数据流采用了顺序读写磁盘、数据压缩、批量读的方式以提高吞吐。然而,在架构设计上Kafka平台在分区级别设置主中间件实体(leader broker),所有对该分区的读写请求均落在主中间件实体上(从节点不能保证数据强一致性),仅当主中间件实体宕机后,才选举出一个新的主中间件实体接收读写请求。此方案下,客户端对主题的订阅速度容易被单个中间件实体的软硬件资源瓶颈所限制。
针对Pulsar平台方案,中间件实体(broker)本身不存储消息,而是作为代理角色,管理并转发用户的发布、订阅请求。为提高订阅服务能力,中间件实体会根据策略从多个实际存储消息的Bookie服务器中拉取消息,并在本地做内存高速缓冲存储,以供用户订阅。但pulsar平台方案中,在主题级别拥有一个中间件实体,其拥有主题的所有权,针对该主题所有的读写请求都经过该主中间件实体完成(主题所有权唯一性)。当主中间件实体宕机时,选举出一个新的主中间件实体作为主题所有者,选举过程中不处理数据读写请求。此方案下,客户端对主题的订阅速度也会被单个中间件实体的软硬件资源瓶颈所限制,如网卡打满、CPU(Central Processing Unit,中央处理器)被其他进程占用、内存超限等。
发明内容
提供了一种负载均衡方法及装置、电子设备、计算机可读介质。
根据第一方面,提供了一种负载均衡方法,包括:
确定本客户端设备当前连接的第一中间件实体的订阅指标;
响应于所述订阅指标满足预设条件,获取本客户端设备所在分区中各个中间件实体的订阅指标;
根据本客户端设备所在分区中各个中间件实体的订阅指标确定第一目标中间件实体;
接入所述第一目标中间件实体。
根据第二方面,提供了一种负载均衡装置,包括:第一处理模块、第二处理模块和接入模块,所述第一处理模块用于,确定本客户端设备当前连接的第一中间件实体的订阅指标;
所述第二处理模块用于,响应于所述订阅指标满足预设条件,获取本客户端设备所在分区中各个中间件实体的订阅指标;根据本客户端设备所在分区中各个中间件实体的订阅指标确定第一目标中间件实体;
所述接入模块用于,接入所述第一目标中间件实体。
根据第三方面,提供了一种电子设备,其包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行负载均衡方法中任一项所述的方法。
根据第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行上述任意一种负载均衡方法。
本申请提供一种消息传输系统中订阅负载均衡方案,基于当前连接的第一中间件实体的订阅指标进行负载均衡判断,可以合理评估当前客户端设备所连接的中间件实体是否合适,能够在中间件实体宕机之前主动发现问题,并及时进行中间件实体的切换,提高消息订阅系统性能以及客户端设备对主题的订阅速度。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请实施例提供的一种负载均衡方法的流程图;
图2是本申请实施例提供的进行中间件实体强制切换的流程图;
图3是本申请实施例提供的一种故障处理的流程图;
图4是本申请实施例提供的另一种故障处理的流程图;
图5是本申请实施例提供的根据每秒订阅到的消息数量进行负载均衡判断的流程图;
图6是本申请实施例提供的一种负载均衡装置的组成框图;
图7是本申请实施例提供的另一种负载均衡装置的组成框图;
图8是本申请实施例提供的又一种负载均衡装置的组成框图;
图9是用来实现本申请实施例的负载均衡的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在不冲突的情况下,本申请各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本申请。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。
第一方面,本申请实施例提供一种负载均衡方法,用于实现消息订阅系统的负载均衡,本申请实施例所涉及的概念如下:
主题(Topic):系统通过主体对消息进行分类,一个主题由一个或多个分区组成,主题提供竞争消费、非竞争消费两种订阅模式。
分区(Partition):每个主题包含一个或多个分区。
中间件实体(Broker):实际接收客户端读写请求以及消息存储的服务器实体,一个分区中包括多个中间件实体。
消息(Message):信息传递的载体,消息订阅系统(例如DataHub)可以按照分区粒度对消息进行有序组织。
在消息订阅系统中,消息生产者(Producer)负责生产并发送消息到中间件实体,消息消费者(Consumer)负责向中间件实体读取消息并进行消费。客户端设备既可以作为消息生产者也可以作为消息消费者。若客户端订阅速度与消息发布速度不匹配,则会产生订阅堆积量,订阅堆积量是指分区的最新发布消息ID与客户端当前订阅到消息ID的差值。
每个主题的各分区都备份了若干份副本,保存在不同中间件实体上,并保证各副本的数据强一致性。订阅时,客户端可以选择任意一个中间件实体进行消息订阅。
图1为本申请实施例的负载均衡的流程图,参照图1,所述方法包括以下步骤:
步骤11,确定当前连接的第一中间件实体的订阅指标。
需要说明的是,在本步骤之前,客户端设备已经接入了其所在分区中的某个中间件实体,该中间件实体为第一中间件实体。
订阅指标用于反映中间件实体的订阅服务能力。
步骤12,响应于本客户端设备当前连接的第一中间件实体的订阅指标满足预设条件,获取本客户端设备所在分区中各个中间件实体的订阅指标。
在本步骤中,客户端设备判断根据所连接的第一中间件实体的订阅指标判断是否需要进行负载均衡,即判断是否需要进行中间件实体切换,若该订阅指标满足预设条件,说明当前所连接的第一中间件实体并不是最佳的中间件实体,需要进行中间件实体的切换。
步骤13,根据本客户端设备所在分区中各个中间件实体的订阅指标确定第一目标中间件实体。
在本步骤中,基于订阅指标,从本客户端设备所在分区中各个中间件实体中选择一个最佳的中间件实体,作为待切换的第一目标中间件实体。
步骤14,接入第一目标中间件实体。
在本步骤中,客户端设备断开与第一中间件实体的连接,接入该第一目标中间件实体,从而实现中间件实体的切换。
需要说明的是,针对客户端设备首次连接中间件实体的情况,客户端设备可以获取其所在分区的实体列表,从实体列表中随机选择或以一定策略(如选择负载低的)选择一个中间件实体进行连接。
在本申请实施例中,确定客户端设备当前连接的第一中间件实体的订阅指标,响应于客户端设备当前连接的第一中间件实体的订阅指标满足预设条件,根据客户端设备所在分区中各个中间件实体的订阅指标确定第一目标中间件实体,并接入第一目标中间件实体;本申请实施例提供一种消息传输系统中订阅负载均衡方案,基于当前连接的第一中间件实体的订阅指标进行负载均衡判断,可以合理评估当前客户端设备所连接的中间件实体是否合适,能够在中间件实体宕机之前主动发现订阅系统性能下降的问题,并及时进行中间件实体的切换,提高消息订阅系统性能以及客户端设备对主题的订阅速度。
在一些实施例中,按照预设的订阅周期判断本客户端设备当前连接的第一中间件实体的订阅指标是否满足预设条件,并记录当前的订阅周期数量,订阅周期数量为本客户端设备当前连接的第一中间件实体的订阅指标是否满足预设条件的判断次数,订阅周期数量能够反映客户端设备与当前连接的第一中间件实体的连接时长。也就是说,客户端设备在接入中间件实体之后,按照订阅周期根据当前所连接的第一中间件实体的订阅指标进行负载均衡判断,并记录负载均衡的判断次数,订阅周期的时长可以根据用户需求进行设置。通过周期进行负载均衡判断,可以实时监测当前连接的第一中间件实体的状态,若其存在其软硬件问题,客户端设备能够及时发现并及时切换到其他中间件实体上,提高消息订阅系统的可靠性。
在一些实施例中,所述负载均衡方法还包括以下步骤:响应于本客户端设备当前连接的第一中间件实体的订阅指标不满足预设条件且当前的订阅周期结束,更新订阅周期数量。也就是说,若客户端设备判断出所连接的第一中间件实体的订阅指标不满足预设条件,说明当前所连接的第一中间件实体就是当前最佳的中间件实体,不需要切换中间件实体,在这种情况下,在当前的订阅周期结束进入下一个订阅周期时将订阅周期数量加1。
在一些实施例中,在接入第一目标中间件实体(即步骤14)之后,所述负载均衡方法还包括以下步骤:将订阅周期数量清零。也就是说,一旦客户端设备切换所连接的第一中间件实体,就要对订阅周期数量重新计数,以便记录客户端设备与切换后的第一中间件实体的连接时长。
由于各中间件实体的订阅指标是实时变化的,为了避免客户端设备长时间陷入局部最优,而未察觉其余中间件实体的服务能力已优于当前连接的第一中间件实体的服务能力的情况,在一些实施例中,客户端设备还设置了强制切换机制。图2为本申请实施例进行中间件实体强制切换的流程图,如图2所示,所述负载均衡方法还包括以下步骤:
步骤21,响应于订阅周期数量大于预设的第一阈值且在预设时长内未进行中间件实体切换,根据本客户端设备所在分区中各个中间件实体的订阅指标确定第二目标中间件实体;其中,预设时长为所述订阅周期数量与所述订阅周期的乘积。
第一阈值的值越小,强制切换的频率越频繁,越能够及时发现局部最优的问题,但若连接的第一中间件实体切换过于频繁,也会影响消息订阅系统的稳定性,因此,第一阈值可以由用户根据需求合理设置,例如可以设置为5。
若订阅周期数量为n,第一阈值为N=5,订阅周期为T,在本步骤中,若n>5,且客户端设备在n*T时长内始终连接当前的第一中间件实体,并未发生切换,在这种情况下,即使该第一中间件实体的订阅指标不满足预设条件,也需要进行切换。因此,客户端设备根据自身所在分区中各个中间件实体的订阅指标确定出第二目标中间件实体,作为待切换目标。
步骤22,接入第二目标中间件实体。
在本步骤中,客户端设备断开与第一中间件实体的连接,接入该第二目标中间件实体,完成强制切换过程。在一些实施例中,在完成切换之后,客户端设备还将订阅周期数量清零。
在一些实施例中,还提出了中间件实体故障处理机制,图3为本申请实施例的一种故障处理流程图,如图3所示,所述负载均衡方法还包括以下步骤:
步骤31,响应于确定出本客户端设备与当前连接的第一中间件实体之间发生故障,根据本客户端设备所在分区中各个中间件实体的订阅指标确定第三目标中间件实体,并接入第三目标中间件实体。
在本步骤中,若客户端设备确定出与当前连接的第一中间件实体之间连接中断或者发生订阅超时,则认为本客户端设备与当前连接的第一中间件实体之间发生故障。在这种情况下,需要进行中间件实体切换,即确定第三目标中间件实体,并切换至该第三目标中间件实体。在一些实施例中,在完成切换之后,客户端设备还将订阅周期数量清零。
步骤32,将本次负载均衡判断状态设置为第一状态。
针对每次负载均衡判断,可以设置一个状态参数broker_fail_state用于记录本次负载均衡判断结果。在本步骤中,可以将状态参数broker_fail_state设置为第一状态对应的数值,例如设置为1,表示故障状态。通过设置负载均衡判断状态,可以清楚、直观反映相关中间件实体的性能,为运维人员进行后期进行设备维护提供依据。
步骤33,增加订阅周期的时长。
在本步骤中,增加订阅周期T的值。在客户端设备与中间件实体之间发生故障时降低负载均衡判断的频率,可以降低客户端的处理量,保证订阅系统性能。
图4为本申请实施例提供的另一种故障处理流程图,如图4所示,在一些实施例中,在将本次负载均衡判断状态设置为第一状态(即步骤32)之后,还包括以下步骤:
步骤33’,响应于下一个订阅周期到达且本客户端设备所在分区中全部中间件实体均为可用状态,将本次负载均衡判断状态设置为第二状态。
在本步骤中,客户端设备可以将状态参数broker_fail_state更新为第二状态对应的数值,例如设置为0,表示正常状态,以退出故障状态。需要说明的是,只有当分区中全部中间件实体均为可用状态的情况下,才认为本次负载均衡判断的状态恢复正常状态。
在一些实施例中,本客户端设备所在分区中全部中间件实体均为可用状态,包括:分别向本客户端设备所在分区中各个中间件实体发送远程过程调用(Remote ProcedureCall,RPC)请求,接收到本客户端设备所在分区中全部中间件实体返回的远程过程调用响应。也就是说,客户端设备分别向所在分区中的各个中间件实体发送RPC请求,若接收到中间件实体返回的RPC响应,就说明该中间件实体状态可用,若接收到所有中间件实体返回的RPC响应,则说明该分区内全部中间件实体均为可用状态。
在一些实施例中,订阅指标可用包括以下之一或任意组合:每秒订阅到的消息数量(Transmission Per Second,TPS)、订阅延迟量、客户端设备连接数量、中间件实体的负载。
TPS是客户端设备在不同中间件实体上每秒订阅到的消息数量,可较为直观地反映“订阅追赶发布的速度”,直接体现订阅堆积量的下降速度,该参数适用于发布快、吞吐量大的场景。订阅延迟量是客户端设备在不同中间件实体上订阅消息的延迟量,适用于TPS较小、关注每条消息的拉取延迟的场景。客户端设备连接数量是一个分区内的不同中间件实体上连接客户端设备的数量,适用于将同一个主题下多个客户端设备之间分散订阅的场景。中间件实体的负载反映各个中间件实体的负载情况,适用于直接根据各中间件实体当前负载高低进行订阅均衡的场景。
客户端设备选择目标中间件实体进行切换时,选择TPS大、订阅延迟量小、客户端设备连接数量少、中间件实体的负载低的一个中间件实体作为目标中间件实体进行消息订阅。
图5为本申请实施例根据每秒订阅到的消息数量(TPS)进行负载均衡判断的流程图,在一些实施例中,当订阅指标至少包括每秒订阅到的消息数量TPS时,结合图1和图5所示,所述获取本客户端设备所在分区中各个中间件实体的订阅指标(即步骤12),包括以下步骤51:
步骤51,获取实体列表,并获取实体列表中本客户端设备所在分区中全部中间件实体的TPS。
实体列表记录了该分区内全部中间件实体的信息(即订阅指标),例如TPS、客户端连接数量、中间件实体负载、订阅延迟量等。需要说明的是,TPS和订阅延迟量是在客户端设备与中间件实体建立连接之后获得并写入实体列表的。
在获取所述实体列表中本客户端设备所在分区中全部中间件实体的TPS(即步骤12)之后,确定第一目标中间件实体(即步骤13)之前,还包括以下步骤:
步骤52,确定实体列表中TPS最大值对应的第二中间件实体。
相应的,所述根据本客户端设备所在分区中各个中间件实体的订阅指标确定第一目标中间件实体(即步骤13),包括以下步骤53-54:
步骤53,计算实体列表中TPS最大值与本客户端设备当前连接的第一中间件实体的TPS的比值。
步骤54,响应于所述比值大于预设的第二阈值,且TPS最大值对应的第二中间件实体与本客户端设备当前连接的第一中间件实体不同,确定第一目标中间件实体。
第二阈值大于1,例如,第二阈值可以为1.2。实体列表中TPS最大值与本客户端设备当前连接的第一中间件实体的TPS的比值大于第二阈值,说明本客户端设备当前连接的第一中间件实体的TPS并不是分区中TPS最大的那个中间件实体,即不是最优的中间件实体,因此,需要确定带切换的第一目标中间件实体,以进行切换。
在一些实施例中,所述获取实体列表中本客户端设备所在分区中全部中间件实体的TPS(即步骤51),包括以下步骤:响应于根据实体列表未获取到本客户端设备所在分区中全部中间件实体的TPS,分别接入第三中间件实体;其中,第三中间件实体为实体列表中未记录TPS的中间件实体。获取各第三中间件实体的TPS,并将第三中间件实体的TPS写入实体列表。也就是说,如果实体列表中未记录分区中所有的中间件实体的TPS,说明没有TPS记录的那些中间件实体,没有与本终端设备建立过连接,客户端设备分别接入那些中间件实体,以获取TPS并在实体列表中记录。
在一些实施例中,订阅指标还可以包括中间件实体的负载,相应的,所述获取实体列表之后,还包括以下步骤:获取实体列表中本客户端设备所在分区中全部中间件实体的中间件实体的负载。
相应的,所述根据本客户端设备所在分区中各个中间件实体的订阅指标确定第一目标中间件实体(即步骤13),包括以下步骤:根据本客户端设备所在分区中各个中间件实体的中间件实体的负载,确定第一目标中间件实体。
根据本申请的实施例,本申请还提供了一种负载均衡装置,图6是本申请实施例提供的一种负载均衡装置的组成框图,如图6所示,所示负载均衡装置包括:第一处理模块601、第二处理模块602和接入模块603,第一处理模块601用于,确定本客户端设备当前连接的第一中间件实体的订阅指标。
第二处理模块602用于,响应于所述订阅指标满足预设条件,获取本客户端设备所在分区中各个中间件实体的订阅指标;根据本客户端设备所在分区中各个中间件实体的订阅指标确定第一目标中间件实体。
接入模块603用于,接入所述第一目标中间件实体。
在一些实施例中,第二处理模块602用于,按照预设的订阅周期判断本客户端设备当前连接的第一中间件实体的订阅指标是否满足预设条件,并记录当前的订阅周期数量;所述订阅周期数量为本客户端设备当前连接的第一中间件实体的订阅指标是否满足预设条件的判断次数。
在一些实施例中,第二处理模块602还用于,响应于本客户端设备当前连接的第一中间件实体的订阅指标不满足预设条件且当前的订阅周期结束,更新所述订阅周期数量。
图7是本申请实施例提供的另一种负载均衡装置的组成框图,在一些实施例中,如图7所示,所述负载均衡装置还可以包括第三处理模块604,第三处理模块604用于,响应于订阅周期数量大于预设的第一阈值且在预设时长内未进行中间件实体切换,根据本客户端设备所在分区中各个中间件实体的订阅指标确定第二目标中间件实体;其中,所述预设时长为所述订阅周期数量与所述订阅周期的乘积。
接入模块603还用于,接入所述第二目标中间件实体。
图8是本申请实施例提供的又一种负载均衡装置的组成框图,在一些实施例中,如图8所示,所述负载均衡装置还可以包括故障处理模块605,故障处理模块605用于,响应于确定出本客户端设备与当前连接的第一中间件实体之间发生故障,根据本客户端设备所在分区中各个中间件实体的订阅指标确定第三目标中间件实体,并接入所述第三目标中间件实体;将本次负载均衡判断状态设置为第一状态;增加所述订阅周期的时长。
在一些实施例中,故障处理模块605还用于,在将本次负载均衡判断状态设置为第一状态之后,响应于下一个订阅周期到达且本客户端设备所在分区中全部中间件实体均为可用状态,将本次负载均衡判断状态设置为第二状态。
在一些实施例中,所述本客户端设备所在分区中全部中间件实体均为可用状态,包括:分别向本客户端设备所在分区中各个中间件实体发送远程过程调用请求;接收到本客户端设备所在分区中全部中间件实体返回的远程过程调用响应。
在一些实施例中,接入模块603还用于,接入所述第一目标中间件实体之后,或者,接入所述第二目标中间件实体之后,或者,接入所述第三目标中间件实体之后,将所述订阅周期数量清零。
在一些实施例中,所述订阅指标至少包括每秒订阅到的消息数量TPS。第二处理模块602用于,获取实体列表,并获取所述实体列表中本客户端设备所在分区中全部中间件实体的TPS;确定所述实体列表中TPS最大值对应的第二中间件实体;计算所述实体列表中TPS最大值与本客户端设备当前连接的第一中间件实体的TPS的比值;响应于所述比值大于预设的第二阈值,且所述TPS最大值对应的第二中间件实体与本客户端设备当前连接的第一中间件实体不同,确定第一目标中间件实体。
在一些实施例中,第二处理模块602用于,响应于根据所述实体列表未获取到本客户端设备所在分区中全部中间件实体的TPS,分别接入第三中间件实体;其中,所述第三中间件实体为所述实体列表中未记录TPS的中间件实体;获取各第三中间件实体的TPS,并将所述第三中间件实体的TPS写入所述实体列表。
在一些实施例中,所述订阅指标还包括中间件实体的负载,第二处理模块602用于,在获取实体列表之后,还获取所述实体列表中本客户端设备所在分区中全部中间件实体的中间件实体的负载;根据本客户端设备所在分区中各个中间件实体的中间件实体的负载,确定第一目标中间件实体。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图9所示,是根据本申请实施例的负载均衡方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图9所示,该电子设备包括:一个或多个处理器901、存储器902,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图9中以一个处理器901为例。
存储器902即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的负载均衡方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的负载均衡方法。
存储器902作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的负载均衡方法对应的程序指令/模块。处理器901通过运行存储在存储器902中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的负载均衡方法。
存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据负载均衡的电子设备的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至负载均衡的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
负载均衡方法的电子设备还可以包括:输入装置903和输出装置904。处理器901、存储器902、输入装置903和输出装置904可以通过总线或者其他方式连接,图9中以通过总线连接为例。
输入装置903可接收输入的数字或字符信息,以及产生与负载均衡的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置904可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。服务器也可以是分布式系统的服务器,或结合了区块链的服务器,通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
本申请实施例提出的负载均衡方案,是一种客户端订阅的负载均衡方案,客户端设备可根据各中间件实体提供的订阅服务能力,通过一种或多种订阅指标组合反映客户端设备当前消息订阅的状况,定时判断当前订阅的状况,并据此进行动态切换所连接的中间件实体,自适应、动态地选择中间件实体进行数据订阅,达到均衡中间件实体订阅负载、减少客户端设备订阅堆积量的目的。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (15)
1.一种负载均衡方法,其特征在于,包括:
确定本客户端设备当前连接的第一中间件实体的订阅指标;
响应于所述订阅指标满足预设条件,获取本客户端设备所在分区中各个中间件实体的订阅指标;
根据本客户端设备所在分区中各个中间件实体的订阅指标确定第一目标中间件实体;
接入所述第一目标中间件实体。
2.根据权利要求1所述的方法,其特征在于,按照预设的订阅周期判断本客户端设备当前连接的第一中间件实体的订阅指标是否满足预设条件,并记录当前的订阅周期数量;所述订阅周期数量为本客户端设备当前连接的第一中间件实体的订阅指标是否满足预设条件的判断次数。
3.根据权利要求2所述的方法,其特征在于,还包括:
响应于本客户端设备当前连接的第一中间件实体的订阅指标不满足预设条件且当前的订阅周期结束,更新所述订阅周期数量。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
响应于订阅周期数量大于预设的第一阈值且在预设时长内未进行中间件实体切换,根据本客户端设备所在分区中各个中间件实体的订阅指标确定第二目标中间件实体;其中,所述预设时长为所述订阅周期数量与所述订阅周期的乘积;
接入所述第二目标中间件实体。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
响应于确定出本客户端设备与当前连接的第一中间件实体之间发生故障,根据本客户端设备所在分区中各个中间件实体的订阅指标确定第三目标中间件实体,并接入所述第三目标中间件实体;
将本次负载均衡判断状态设置为第一状态;
增加所述订阅周期的时长。
6.根据权利要求5所述的方法,其特征在于,所述将本次负载均衡判断状态设置为第一状态之后,还包括:
响应于下一个订阅周期到达且本客户端设备所在分区中全部中间件实体均为可用状态,将本次负载均衡判断状态设置为第二状态。
7.根据权利要求6所述的方法,其特征在于,所述本客户端设备所在分区中全部中间件实体均为可用状态,包括:
分别向本客户端设备所在分区中各个中间件实体发送远程过程调用请求;
接收到本客户端设备所在分区中全部中间件实体返回的远程过程调用响应。
8.根据权利要求2、4、5任一项所述的方法,其特征在于,所述接入所述第一目标中间件实体之后,或者,接入所述第二目标中间件实体之后,或者,接入所述第三目标中间件实体之后,所述方法还包括:将所述订阅周期数量清零。
9.根据权利要求1-7任一项所述的方法,其特征在于,所述订阅指标包括以下之一或任意组合:每秒订阅到的消息数量、订阅延迟量、客户端设备连接数量、中间件实体的负载。
10.根据权利要求9所述的方法,其特征在于,所述订阅指标至少包括每秒订阅到的消息数量TPS,所述获取本客户端设备所在分区中各个中间件实体的订阅指标,包括:获取实体列表,并获取所述实体列表中本客户端设备所在分区中全部中间件实体的TPS;
在获取所述实体列表中本客户端设备所在分区中全部中间件实体的TPS之后,确定第一目标中间件实体之前,还包括:确定所述实体列表中TPS最大值对应的第二中间件实体;
所述响应于所述订阅指标满足预设条件,确定第一目标中间件实体,包括:
计算所述实体列表中TPS最大值与本客户端设备当前连接的第一中间件实体的TPS的比值;
响应于所述比值大于预设的第二阈值,且所述TPS最大值对应的第二中间件实体与本客户端设备当前连接的第一中间件实体不同,确定第一目标中间件实体。
11.根据权利要求10所述的方法,其特征在于,所述获取所述实体列表中本客户端设备所在分区中全部中间件实体的TPS,包括:
响应于根据所述实体列表未获取到本客户端设备所在分区中全部中间件实体的TPS,分别接入第三中间件实体;其中,所述第三中间件实体为所述实体列表中未记录TPS的中间件实体;
获取各第三中间件实体的TPS,并将所述第三中间件实体的TPS写入所述实体列表。
12.根据权利要求10所述的方法,其特征在于,所述订阅指标还包括中间件实体的负载,所述获取实体列表之后,还包括:获取所述实体列表中本客户端设备所在分区中全部中间件实体的中间件实体的负载;
所述根据本客户端设备所在分区中各个中间件实体的订阅指标确定第一目标中间件实体,包括:
根据本客户端设备所在分区中各个中间件实体的中间件实体的负载,确定第一目标中间件实体。
13.一种负载均衡装置,其特征在于,包括:第一处理模块、第二处理模块和接入模块,所述第一处理模块用于,确定本客户端设备当前连接的第一中间件实体的订阅指标;
所述第二处理模块用于,响应于所述订阅指标满足预设条件,获取本客户端设备所在分区中各个中间件实体的订阅指标;根据本客户端设备所在分区中各个中间件实体的订阅指标确定第一目标中间件实体;
所述接入模块用于,接入所述第一目标中间件实体。
14.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-12中任一项所述的方法。
15.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011349763.9A CN112328404B (zh) | 2020-11-26 | 2020-11-26 | 负载均衡方法及装置、电子设备、计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011349763.9A CN112328404B (zh) | 2020-11-26 | 2020-11-26 | 负载均衡方法及装置、电子设备、计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112328404A true CN112328404A (zh) | 2021-02-05 |
CN112328404B CN112328404B (zh) | 2023-08-08 |
Family
ID=74308891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011349763.9A Active CN112328404B (zh) | 2020-11-26 | 2020-11-26 | 负载均衡方法及装置、电子设备、计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112328404B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113347238A (zh) * | 2021-05-26 | 2021-09-03 | 湖南大学 | 基于区块链的消息分区方法及系统、设备、存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1538316A (zh) * | 2003-04-17 | 2004-10-20 | 联想(北京)有限公司 | 具有层次拓扑结构的消息中间件系统及消息传递方法 |
CN101945056A (zh) * | 2009-06-29 | 2011-01-12 | 软件Ag公司 | 基于策略的jms中间件群的系统和/或方法 |
CN102377685A (zh) * | 2010-08-06 | 2012-03-14 | 阿里巴巴集团控股有限公司 | 一种订阅消息的发送系统以及订阅消息的发送方法 |
CN102769668A (zh) * | 2012-07-02 | 2012-11-07 | 上海交通大学 | 基于近似匹配的发布/订阅负载均衡方法 |
CN103944924A (zh) * | 2014-05-15 | 2014-07-23 | 重庆邮电大学 | 一种基于RESTful的泛在网发布订阅中间件模型 |
CN106375462A (zh) * | 2016-09-13 | 2017-02-01 | 北京百度网讯科技有限公司 | 在分布式消息系统中实现消息持久化的方法及装置 |
CN108418894A (zh) * | 2018-03-26 | 2018-08-17 | 威创软件南京有限公司 | 一种基于push技术的分布式数据同步方法 |
CN110659124A (zh) * | 2018-06-28 | 2020-01-07 | 北京京东尚科信息技术有限公司 | 一种消息处理方法和装置 |
EP3703342A1 (en) * | 2019-03-01 | 2020-09-02 | ABB Schweiz AG | Dynamic load balancing in network centric process control systems |
CN111770172A (zh) * | 2020-06-29 | 2020-10-13 | 深圳前海微众银行股份有限公司 | 消息中间件消费代理方法、装置、代理服务器及存储介质 |
CN111787066A (zh) * | 2020-06-06 | 2020-10-16 | 王科特 | 一种基于大数据、ai的物联网数据平台 |
CN111913837A (zh) * | 2020-08-17 | 2020-11-10 | 普元信息技术股份有限公司 | 大数据环境下实现分布式中间件消息恢复策略管理的系统 |
-
2020
- 2020-11-26 CN CN202011349763.9A patent/CN112328404B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1538316A (zh) * | 2003-04-17 | 2004-10-20 | 联想(北京)有限公司 | 具有层次拓扑结构的消息中间件系统及消息传递方法 |
CN101945056A (zh) * | 2009-06-29 | 2011-01-12 | 软件Ag公司 | 基于策略的jms中间件群的系统和/或方法 |
CN102377685A (zh) * | 2010-08-06 | 2012-03-14 | 阿里巴巴集团控股有限公司 | 一种订阅消息的发送系统以及订阅消息的发送方法 |
CN102769668A (zh) * | 2012-07-02 | 2012-11-07 | 上海交通大学 | 基于近似匹配的发布/订阅负载均衡方法 |
CN103944924A (zh) * | 2014-05-15 | 2014-07-23 | 重庆邮电大学 | 一种基于RESTful的泛在网发布订阅中间件模型 |
CN106375462A (zh) * | 2016-09-13 | 2017-02-01 | 北京百度网讯科技有限公司 | 在分布式消息系统中实现消息持久化的方法及装置 |
CN108418894A (zh) * | 2018-03-26 | 2018-08-17 | 威创软件南京有限公司 | 一种基于push技术的分布式数据同步方法 |
CN110659124A (zh) * | 2018-06-28 | 2020-01-07 | 北京京东尚科信息技术有限公司 | 一种消息处理方法和装置 |
EP3703342A1 (en) * | 2019-03-01 | 2020-09-02 | ABB Schweiz AG | Dynamic load balancing in network centric process control systems |
CN111787066A (zh) * | 2020-06-06 | 2020-10-16 | 王科特 | 一种基于大数据、ai的物联网数据平台 |
CN111770172A (zh) * | 2020-06-29 | 2020-10-13 | 深圳前海微众银行股份有限公司 | 消息中间件消费代理方法、装置、代理服务器及存储介质 |
CN111913837A (zh) * | 2020-08-17 | 2020-11-10 | 普元信息技术股份有限公司 | 大数据环境下实现分布式中间件消息恢复策略管理的系统 |
Non-Patent Citations (2)
Title |
---|
刘耀;金跃辉;崔毅东;: "发布订阅系统中高效消息投递机制的研究", 网络新媒体技术, no. 01 * |
王郑合;王锋;邓辉;柳翠寅;张晓丽;: "一种优化的Kafka消费者/客户端负载均衡算法", 计算机应用研究, no. 08 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113347238A (zh) * | 2021-05-26 | 2021-09-03 | 湖南大学 | 基于区块链的消息分区方法及系统、设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112328404B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160335123A1 (en) | Dynamically modifying program execution capacity | |
AU2016229135A1 (en) | Opportunistic resource migration to optimize resource placement | |
CN112437018A (zh) | 分布式集群的流量控制方法、装置、设备和存储介质 | |
CN111913670B (zh) | 负载均衡的处理方法、装置、电子设备及存储介质 | |
US10366110B2 (en) | Load balancing for multi-tiered querying | |
CN112181683A (zh) | 消息中间件的并发消费方法以及装置 | |
CN107317764B (zh) | 流量负载均衡方法、系统、装置和计算机可读存储介质 | |
CN111090691B (zh) | 一种数据处理方法、装置、电子设备和存储介质 | |
CN114356547B (zh) | 基于处理器虚拟化环境的低优阻塞方法及装置 | |
CN113364877B (zh) | 数据处理方法、装置、电子设备和介质 | |
EP3972222B1 (en) | Method, apparatus, electronic device, readable storage medium and program for adjusting instance number | |
CN112084173A (zh) | 数据迁移方法和装置及存储介质 | |
CN112328404B (zh) | 负载均衡方法及装置、电子设备、计算机可读介质 | |
CN116057507A (zh) | 存储级负载平衡 | |
EP1546872B1 (en) | A key event controlling apparatus | |
CN112118314A (zh) | 负载均衡方法和装置 | |
EP2472416A1 (en) | Data query system and constructing method thereof and corresponding data query method | |
JP7307766B2 (ja) | トラフィック調整方法、装置、電子機器、コンピュータ可読記録媒体及びコンピュータプログラム | |
CN113641688A (zh) | 节点更新方法、相关装置及计算机程序产品 | |
CN111752695A (zh) | 下线方法、装置、设备以及存储介质 | |
CN115086300B (zh) | 一种视频文件调度方法和装置 | |
US11048554B1 (en) | Correlated volume placement in a distributed block storage service | |
CN113608870A (zh) | 消息队列的负载均衡方法及装置、电子设备及存储介质 | |
CN113918329A (zh) | 信息展示方法和装置 | |
CN114116190A (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 |