消息管理系统及消息管理方法与流程

文档序号:11960460阅读:806来源:国知局
消息管理系统及消息管理方法与流程

本发明涉及一种消息管理系统及消息管理方法。



背景技术:

消息(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、本地队列消费线程获取持久化的消息,执行资源选择策略获取可用状态的消息服务器资源,然后利用获取的消息服务器资源执行发送消息的操作;

发送成功时,直接返回;发送失败时,则将获取的消息服务器资源标记为不可用状态,退出消息服务器资源选择。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1