CN115242671A - 一种基于redis的消息监听方法 - Google Patents
一种基于redis的消息监听方法 Download PDFInfo
- Publication number
- CN115242671A CN115242671A CN202210783043.6A CN202210783043A CN115242671A CN 115242671 A CN115242671 A CN 115242671A CN 202210783043 A CN202210783043 A CN 202210783043A CN 115242671 A CN115242671 A CN 115242671A
- Authority
- CN
- China
- Prior art keywords
- state information
- message
- redis
- name
- thread
- 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
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 34
- 238000000034 method Methods 0.000 title claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 12
- 238000005316 response function Methods 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims abstract description 7
- 230000008878 coupling Effects 0.000 abstract description 4
- 238000010168 coupling process Methods 0.000 abstract description 4
- 238000005859 coupling reaction Methods 0.000 abstract description 4
- 238000004891 communication Methods 0.000 abstract description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
Landscapes
- Engineering & Computer Science (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种基于redis的消息监听方法,包括:状态信息命名线程以键值对的形式将系统的状态信息存入redis数据库,所述键值对包括名称和操作;消息监听线程通过redis数据库提供的模式订阅功能,监听某类状态信息在redis数据库中的操作;消息缓存线程将消息监听线程监听到的状态信息的名称和操作存入一个先进先出的消息队列;消息获取和响应线程从消息队列中依次取出状态信息的名称和操作,根据操作的类型进入不同的响应函数,通过名称从redis数据库中获取具体的状态信息进行处理。本发明提供的一种基于redis的消息监听方法,支持分布式系统内各模块间松耦合通信、实时状态共享。
Description
技术领域
本发明属于通信技术领域,涉及一种基于redis的消息监听方法。
背景技术
分布式系统:包括多个节点(一般来说一个节点即一台计算机),且节点间互相连通(网络和消息传递),在这些连通的节点上部署了组件并且组件之间的操作互相连通,这样的一个系统可以认为是一个分布式系统。
复杂的分布式系统一般包含多个不同功能模块运行在不同硬件节点上,模块运行完成其能力时需要共享部分状态信息。
一般的共享方法是将状态信息直接发送给需要的模块,会导致功能模块间耦合,系统能力扩展不方便。
发明内容
为解决现有技术存在的难题,本发明提供了一种基于redis的消息监听方法,包括以下步骤:
状态信息命名线程以键值对的形式将系统的状态信息存入redis数据库,所述键值对包括名称和操作;
消息监听线程通过redis数据库提供的模式订阅功能,监听某类状态信息在redis数据库中的操作;
消息缓存线程将消息监听线程监听到的状态信息的名称和操作存入一个先进先出的消息队列;
消息获取和响应线程从消息队列中依次取出状态信息的名称和操作,根据操作的类型进入不同的响应函数,通过名称从redis数据库中获取具体的状态信息进行处理。
进一步地,状态信息命名线程对每类状态信息的名称进行命名,命名规则按照类型+频率的形式对状态信息进行分类。
进一步地,所述操作包括写入和删除两类。
进一步地,支持多个消息监听线程存入同一个消息队列。
进一步地,根据操作的类型进入不同的响应函数具体为:如果操作为写入,进入响应函数onSet,通过名称从redis数据库中获取具体的状态信息进行处理;如果操作为删除,进入响应函数onDelete。
本发明与现有技术相比,其有益效果如下:
1、本发明通过redis数据库实现数据的发布订阅,降低应用间数据的耦合,提升系统的可扩展性。
2、本发明通过消息队列实现消息的缓存,使得消息的监听和响应处理异步进行,不会因为处理影响监听性能;同时消息缓存支持多个监听线程写入监听结果,支持同一个应用监听多类状态信息,提升了系统设计的灵活性。
附图说明
图1为实施例一的基于redis的消息监听方法的流程图。
图2为实施例一的基于redis的消息监听方法的应用的示意图。
具体实施方式
下面结合实施例并参照附图对本发明作进一步详细描述。
实施例一:
本实施例提供了一种基于redis的消息监听方法,如图1和图2所示,包括以下步骤:
状态信息命名线程以键值对的形式将系统的状态信息存入redis数据库,所述键值对具体包括名称key和操作op,如节点信息以Node_作为前缀命名,应用信息以App_作为前缀命名。
状态信息命名线程对每类状态信息的名称进行命名,命名规则按照类型+频率的形式对产生自不同的模块、以及模块内信息产生的不同频率来分类,如产生自节点管理器的信息Node_*和应用管理器的信息App_*是按照模块来划分的;同一模块节点管理器的Node_*信息产生频率为每秒一次,HeartBeat_*信息产生频率为几十毫秒一次,是按照信息的产生频率划分的。两者结合起来形成的节点状态信息如“Node_[NodeIP]_*”来表示,这样设计的好处是使系统信息交互的逻辑更加高效可靠。
所述操作op包括写入(set)和删除(del)两类。
消息监听线程通过redis数据库提供的模式订阅功能,监听某类状态信息在redis数据库中的操作,包括写入(set)和删除(del)两类。
消息缓存线程将消息监听线程监听到的状态信息的名称key和操作op存入一个先进先出的消息队列,支持多个监听线程存入同一个消息队列,即支持同一个应用同时监听多类不同状态信息。
消息获取和响应线程,消息获取和响应线程从消息队列中依次取出状态信息的名称key和操作op,根据操作op的类型进入不同的响应函数,通过名称key从redis数据库中获取具体的状态信息进行处理。
如图2所示为一种基于redis的消息监听方法的应用实例。
被监听的应用按照状态信息命名规则将需要共享的状态信息命名后存入redis数据库;
需要监听该类状态的监听应用通过redis数据库提供的消息订阅功能完成对状态信息存入redis或从redis删除两类操作的监听,将监听到的信息存入消息缓存。一个消息监听一类状态信息;因此如监听应用需要监听多类状态信息,可重复执行消息监听线程,所监听到的状态信息都存入消息队列。
应用的消息获取和响应线程从消息队列中依次取出信息名称key和操作op,如操作为写入(set),进入响应函数onSet,通过信息名称key从redis数据库中获取具体的状态信息进行处理;如操作为删除(del),进入响应函数onDelete。
在实例中,节点监测模块和应用管理模块的状态信息命名线程分别将需要共享的节点态信息Node_1和应用信息App_1存入redis数据库。
调度器模块通过消息监听线程完成对节点(Node_*)和应用(App_*)两类信息在数据库中操作的监听,监听到的信息[Node_1,set]和[App_1,set]存入消息队列。
最后,调度器模块的消息获取和响应线程从消息队列中依次取出状态信息的名称key和操作op,进入响应函数onSet,从redis数据库中获取Node_1和App_1具体的状态信息进行处理。具体流程如图2所示。
本发明通过redis数据库实现数据的发布订阅,降低应用间数据的耦合,提升系统的可扩展性;本发明通过消息队列实现消息的缓存,使得消息的监听和响应处理异步进行,不会因为处理影响监听性能;同时消息缓存支持多个监听线程写入监听结果,支持同一个应用监听多类状态信息,提升了系统设计的灵活性。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于redis的消息监听方法,其特征在于,包括以下步骤:
状态信息命名线程以键值对的形式将系统的状态信息存入redis数据库,所述键值对包括名称和操作;
消息监听线程通过redis数据库提供的模式订阅功能,监听某类状态信息在redis数据库中的操作;
消息缓存线程将消息监听线程监听到的状态信息的名称和操作存入一个先进先出的消息队列;
消息获取和响应线程从消息队列中依次取出状态信息的名称和操作,根据操作的类型进入不同的响应函数,通过名称从redis数据库中获取具体的状态信息进行处理。
2.根据权利要求1所述的基于redis的消息监听方法,其特征在于,状态信息命名线程对每类状态信息的名称进行命名,命名规则按照类型+频率的形式对状态信息进行分类。
3.根据权利要求2所述的基于redis的消息监听方法,其特征在于,所述操作包括写入和删除两类。
4.根据权利要求3所述的基于redis的消息监听方法,其特征在于,支持多个消息监听线程存入同一个消息队列。
5.根据权利要求4所述的基于redis的消息监听方法,其特征在于,根据操作的类型进入不同的响应函数具体为:如果操作为写入,进入响应函数onSet,通过名称从redis数据库中获取具体的状态信息进行处理;如果操作为删除,进入响应函数onDelete。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210783043.6A CN115242671A (zh) | 2022-07-05 | 2022-07-05 | 一种基于redis的消息监听方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210783043.6A CN115242671A (zh) | 2022-07-05 | 2022-07-05 | 一种基于redis的消息监听方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115242671A true CN115242671A (zh) | 2022-10-25 |
Family
ID=83670671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210783043.6A Pending CN115242671A (zh) | 2022-07-05 | 2022-07-05 | 一种基于redis的消息监听方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115242671A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120198004A1 (en) * | 2011-02-02 | 2012-08-02 | Imvu, Inc. | System and method for managing multiple queues of non-persistent messages in a networked environment |
CN104253808A (zh) * | 2013-06-29 | 2014-12-31 | 北京新媒传信科技有限公司 | 即时通信系统中的状态呈现方法和状态呈现服务器 |
CN109800239A (zh) * | 2019-01-15 | 2019-05-24 | 科大国创软件股份有限公司 | 基于Redis的分布式架构数据共享方法 |
CN113626457A (zh) * | 2021-08-19 | 2021-11-09 | 福建天晴数码有限公司 | 缓存删除重试机制实现数据库与缓存一致性方法及系统 |
CN113867763A (zh) * | 2021-09-27 | 2021-12-31 | 苏州九宫数字科技有限公司 | 一种分布式配置更新管理的方法、系统及介质 |
CN114138807A (zh) * | 2021-12-06 | 2022-03-04 | 四三九九网络股份有限公司 | 一种实时更新数据库热点数据缓存的方法 |
CN114491338A (zh) * | 2022-01-04 | 2022-05-13 | 浪潮软件股份有限公司 | 一种基于redis实现消息实时性和持久化的方法及工具 |
-
2022
- 2022-07-05 CN CN202210783043.6A patent/CN115242671A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120198004A1 (en) * | 2011-02-02 | 2012-08-02 | Imvu, Inc. | System and method for managing multiple queues of non-persistent messages in a networked environment |
CN104253808A (zh) * | 2013-06-29 | 2014-12-31 | 北京新媒传信科技有限公司 | 即时通信系统中的状态呈现方法和状态呈现服务器 |
CN109800239A (zh) * | 2019-01-15 | 2019-05-24 | 科大国创软件股份有限公司 | 基于Redis的分布式架构数据共享方法 |
CN113626457A (zh) * | 2021-08-19 | 2021-11-09 | 福建天晴数码有限公司 | 缓存删除重试机制实现数据库与缓存一致性方法及系统 |
CN113867763A (zh) * | 2021-09-27 | 2021-12-31 | 苏州九宫数字科技有限公司 | 一种分布式配置更新管理的方法、系统及介质 |
CN114138807A (zh) * | 2021-12-06 | 2022-03-04 | 四三九九网络股份有限公司 | 一种实时更新数据库热点数据缓存的方法 |
CN114491338A (zh) * | 2022-01-04 | 2022-05-13 | 浪潮软件股份有限公司 | 一种基于redis实现消息实时性和持久化的方法及工具 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11695830B1 (en) | Multi-threaded processing of search responses | |
CN110502494B (zh) | 日志处理方法、装置、计算机设备及存储介质 | |
US11184467B2 (en) | Multi-thread processing of messages | |
US8175862B1 (en) | Model-based systems and methods for monitoring resources | |
US11945337B2 (en) | System and method for vehicle battery management, storage medium, and server system | |
CN112612577B (zh) | 一种大规模K8s集群监控的方法、装置、设备及可读介质 | |
CN113590437B (zh) | 一种告警信息处理方法、装置、设备和介质 | |
CN114490251A (zh) | 日志处理系统、日志处理方法及终端设备 | |
CN113626869B (zh) | 数据处理方法、系统、电子设备以及存储介质 | |
CN111161818A (zh) | 一种基于大数据技术的医疗数据交换共享系统及方法 | |
US9544214B2 (en) | System and method for optimized event monitoring in a management environment | |
CN106446289A (zh) | 基于Pinpoint的信息查询方法和装置 | |
CN115242671A (zh) | 一种基于redis的消息监听方法 | |
CN117076426A (zh) | 基于流批一体化的交通智能引擎系统构建方法及装置 | |
CN116016117A (zh) | 网络设备运维数据采集方法、系统、电子设备及存储介质 | |
CN114756301B (zh) | 日志处理方法、装置和系统 | |
CN116431324A (zh) | 一种基于Kafka高并发数据采集与分发的边缘系统 | |
CN115809179A (zh) | 基于应用性能数据的告警方法、系统、设备和存储介质 | |
EP3793171B1 (en) | Message processing method, apparatus, and system | |
CN113268642A (zh) | 一种实现物联设备数据精细化存取的方法 | |
CN114064617A (zh) | 数据获取方法、装置、设备及计算机存储介质 | |
Zhou et al. | NISU: a novel index structure on uncertain data in large-scale publish/subscribe systems | |
CN118413546A (zh) | 基于物联网的数据管理系统 | |
CN117033130A (zh) | 基于分布式架构的集群数据监控方法、装置及系统 | |
CN117614999A (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: 20221025 |