CN114422333A - 基于消息中间件背压的消息消费的方法和系统 - Google Patents
基于消息中间件背压的消息消费的方法和系统 Download PDFInfo
- Publication number
- CN114422333A CN114422333A CN202111609629.2A CN202111609629A CN114422333A CN 114422333 A CN114422333 A CN 114422333A CN 202111609629 A CN202111609629 A CN 202111609629A CN 114422333 A CN114422333 A CN 114422333A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- node
- processing
- backpressure
- 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
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 69
- 238000012544 monitoring process Methods 0.000 claims abstract description 25
- 230000002159 abnormal effect Effects 0.000 claims abstract description 11
- 238000012546 transfer Methods 0.000 claims abstract description 7
- 230000000977 initiatory effect Effects 0.000 claims abstract description 4
- 238000013508 migration Methods 0.000 claims description 3
- 230000005012 migration Effects 0.000 claims description 3
- 230000001172 regenerating effect Effects 0.000 claims description 3
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
Abstract
本发明公开了一种基于消息中间件背压的消息消费的方法和系统。所述系统包括:注册中心、接入网关和消息处理节点;所述注册中心,用于负责监听消息处理节点运行状态,节点异常时负责故障转移工作触发;所述接入网关,用于通过网关接口发起队列创建工作与发起监听线程创建工作;所述消息处理节点,用于负责消息处理工作以及缓存处理。该方法采用了动态创建队列并主动拉取消息的模式,既能保证当前场景要求,也能起到背压的处理方式,保证了应用容器运行的负载安全。
Description
技术领域
本发明属于物联网通信技术领域,具体涉及一种基于消息中间件背压的消息消费的方法和系统。
背景技术
随着互联网技术和物联网技术应用的发展,越来越多的应用场景需要将消息处理推送到第三方中间件以保证应用负载安全,因此消息中间件得到了广泛的应用。但是在现有消息中间件中,若希望保证消息消费的有序行,则需要保证消费端进行单线程消费,只能被一个客户端监听,若在消息处理时间较长的情况下,会出现全局阻塞的情况,这种情况是无法忍受的。而另一种处理方式为创建多队列,通过消息标识来分发到各个消息分区,每个分区对应一个线程消费,这种预配置的方式也存在不好动态扩容的问题,并且如果配置分区过多也可能导致服务器过负载的情况。所以单纯依赖消息中间件并不能很好实现消息单队列串行,多队列并行的处理模式。
中国发明专利CN201910938392.9,公开了一种消息队列的动态调度方法及装置,首先建立多组消息队列,按QoS级别对所述多组消息队列进行排序,并生成排序列表,接着获取报文的QoS级别,根据所述报文的QoS级别确定其所属的消息队列,进而对同一消息队列中的报文按时间顺序进行排序,并根据剩余空间对多组所述消息队列进行处理,本发明提高了数据处理的时效性。但是当消息队列过多会导致服务器出现背压现象。
中国发明专利CN202010115853.5,公开了一种消息处理方法,装置,计算机设备及存储介质,属于物联网技术领域。所述方法包括:接收消息生产者发送的第一消息;将第一消息存储至目标消息队列对应的消息文件中;获取目标消息队列对应的删除策略;根据所述删除策略,对目标消息队列对应的消息文件进行删除。本申请实施例提供的技术方案中,避免了因文件堆积而造成的文件占用空间太大的问题,节省消息中间件的存储空间,减少了消息中间件的处理开销,有效地避免了因清除缓存而造成的文件丢失,保证了消息消费者充分使用消息;删除策略可动态配置,提高了消息中间件进行文件删除时的灵活性和自由度。但是在增加处理节点时会影响整个运行状态。
发明内容
本发明针对现有技术的不足,提供基于消息中间件背压的消息消费的方法和系统,该方法采用了动态创建队列并主动拉取消息的模式,既能保证当前场景要求,也能起到背压的处理方式,保证了应用容器运行的负载安全。
为了实现上述目的,本发明采用了以下技术方案:
一种基于消息中间件背压的消息消费的系统,包括:注册中心、接入网关和消息处理节点。所述注册中心,用于负责监听消息处理节点运行状态,节点异常时负责故障转移工作触发。所述接入网关,用于通过网关接口发起队列创建工作与发起监听线程创建工作。所述消息处理节点,用于负责消息处理工作以及缓存处理。
一种基于消息中间件背压的消息消费的方法,使用上述系统,包括:
(1)设备接入;
(2)消息处理;
(3)消息节点异常处理。
本发明的进一步说明,所述设备接入具体为:
步骤11)设备接入到接入网关并判断连接情况;
步骤12)接入网关根据缓存的节点接入设备数据负载,发出请求;
步骤13)消息处理节点接收到接入网关的请求后,根据设备唯一标识动态创建队列;
步骤14)将该队列接入消息处理节点内置的监听池;
步骤15)将监听池中的节点信息缓存到分布式缓存中。
本发明的进一步说明,所述消息处理具体为:
步骤21)消息处理节点启动时,根据配置文件配置的消费任务池大小创建一个任务处理线程池,并且会创建一个全局的监听池,而后启动消息拉取线程;
步骤22)根据任务处理线程池是否有余量,启动消息拉取程序;
步骤23)根据监听池中的队列数据,循环拉取池中队列的数据;
步骤24)先根据当前循环到的队列,判断缓存中该队列的处理锁是否被锁定,如果被锁定则表名该消息正在被任务线程处理,不继续拉取队列数据,结束当前队列拉取流程重新回到步骤23);若该队列未被锁,则执行步骤25);
步骤25)尝试拉取数据,如果能获取到数据,则执行步骤26);若无法获取到数据,则重新回到步骤23),往下一个队列执行;
步骤26)在缓存中锁上该队列,并获取一个任务线程处理消息;然后回到步骤22)继续判断是否有余量;
步骤27)任务处理线程处理完消息之后,解锁该队列。
本发明的进一步说明,所述消息节点异常处理具体为:
步骤31)注册中心探测到某消息节点异常离线,则主动向接入网关推送故障处理申请;
步骤32)接入网关接受到请求后,通过缓存获取到异常节点分配的队列列表,然后删除该节点缓存中的关系,并开始执行故障转移工作;
步骤33)重新调用无节点分配的队列监听创建接口,根据接入网关负载均衡策略重新下发到正常的消息处理节点中,重新在缓存中生成节点与队列的关系,完成监听迁移工作。
本发明的进一步说明,所述动态创建队列在必要时可以先删除队列再创建。
本发明具有以下有益效果:
1、本发明内部实现了解决背压的机制,不会因为瞬时的指令爆发导致服务器崩溃。
2、本发明动态创建动态监听,不需要进行额外的配置工作。
3、本发明具备异常处理方案,节点异常时,服务会自动将监听节点的队列进行迁移,不需要人工触发。
附图说明
图1为接入流程图。
图2为消息处理流程图。
图3为异常处理流程图。
具体实施方式
下面结合附图对本发明作进一步说明。
实施例1:
一种基于消息中间件背压的消息消费的系统,包括:注册中心、接入网关和消息处理节点;所述注册中心,用于负责监听消息处理节点运行状态,节点异常时负责故障转移工作触发;所述接入网关,用于通过网关接口发起队列创建工作与发起监听线程创建工作;所述消息处理节点,用于负责消息处理工作以及缓存处理。
实施例2:
使用实施例1的所述系统,实现基于消息中间件背压的消息消费的方法,包括:
(1)设备接入;
具体工作流程如图1所示:
步骤11)设备接入到接入网关并判断连接情况;
步骤12)接入网关根据缓存的节点接入设备数据负载,发出请求;
步骤13)消息处理节点接收到接入网关的请求后,根据设备唯一标识动态创建队列;
步骤14)将该队列接入消息处理节点内置的监听池;
步骤15)将监听池中的节点信息缓存到分布式缓存中。
(2)消息处理;
具体工作流程如图2所示:
步骤21)消息处理节点启动时,根据配置文件配置的消费任务池大小创建一个任务处理线程池,并且会创建一个全局的监听池,而后启动消息拉取线程;
步骤22)根据任务处理线程池是否有余量,启动消息拉取程序;
步骤23)根据监听池中的队列数据,循环拉取池中队列的数据;
步骤24)先根据当前循环到的队列,判断缓存中该队列的处理锁是否被锁定,如果被锁定则表名该消息正在被任务线程处理,不继续拉取队列数据,结束当前队列拉取流程重新回到步骤23);若该队列未被锁,则执行步骤25);
步骤25)尝试拉取数据,如果能获取到数据,则执行步骤26);若无法获取到数据,则重新回到步骤23),往下一个队列执行;
步骤26)在缓存中锁上该队列,并获取一个任务线程处理消息;然后回到步骤22)继续判断是否有余量;
步骤27)任务处理线程处理完消息之后,解锁该队列。
(3)消息节点异常处理;
具体工作流程如图3所示:
步骤31)注册中心探测到某消息节点异常离线,则主动向接入网关推送故障处理申请;
步骤32)接入网关接受到请求后,通过缓存获取到异常节点分配的队列列表,然后删除该节点缓存中的关系,并开始执行故障转移工作;
步骤33)重新调用无节点分配的队列监听创建接口,根据接入网关负载均衡策略重新下发到正常的消息处理节点中,重新在缓存中生成节点与队列的关系,完成监听迁移工作。
在上述实施例中,所述动态创建队列在必要时可以先删除队列再创建。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。
Claims (6)
1.一种基于消息中间件背压的消息消费的系统,其特征在于包括:注册中心、接入网关和消息处理节点;
所述注册中心,用于负责监听消息处理节点运行状态,节点异常时负责故障转移工作触发;
所述接入网关,用于通过网关接口发起队列创建工作与发起监听线程创建工作;
所述消息处理节点,用于负责消息处理工作以及缓存处理。
2.一种基于消息中间件背压的消息消费的方法,使用如权利要求1所述系统,其特征在于包括:
(1)设备接入;
(2)消息处理;
(3)消息节点异常处理。
3.根据权利要求2所述的基于消息中间件背压的消息消费的方法,其特征在于:所述设备接入具体为:
步骤11)设备接入到接入网关并判断连接情况;
步骤12)接入网关根据缓存的节点接入设备数据负载,发出请求;
步骤13)消息处理节点接收到接入网关的请求后,根据设备唯一标识动态创建队列;
步骤14)将该队列接入消息处理节点内置的监听池;
步骤15)将监听池中的节点信息缓存到分布式缓存中。
4.根据权利要求3所述的基于消息中间件背压的消息消费的方法,其特征在于:所述消息处理具体为:
步骤21)消息处理节点启动时,根据配置文件配置的消费任务池大小创建一个任务处理线程池,并且会创建一个全局的监听池,而后启动消息拉取线程;
步骤22)根据任务处理线程池是否有余量,启动消息拉取程序;
步骤23)根据监听池中的队列数据,循环拉取池中队列的数据;
步骤24)先根据当前循环到的队列,判断缓存中该队列的处理锁是否被锁定,如果被锁定则表明该消息正在被任务线程处理,不继续拉取队列数据,结束当前队列拉取流程重新回到步骤23);若该队列未被锁,则执行步骤25);
步骤25)尝试拉取数据,如果能获取到数据,则执行步骤26);若无法获取到数据,则重新回到步骤23),往下一个队列执行;
步骤26)在缓存中锁上该队列,并获取一个任务线程处理消息;然后回到步骤22)继续判断是否有余量;
步骤27)任务处理线程处理完消息之后,解锁该队列。
5.根据权利要求4所述的基于消息中间件背压的消息消费的方法,其特征在于;所述消息节点异常处理具体为:
步骤31)注册中心探测到某消息节点异常离线,则主动向接入网关推送故障处理申请;
步骤32)接入网关接受到请求后,通过缓存获取到异常节点分配的队列列表,然后删除该节点缓存中的关系,并开始执行故障转移工作;
步骤33)重新调用无节点分配的队列监听创建接口,根据接入网关负载均衡策略重新下发到正常的消息处理节点中,重新在缓存中生成节点与队列的关系,完成监听迁移工作。
6.根据权利要求5所述的基于消息中间件背压的消息消费的方法,其特征在于:所述动态创建队列在必要时可以先删除队列再创建。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111609629.2A CN114422333B (zh) | 2021-12-27 | 2021-12-27 | 基于消息中间件背压的消息消费的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111609629.2A CN114422333B (zh) | 2021-12-27 | 2021-12-27 | 基于消息中间件背压的消息消费的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114422333A true CN114422333A (zh) | 2022-04-29 |
CN114422333B CN114422333B (zh) | 2023-11-10 |
Family
ID=81270461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111609629.2A Active CN114422333B (zh) | 2021-12-27 | 2021-12-27 | 基于消息中间件背压的消息消费的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114422333B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324539A (zh) * | 2013-06-24 | 2013-09-25 | 浪潮电子信息产业股份有限公司 | 一种作业调度管理系统及方法 |
US10313282B1 (en) * | 2016-10-20 | 2019-06-04 | Sprint Communications Company L.P. | Flexible middleware messaging system |
CN112865311A (zh) * | 2021-01-15 | 2021-05-28 | 北京科东电力控制系统有限责任公司 | 一种电力系统消息总线监视方法和装置 |
-
2021
- 2021-12-27 CN CN202111609629.2A patent/CN114422333B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324539A (zh) * | 2013-06-24 | 2013-09-25 | 浪潮电子信息产业股份有限公司 | 一种作业调度管理系统及方法 |
US10313282B1 (en) * | 2016-10-20 | 2019-06-04 | Sprint Communications Company L.P. | Flexible middleware messaging system |
CN112865311A (zh) * | 2021-01-15 | 2021-05-28 | 北京科东电力控制系统有限责任公司 | 一种电力系统消息总线监视方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114422333B (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108134814B (zh) | 一种业务数据处理方法及装置 | |
CN102263822B (zh) | 一种分布式缓存的控制方法、系统及装置 | |
US8190857B2 (en) | Deleting a shared resource node after reserving its identifier in delete pending queue until deletion condition is met to allow continued access for currently accessing processor | |
CN112099962B (zh) | 分布式锁实现方法、装置和电子设备 | |
CN112383585A (zh) | 消息处理系统、方法及电子设备 | |
CN111552543A (zh) | 容器管控方法及处理节点 | |
CN110868323B (zh) | 一种带宽控制方法、装置、设备及介质 | |
WO2020252724A1 (zh) | 日志处理方法、设备及计算机可读存储介质 | |
CN114422333A (zh) | 基于消息中间件背压的消息消费的方法和系统 | |
CN112416594A (zh) | 一种微服务分配方法、电子设备和计算机存储介质 | |
US20150169367A1 (en) | System and method for supporting adaptive busy wait in a computing environment | |
CN109522113B (zh) | 一种内存管理方法及装置 | |
CN113515458B (zh) | 基于Envoy插件降低测试环境资源消耗的方法及系统 | |
CN113076187A (zh) | 分布式锁管理方法及装置 | |
CN114900449B (zh) | 一种资源信息管理方法、系统及装置 | |
CN116095073A (zh) | 一种基于时效分级的云桌面消息处理系统及方法 | |
CN111857992B (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
US7068604B2 (en) | Managing memory resident queues to control resources of the systems using the queues | |
CN114564153A (zh) | 一种卷映射解除方法、装置、设备和存储介质 | |
JP2008186358A (ja) | データベースアクセスシステムおよびデータベースアクセス方法ならびにプログラム | |
CN113342511A (zh) | 一种分布式任务管理系统及方法 | |
CN114679412B (zh) | 一种流量向业务节点的转发方法、装置、设备及介质 | |
CN117290075B (zh) | 进程迁移方法、系统、装置、通信设备及存储介质 | |
CN109766172B (zh) | 一种异步任务调度方法以及装置 | |
CN116896501A (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 |