[发明专利]用于消息队列的消息丢失检测方法和装置在审
申请号: | 201911330718.6 | 申请日: | 2019-12-20 |
公开(公告)号: | CN111190747A | 公开(公告)日: | 2020-05-22 |
发明(设计)人: | 马鹏程;胡伟 | 申请(专利权)人: | 北京金山云网络技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京华夏泰和知识产权代理有限公司 11662 | 代理人: | 韩来兵;李雪 |
地址: | 100085 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 消息 队列 丢失 检测 方法 装置 | ||
本申请公开了一种用于消息队列的消息丢失检测方法和装置。其中,该方法包括:接收生产者发送的业务消息和业务消息的消息标识,业务消息用于表示待消费者执行的目标任务;将业务消息存储至消息队列和将消息标识存储至数据库,消息队列和数据库与消费者之间独立通信;通过消息队列将业务消息发送给消费者,以使消费者执行目标任务并存储业务消息的消息标识;在数据库接收到消费者的查询请求时,通过数据库将消息标识发送给消费者,以使消费者根据数据库存储的消息标识和消费者存储的消息标识确定是否存在丢失的业务消息。本申请解决了相关技术中不能准确检测丢失的消息的技术问题。
技术领域
本申请涉及互联网领域,具体而言,涉及一种用于消息队列的消息丢失检测方法和装置。
背景技术
远程过程调用RPC(Remote Procedure Call),通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议,RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层,RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
在分布式系统架构中,RPC是一项通用技术,用来实现消息可靠有序的传递,该技术是分布式系统环境中确保系统稳定运行的关键因素之一,以openstack-neutron组件(一种用于网络虚拟化的组件)为例,其系统架构如图1所示。在如图1所示的系统架构中,如果用户给neutron-server(生产者)发送HTTP请求,该请求用来请求创建两个网段之间的路由条目,实现两个网段之间的IP三层可达,若生产者没有将请求准确的发送给L3代理(或称L3-agent,即接收采用FANOUT方式发送的业务消息的消费者的代理),则L3代理就无法给对应的网关配置路由项,本次HTTP请求的功能就不能实现。
在生产者将请求发送给L3代理的过程中,生产者通过消息队列MQ(全称是MessageQueue)发送消息给消费者xxx-agent(其中“xxx”为具体消费者的标识,如L3和OVS),可能会出现以下几种异常情况导致生产者没有将请求准确的发送给消费者:
(1)生产者在发送消息给消息队列的时候出现异常,比如TCP连接中断,导致消息没有发送到消息队列中,该异常生产者应该是可以捕获到;
(2)消息队列突然宕机,保存到消息队列的队列Queue中的消息没有持久化,重启以后消息丢失;
(3)消费者与消息队列之间的连接断开,但是生产者还给这个消费者发送消息,导致消息队列中对应的队列出现消息堆积,且不能发送给生产者。
在发生可能导致消息丢失的以上几种异常情况时,业界普遍采用以下解决方案:
方案一,消息持久化:主要包括对Exchange设置持久化,Queue设置持久化,消息Message持久化发送,在发送消息设置中设置发送模式deliveryMode=2,在默认情况下,如果消息队列集群宕机重启,会导致所有的Exchange和Queue以及没有被消费的业务消息全部丢失,通过Exchange持久化,Queue持久化以及业务消息持久化,在消息队列宕机重启以后,能够快速的恢复到宕机前的状态。
方案二,ack确认机制:目前的消息发送确认中,ConfirmCallback只确认消息是否正确到达Exchange中;ReturnCallback在消息没有正确到达队列时触发回调,如果正确到达队列则不执行。在消息接收确认时,默认情况下消息消费者是自动发送ack确认消息的,该方案采用自动确认,会在消息发送给消费者代理后立即确认,这样存在丢失消息的可能,如消费者代理未保存成功、未成功发送给消费者等。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京金山云网络技术有限公司,未经北京金山云网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911330718.6/2.html,转载请声明来源钻瓜专利网。