跨服务消费的方法、存储介质与流程

文档序号:20486671发布日期:2020-04-21 21:43阅读:191来源:国知局
跨服务消费的方法、存储介质与流程

本发明涉及消息中间件领域,具体涉及跨服务消费的方法、存储介质。



背景技术:

消息中间件适用于需要可靠数据传送的分布式环境。采用消息中间件机制的系统中,不同的对象之间通过传递消息来激活对方的事件,完成相应的操作。具体而言,发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者。消息中间件能在不同平台之间通信,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间地协同,其优点在于能够在客户和服务器之间提供同步和异步地连接,并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的原因。

在现在的mq使用场景中,很经常会遇到业务服务突然增大的场景。由此场景而导致的mq中的消息数量在短时间之内大量增加,将由于队列消费能力有限,最终导致的mq中消息大量堆积。这是由于正常的业务操作新增加的消息速率比消费速率更大或者相等而导致。遇到这种场景,一般是自身发现了消息堆积,或者通过特定的监控软件进行发现并报警,最终由人工手动地新增加消费实例,增大消费线程进行mq中堆积消息的消费。上述功能,一个是不够智能,需要人工处理消息的堆积;同时,如果新增加的实例只是为了本次处理堆积的消息,后续是否删除,删除后若下次还需要再次处理同样问题,则需要重新加载;不删除,将会导致资源的空载浪费。

因此,有必要提供一种解决业务服务急增而导致mq队列消息堆积的有效方案。



技术实现要素:

本发明所要解决的技术问题是:提供一种跨服务消费的方法、存储介质,实现智能化负载均衡,无需人工接入。

为了解决上述技术问题,本发明采用的技术方案为:

一种跨服务消费的方法,包括:

监控程序依据预设的监控周期实时监控各个idc中mq队列;

若监控到一idc中mq队列的消息无法在预设时长内消费完毕,则发送对应所述一idc中mq队列的堆积消息至其他idc,其中,所述堆积消息包括队列连接信息、待消费消息类型和队列名称;

其他idc接收到所述堆积消息后,若通过监控程序获取到自身能够在预设时长内消费完毕本机数据,则依据所述堆积消息创建连接至所述一idc中mq队列的消费线程。

本发明提供的另一个技术方案为:

一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述跨服务消费的方法所包含的步骤。

本发明的有益效果在于:通过监控程序对各个idc的mq队列的消息堆积情况进行监控,当判定自身无法在预定时间内消费完时,便通知其他端服务进行消费处理,其他端服务确认自身具备余力时,则通过建立连接拉取堆积端的消息帮忙消费处理。本发明能够基于已部署服务,通过监控实现资源合理利用,且不需要人工接入进行处理,更具智能化。

附图说明

图1为本发明一实施例一种跨服务消费的方法的流程示意图;

图2为本发明实施例二的交互示意图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在:基于已部署服务,通过监控实现负载均衡,且不需要人工接入进行处理,更具智能化。

请参照图1,本发明提供一种跨服务消费的方法,包括:

监控程序依据预设的监控周期实时监控各个idc中mq队列;

若监控到一idc中mq队列的消息无法在预设时长内消费完毕,则发送对应所述一idc中mq队列的堆积消息至其他idc,其中,所述堆积消息包括队列连接信息、待消费消息类型和队列名称;

其他idc接收到所述堆积消息后,若通过监控程序获取到自身能够在预设时长内消费完毕本机数据,则依据所述堆积消息创建连接至所述一idc中mq队列的消费线程。

从上述描述可知,本发明的有益效果在于:通过一种全局监控并支持各端跨服务间进行消费的方法,由专门的监控程序进行各种堆积数据地监控,当达到条件时,通知各端服务进行消费处理,而各端服务需要预先确保本机上的消息能正常消费之后,才空出余力出来批量拉取堆积端的消息,并进行对应的消息消费处理功能。这样,就能够在已部署使用的服务上,通过监控实现资源的合理利用,而不需要人工介入进行处理了。

进一步地,还包括:

若其他idc通过监控程序获取到自身无法在预设时长内消费完毕本机数据,则不做对应所述堆积消息的处理。

由上述描述可知,仅限有能力帮助其他端的idc进行跨服务消费,实现系统整体的负载均衡。

进一步地,所述监控程序依据预设的监控周期实时监控各个idc中mq队列,具体为:

监控程序依据预设的监控周期实时监控各个idc中mq队列的待消费消息量;

监控程序依据历史监控数据实时统计各个idc中mq队列的平均消费速率。

由上述可知,监控程序将通过定时监控准确掌握各idc中mq队列的消费情况。

进一步地,所述若监控到一idc中mq队列的消息无法在预设时长内消费完毕,具体为:

若连续n次监控到一idc中mq队列的写入速率大于消费速率,且依据其平均消费速度判定其无法在预设时长内消费完毕,则判定所述一idc中mq队列的消息堆积,其中,所述n大于等于2。

由上述描述可知,通过至少两个条件来综合判断队列是否存在堆积情况,更具准确性。

进一步地,所述其他idc接收到所述堆积消息后,若通过监控程序获取到自身能够在预设时长内消费完毕本机数据,则依据所述堆积消息创建连接至所述一idc中mq队列的消费线程,具体为:

其他的各个idc接收到所述堆积消息后,分别向监控程序获取本机消费情况,并分别依据本机消费情况判断自身是否满足跨服务消费条件;其中,所述本机消费情况包括是否存在消息堆积,以及自身是否能够在预设时长内消费完毕本机数据;

若满足,依据所述堆积消息创建连接至所述一idc中mq队列的消费线程。

由上述描述可知,各端服务通过访问监控程序获知自身的消费情况,判定是否可帮助堆积端,即能保证自身消费能力不受影响,又能实现系统的资源分配相对均衡。

进一步地,还包括:

与所述一idc中mq队列创建连接的idc定时访问监控程序,获取所述一idc中mq队列的消费情况,若其能够在预设时长内消费完毕所堆积消息,则关闭与所述一idc中mq队列的连接。

由上述描述可知,具备实时监控是否可中止“救援”的功能,避免浪费资源。

本发明提供的另一个技术方案为:

一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述一种跨服务消费的方法所包含的步骤。

所述步骤包括:

监控程序依据预设的监控周期实时监控各个idc中mq队列;

若监控到一idc中mq队列的消息无法在预设时长内消费完毕,则发送对应所述一idc中mq队列的堆积消息至其他idc,其中,所述堆积消息包括队列连接信息、待消费消息类型和队列名称;

其他idc接收到所述堆积消息后,若通过监控程序获取到自身能够在预设时长内消费完毕本机数据,则依据所述堆积消息创建连接至所述一idc中mq队列的消费线程。

进一步地,还包括:

若其他idc通过监控程序获取到自身无法在预设时长内消费完毕本机数据,则不做对应所述堆积消息的处理。

进一步地,所述监控程序依据预设的监控周期实时监控各个idc中mq队列,具体为:

监控程序依据预设的监控周期实时监控各个idc中mq队列的待消费消息量;

监控程序依据历史监控数据实时统计各个idc中mq队列的平均消费速率。

进一步地,所述若监控到一idc中mq队列的消息无法在预设时长内消费完毕,具体为:

若连续n次监控到一idc中mq队列的写入速率大于消费速率,且依据其平均消费速度判定其无法在预设时长内消费完毕,则判定所述一idc中mq队列的消息堆积,其中,所述n大于等于2。

进一步地,所述其他idc接收到所述堆积消息后,若通过监控程序获取到自身能够在预设时长内消费完毕本机数据,则依据所述堆积消息创建连接至所述一idc中mq队列的消费线程,具体为:

其他的各个idc接收到所述堆积消息后,分别向监控程序获取本机消费情况,并分别依据本机消费情况判断自身是否满足跨服务消费条件;其中,所述本机消费情况包括是否存在消息堆积,以及自身是否能够在预设时长内消费完毕本机数据;

若满足,依据所述堆积消息创建连接至所述一idc中mq队列的消费线程。

进一步地,还包括:

与所述一idc中mq队列创建连接的idc定时访问监控程序,获取所述一idc中mq队列的消费情况,若其能够在预设时长内消费完毕所堆积消息,则关闭与所述一idc中mq队列的连接。

对应本领域普通技术人员可以理解实现上述技术方案中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来实现的,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时,可包括如上述各方法的流程。

其中,所述的存储介质可以是磁盘、光碟、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

实施例一

本实施例提供一种跨服务消费的方法,包括:

s1:监控程序依据预设的监控周期实时监控各个idc中mq队列的消息。

所述idc为机房,表示数据中心,可以理解为机房,而一个mq集群是可以部署在一个机房的多台服务器上的。

正常场景下,每个idc中的mq都能够正常消费自身系统中对应的消息,并且不会造成大量数据堆积。在本实施例中,存在一个独立的监控程序,该监控程序每隔预设的监控时间,如15秒时间便监控每个idc中mq中该队列待消费消息的数量;同时,根据历史监控数据,可以统计出来每个mq中的平均消息消费速率是多少。每个时刻mq都有自身的消费速率,还可以据此统计出一段时间之内的平均值。

s2:若监控到一idc中mq队列的消息无法在预设时长内消费完毕,则发送对应所述一idc中mq队列的堆积消息至其他idc,其中,所述堆积消息包括队列连接信息、待消费消息类型和队列名称。

具体而言,若连续n次监控到一idc中mq队列的写入速率大于消费速率,且依据其平均消费速度判定其无法在预设时长内消费完毕,则判定所述一idc中mq队列的消息存在堆积情况。所述n大于等于2,优选为4;所述预设时长一般为较短的时间,例如5分钟,优选为2-10分钟。

在判定存在堆积情况后,对应的idc即为堆积端,其将发送对应一与自身对应的堆积消息至其他idc,告知它们自身当前处于堆积状态,请求帮助。其中,所述堆积消息包括队列连接信息(包括域名、端口、用户名以及密码)、待消费消息类型和队列名称。所述堆积消息用于其他集群据此连接到自身集群中,且明确消费对象。

s3:其他idc接收到所述堆积消息后,若通过监控程序获取到自身能够在预设时长内消费完毕本机数据,则依据所述堆积消息创建连接至所述一idc中mq队列的消费线程。

具体而言,其他的各个idc接收到堆积端发来的堆积消息后,需要分别向监控程序获取本机消费情况,并分别依据本机消费情况判断自身是否满足跨服务消费条件;其中,所述本机消费情况包括是否存在消息堆积,以及自身是否能够在预设时长(与上述一预设时长同)内消费完毕本机数据;若满足,则说明自身存在余力可帮助堆积端,因此依据所述堆积消息创建连接至所述一idc中mq队列的消费线程,帮助堆积端消费堆积的消息;若不满足,则证明自身不存在余力帮助其他端,因此不做对应所述堆积消息的处理,可以视为直接方式接收到的堆积消息。

s4:与所述一idc中mq队列(即堆积端)创建连接的idc将定时访问监控程序,获取所述一idc中mq队列(即堆积端)的消费情况,若其能够在预设时长内消费完毕所堆积消息,则关闭与所述一idc中mq队列的连接。即在堆积端有能力在预设时长内消费完堆积消息时,便及时关闭连接,及时取消跨服务消费,以实现双端资源的合理利用。

实施例二

请参阅图2,本实施例对应实施例一提供一具体运用场景:

假设存在3个即三个idc机房:a、b和c,每个idc机房中都将部署一套mq消息中间件,用来进行异步消费消息。假设这3套mq集群都消费自身系统中的对应消息,消息类型以及消息队列都是一样(假设每个集群中就一个类型,一个消息队列,而且3个集群中的类型与消息队列名称都一样),只是分布在3个idc即3个不同环境中。

正常使用场景下,每个idc中的mq都能够正常消费自身系统中对应的消息,并且不会造成大量数据堆积。

存在一个独立的监控程序,该监控程序每隔15秒时间监控每个idc中的mq的堆积消息;同时,根据历史监控数据,可以统计出来每个mq中的平均消息消费速率是多少。每个时刻mq都有自身的消费速率,可以统计一段时间之内的平均值。

假设某一个时刻,idc_b中产生了大量的消息堆积,总数在10w左右,并且消息写入速率大于消息消费速率。此时,监控程序在连续4个时间间隔之内发现该mq中消息堆积(连续的1分钟之内),并且按照其平均消息消费速率计算得到无法在一个短时间内消费完毕,比如说5分钟。此时,监控程序将会向idc_a与idc_c集群中发送idc_b的消息堆积消息。

该消息比传数据包括:idc_b的相关连接消息(包括域名,端口,用户名以及密码)、消费的类型以及队列的名称。其他集群可以根据这些参数连接到idc_b中;同时还能知道是需要消费那种类型的消息以及消费的队列名称是什么。

当idc_a与idc_c接收到监控程序发来的消息时,首先向监控程序获取本机的消费情况,以同样的消息不堆积并且按照平均消息速率在5分钟之内能够消费完本机数据的为条件。当不满足此条件下,则直接放弃该通知消息;当满足此条件时,将会在本机创建对应的消费者线程,连接到idc_b处,进行消息的消费动作。

同时,连接到idc_b的idc将每隔一段时间访问监控程序,获取b集群的消息堆积以及平均消费速率等条件,如果达到其自身已经能够消费完堆积消息时,则关闭本身的消费连接,不在进行跨集群进行消费处理。

实施例三

本实施例对应实施例一和实施例二,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述实施例一或实施例二所述的一种跨服务消费的方法所包含的步骤。具体的步骤内容在此不进行复述,详情请参阅实施例一和实施例二的记载。

综上所述,本发明提供的一种跨服务消费的方法、存储介质,不仅能实现各集群负载均衡,并且只需基于已部署使用的服务便可实现,即节省成本也节省了资源;进一步地,无需人工介入,更具智能化;另外,能保证自身消费能力不受影响,具备较高实用性;同时,本发明还具有实施简便的优点。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

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