CN106210101B - 消息管理系统及消息管理方法 - Google Patents
消息管理系统及消息管理方法 Download PDFInfo
- Publication number
- CN106210101B CN106210101B CN201610574422.9A CN201610574422A CN106210101B CN 106210101 B CN106210101 B CN 106210101B CN 201610574422 A CN201610574422 A CN 201610574422A CN 106210101 B CN106210101 B CN 106210101B
- Authority
- CN
- China
- Prior art keywords
- message
- resource
- message server
- server
- module
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种消息管理系统及消息管理方法,消息管理系统包括消息本地持久化模块、消息服务器资源封装模块以及资源管理模块;所述消息本地持久化模块用于保存待发送的消息,并设置消息的进入和取出顺序;所述消息服务器资源封装模块用于封装不同类型的消息服务器,并将消息服务器抽象成资源,并为消息服务器提供用于发送消息的统一对外接口;所述资源管理模块用于管理封装好的资源,按照预设策略选择消息服务器资源进行使用。本发明不需要服务器端支持就可以实现消息服务器集群,并且可以支持同时使用不同类型的消息服务器,只需要通过简单的代码或配置就可以提高应用的吞吐量,保证互联网应用的稳定性。
Description
技术领域
本发明涉及一种消息管理系统及消息管理方法。
背景技术
消息(Messaging)是现在系统间集成的主要方式,在互联网公司内主要使用的开源消息服务产品有RabbitMQ和Kafka,这两者提供的生产者客户端都能满足消息发送给服务器的功能,同时又有不错的性能,但是他们提供的客户端只能连接一个服务器集群。当出现以下情况时,没有简便的解决方法:1、当集群性能不能满足时,扩容不方便,需要生产者应用编写额外的代码;2、当集群性能波动或宕机时,服务也将受影响。互联网应用对服务的性能和可用性都有非常高的要求,当性能不足时需要能快速添加服务器以提升整体性能,系统不稳定时需要有降级和故障恢复的手段保证稳定性。而RabbitMQ和Kafka提供的客户端实现显然没法满足这些要求。
发明内容
本发明要解决的技术问题是为了克服现有技术中开源消息服务产品提供的客户端只能连接一个服务器集群,导致无法满足要求的缺陷,提供一种消息管理系统及消息管理方法,本发明提供了一种连接多个不同消息服务器集群,并将其视为一个逻辑集群的消息生产者客户端实现方法。
本发明是通过下述技术方案来解决上述技术问题的:
本发明提供了一种消息管理系统,其特点在于,包括消息本地持久化模块、消息服务器资源封装模块以及资源管理模块;
所述消息本地持久化模块用于保存待发送的消息,并设置消息的进入和取出顺序;
所述消息服务器资源封装模块用于封装不同类型的消息服务器,并将消息服务器抽象成资源,并为消息服务器提供用于发送消息的统一对外接口;
所述资源管理模块用于管理封装好的资源,按照预设策略选择消息服务器资源进行使用。
较佳地,所述消息本地持久化模块用于将消息保存到本地的内存映射文件,并设置消息的进入和取出顺序为先进先出。
较佳地,所述资源管理模块包括资源选择策略单元,用于为消息服务器集群设置所述预设策略,所述预设策略包括随机选择、轮询选择、按照最小响应时间进行选择、按照最小压力进行选择、按照哈希策略进行选择中的至少一种。
较佳地,所述资源管理模块还包括资源检测单元,用于对所有的消息服务器资源进行心跳检测,并根据心跳检测结果对消息服务器的资源状态进行设置。
较佳地,所述资源检测单元用于当心跳检测结果为可用时,将被检测的消息服务器资源的状态标记为可用状态;当心跳检测结果为不可用时,将被检测的消息服务器资源的状态标记为不可用状态。
较佳地,所述资源检测单元用于对所有的消息服务器资源定时进行心跳检测。
本发明的目的在于还提供了一种消息管理方法,其特点在于,包括以下步骤:
客户端载入所有已封装的消息服务器资源,标记所有消息服务器资源的状态为可用状态;
客户端启动心跳检测线程和本地队列消费线程;
使用客户端发送消息,客户端将消息保存到本地持久化队列中;
定时对所有的消息服务器资源进行心跳检测,当心跳检测结果为可用时,将被检测的消息服务器资源的状态标记为可用状态;当心跳检测结果为不可用时,将被检测的消息服务器资源的状态标记为不可用状态;
本地队列消费线程获取持久化的消息,执行资源选择策略获取可用状态的消息服务器资源,然后利用获取的消息服务器资源执行发送消息的操作。
本发明的积极进步效果在于:本发明不需要服务器端支持就可以实现消息服务器集群,并且可以支持同时使用不同类型的消息服务器,只需要通过简单的代码或配置就可以提高应用的吞吐量,保证互联网应用的稳定性。
附图说明
图1为本发明的较佳实施例的消息管理系统的模块示意图。
图2为本发明的较佳实施例的消息管理方法的流程图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
如图1所示,本发明的消息管理系统包括消息本地持久化模块1、消息服务器资源封装模块2以及资源管理模块3。
其中,所述消息本地持久化模块1用于保存待发送的消息,并设置消息的进入和取出顺序,从而保证消息取出的顺序符合消息进入的顺序;
具体地,所述消息本地持久化模块1会将消息保存到本地的内存映射文件,并实现队列接口,保证消息的进入取出顺序为先进先出。
所述消息服务器资源封装模块2用于封装不同类型的消息服务器,并将消息服务器抽象成资源,并为消息服务器提供用于发送消息的统一对外接口;同时还通过暴露消息路由参数,实现消息路由功能:RabbitMQ的路由使用routing key(一种消息路由),Kafka的路由使用partition key(一种消息路由)。
所述资源管理模块3用于管理封装好的资源,按照预设策略选择消息服务器资源进行使用。所述资源管理模块3为已封装的消息服务器资源提供客户端集群功能,维护消息服务器的状态列表,为客户端请求选择可用的消息服务器资源。
所述资源管理模块3包括资源选择策略单元31和资源检测单元32,所述资源选择策略单元31用于为消息服务器集群设置预设策略(即资源选择策略),所述预设策略包括随机选择、轮询选择、按照最小响应时间进行选择、按照最小压力进行选择、按照哈希策略进行选择中的至少一种;所述资源检测单元32用于对所有的消息服务器资源定时进行心跳检测,并根据心跳检测结果对消息服务器的资源状态进行设置,当心跳检测结果为可用时,将被检测的消息服务器资源的状态标记为可用状态;当心跳检测结果为不可用时,将被检测的消息服务器资源的状态标记为不可用状态。
如图2所示,本发明的消息管理方法利用上述的消息管理系统实现,包括以下步骤:
步骤101、客户端载入所有已封装的消息服务器资源,标记所有消息服务器资源的状态为可用状态;
步骤102、客户端启动心跳检测线程和本地队列消费线程;
步骤103、使用客户端发送消息,客户端将消息保存到本地持久化队列中;
步骤104、定时对所有的消息服务器资源进行心跳检测,当心跳检测结果为可用时,将被检测的消息服务器资源的状态标记为可用状态;当心跳检测结果为不可用时,将被检测的消息服务器资源的状态标记为不可用状态;如果心跳检测结果是未知状态,则会在某次消息发送时,尝试使用被检测的消息服务器资源;
步骤105、本地队列消费线程获取持久化的消息,执行资源选择策略获取可用状态的消息服务器资源,然后利用获取的消息服务器资源执行发送消息的操作;
发送成功时,直接返回;发送失败时,则将获取的消息服务器资源标记为不可用状态,退出消息服务器资源选择。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (7)
1.一种消息管理系统,其特征在于,包括消息本地持久化模块、消息服务器资源封装模块以及资源管理模块;
所述消息本地持久化模块用于保存待发送的消息,并设置消息的进入和取出顺序;
所述消息服务器资源封装模块用于封装不同类型的消息服务器,并将消息服务器抽象成资源,并为消息服务器提供用于发送消息的统一对外接口;
所述资源管理模块用于管理封装好的资源,按照预设策略选择消息服务器资源进行使用。
2.如权利要求1所述的消息管理系统,其特征在于,所述消息本地持久化模块用于将消息保存到本地的内存映射文件,并设置消息的进入和取出顺序为先进先出。
3.如权利要求1所述的消息管理系统,其特征在于,所述资源管理模块包括资源选择策略单元,用于为消息服务器集群设置所述预设策略,所述预设策略包括随机选择、轮询选择、按照最小响应时间进行选择、按照最小压力进行选择、按照哈希策略进行选择中的至少一种。
4.如权利要求3所述的消息管理系统,其特征在于,所述资源管理模块还包括资源检测单元,用于对所有的消息服务器资源进行心跳检测,并根据心跳检测结果对消息服务器的资源状态进行设置。
5.如权利要求4所述的消息管理系统,其特征在于,所述资源检测单元用于当心跳检测结果为可用时,将被检测的消息服务器资源的状态标记为可用状态;当心跳检测结果为不可用时,将被检测的消息服务器资源的状态标记为不可用状态。
6.如权利要求4所述的消息管理系统,其特征在于,所述资源检测单元用于对所有的消息服务器资源定时进行心跳检测。
7.一种消息管理方法,其特征在于,包括以下步骤:
客户端载入所有已封装的消息服务器资源,标记所有消息服务器资源的状态为可用状态;
客户端启动心跳检测线程和本地队列消费线程;
使用客户端发送消息,客户端将消息保存到本地持久化队列中;
定时对所有的消息服务器资源进行心跳检测,当心跳检测结果为可用时,将被检测的消息服务器资源的状态标记为可用状态;当心跳检测结果为不可用时,将被检测的消息服务器资源的状态标记为不可用状态;
本地队列消费线程获取持久化的消息,执行资源选择策略获取可用状态的消息服务器资源,然后利用获取的消息服务器资源执行发送消息的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610574422.9A CN106210101B (zh) | 2016-07-20 | 2016-07-20 | 消息管理系统及消息管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610574422.9A CN106210101B (zh) | 2016-07-20 | 2016-07-20 | 消息管理系统及消息管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106210101A CN106210101A (zh) | 2016-12-07 |
CN106210101B true CN106210101B (zh) | 2019-06-18 |
Family
ID=57494541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610574422.9A Active CN106210101B (zh) | 2016-07-20 | 2016-07-20 | 消息管理系统及消息管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106210101B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108897607A (zh) * | 2018-06-05 | 2018-11-27 | 中国平安人寿保险股份有限公司 | 消息处理方法、装置、电子设备及存储介质 |
CN109408249A (zh) * | 2018-09-17 | 2019-03-01 | 中国建设银行股份有限公司 | 数据同步传输方法、系统、装置和存储介质 |
CN112087373B (zh) * | 2020-09-21 | 2022-05-13 | 全通金信控股(广东)有限公司 | 一种消息发送方法及业务装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101068243A (zh) * | 2007-04-12 | 2007-11-07 | 北京邮电大学 | 处理网关层与业务层的消息交互系统以及发送、接收方法 |
CN101326508A (zh) * | 2005-01-06 | 2008-12-17 | 特维拉有限公司 | 智能消息传递应用编程接口 |
CN101459676A (zh) * | 2008-12-31 | 2009-06-17 | 中国科学院计算技术研究所 | 针对文件系统的基于高速网络的消息传输框架和方法 |
CN101764836A (zh) * | 2008-12-23 | 2010-06-30 | 北京大学深圳研究生院 | 分布式心跳服务器架构及其进程处理方法 |
CN101867558A (zh) * | 2009-04-17 | 2010-10-20 | 深圳市永达电子股份有限公司 | 用户态网络协议栈系统及处理报文的方法 |
CN102202102A (zh) * | 2011-07-05 | 2011-09-28 | 施昊 | 基于云计算架构的网络服务聚合系统及其聚合方法 |
CN105610888A (zh) * | 2015-09-08 | 2016-05-25 | 华南师范大学 | 基于安卓的利用socket推送消息的方法和系统 |
-
2016
- 2016-07-20 CN CN201610574422.9A patent/CN106210101B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101326508A (zh) * | 2005-01-06 | 2008-12-17 | 特维拉有限公司 | 智能消息传递应用编程接口 |
CN101068243A (zh) * | 2007-04-12 | 2007-11-07 | 北京邮电大学 | 处理网关层与业务层的消息交互系统以及发送、接收方法 |
CN101764836A (zh) * | 2008-12-23 | 2010-06-30 | 北京大学深圳研究生院 | 分布式心跳服务器架构及其进程处理方法 |
CN101459676A (zh) * | 2008-12-31 | 2009-06-17 | 中国科学院计算技术研究所 | 针对文件系统的基于高速网络的消息传输框架和方法 |
CN101867558A (zh) * | 2009-04-17 | 2010-10-20 | 深圳市永达电子股份有限公司 | 用户态网络协议栈系统及处理报文的方法 |
CN102202102A (zh) * | 2011-07-05 | 2011-09-28 | 施昊 | 基于云计算架构的网络服务聚合系统及其聚合方法 |
CN105610888A (zh) * | 2015-09-08 | 2016-05-25 | 华南师范大学 | 基于安卓的利用socket推送消息的方法和系统 |
Non-Patent Citations (1)
Title |
---|
基于高可用性负载均衡的Web 票务平台研究;覃伟,何新华;《计算机工程与设计》;20091231;第5321-5324页 |
Also Published As
Publication number | Publication date |
---|---|
CN106210101A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590072B (zh) | 一种应用开发和测试的方法和装置 | |
CN108039964B (zh) | 基于网络功能虚拟化的故障处理方法及装置、系统 | |
CN106357449A (zh) | 一种zedis分布式缓存方法 | |
CN106210101B (zh) | 消息管理系统及消息管理方法 | |
CN103475544A (zh) | 一种基于云资源监控平台的业务监控方法 | |
CN106656863A (zh) | 业务监控方法、装置和计算机设备 | |
CN111427694A (zh) | 任务执行方法、装置、系统和服务器 | |
WO2023030417A1 (zh) | 报文处理方法、设备、存储介质及计算机程序产品 | |
CN111835562B (zh) | 日志上传方法、日志查询方法、系统 | |
CN106982244B (zh) | 在云网络环境下实现动态流量的报文镜像的方法和装置 | |
CN113900834B (zh) | 基于物联网技术的数据处理方法、装置、设备及存储介质 | |
CN114884838A (zh) | Kubernetes组件的监控方法及服务器 | |
CN113452607A (zh) | 分布式链路采集的方法、装置、计算设备和存储介质 | |
CN110138753B (zh) | 分布式消息服务系统、方法、设备及计算机可读存储介质 | |
WO2016149945A1 (zh) | 一种生命周期事件的处理方法及vnfm | |
CN111190875A (zh) | 基于容器平台的日志聚合方法及装置 | |
CN103810038A (zh) | 一种ha集群中虚拟机存储文件迁移方法及其装置 | |
CN104025628A (zh) | 网络系统、节点装置组、传感器装置组及传感器数据收发方法 | |
CN108241616B (zh) | 消息推送方法和装置 | |
CN109257230A (zh) | 一种半导体存储器老化测试的日志管理系统及方法 | |
US11544091B2 (en) | Determining and implementing recovery actions for containers to recover the containers from failures | |
CN115883330B (zh) | 告警事件处理方法、系统、设备及存储介质 | |
CN111427674A (zh) | 一种微服务管理方法、装置及系统 | |
CN109245927A (zh) | 云数据系统中的告警系统和方法 | |
CN104754328B (zh) | 一种分布式视频质量诊断方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |