[发明专利]基于消息队列的数据处理方法、系统及服务器在审
申请号: | 202011171947.0 | 申请日: | 2020-10-28 |
公开(公告)号: | CN112416614A | 公开(公告)日: | 2021-02-26 |
发明(设计)人: | 张俊 | 申请(专利权)人: | 网宿科技股份有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F16/2455;H04L29/08 |
代理公司: | 北京华智则铭知识产权代理有限公司 11573 | 代理人: | 姜子朋 |
地址: | 200030 上海市徐汇*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 消息 队列 数据处理 方法 系统 服务器 | ||
本发明实施例提供一种基于消息队列的数据处理方法、系统及服务器,属于通信技术领域。其中,方法包括解析从消息队列获取的目标消息的目标关键字段和目标消息序列号,并从缓存服务器获取与目标关键字段对应的最大消息序列号;根据所述最大消息序列号与所述目标消息序列号的大小关系、以及所述缓存服务器中是否存储有目标消息处理中标记位,判断是否消费所述目标消息;当目标消息消费成功时,以目标消息序列号更新缓存服务器存储的最大消息序列号。采用本发明能够在保证数据一致性的前提下保证同一条消息只被消费一次。
技术领域
本发明涉及通信技术领域,特别涉及一种基于消息队列的数据处理方法、系统及服务器。
背景技术
业务组件之间采用同步通信模式时,交互效率低下。例如,请求端向服务端发送业务请求后,需要同步等待服务端返回业务响应,浪费空闲计算资源。并且,各个请求端与服务端直接通信,当流量大量并发时,服务端资源调度频繁造成服务端有效的资源利用率低,进而导致服务端处理效率低、响应速度慢。
为了保证了业务系统的高可用和高性能,可以将请求端与服务端之间的同步通信模式改为异步通信模式。并且,为了缓解流量大量并发时的服务端处理压力,可以在请求端与服务端之间增加消息队列(Message Queue,MQ),以使服务端从消息队列中分批获取业务请求以对并发流量进行削峰。
本专利申请的发明人通过研究请求端、消息队列以及服务端之间的通信过程发现,现有技术至少存在以下问题:在请求端(可称作生产者,Producer)与服务端(可称作消费者,Consumer)之间增加消息队列降低了消息(Message)传输的可靠性。为了克服消息在从生产者到消息队列的传输途中出现异常、以及在消息队列处出现异常等情况,生产者可以向消息队列重复发送同一消息。同理,为了克服消息在从消息队列到消费者的传输途中出现异常、以及在消费者处出现异常等情况,消息队列可以重复向消费者提供同一消息。这样可能导致同一消息被重复消费以及消费者处理失效消息后引发数据不一致问题。
发明内容
本申请的目的在于提供一种基于消息队列的数据处理方法、系统及服务器,以解决现有技术存在的部分或全部问题。所述技术方案如下:
第一方面,提供了一种基于消息队列的数据处理方法,应用于消费端,所述方法包括:
解析从消息队列获取的目标消息的目标关键字段和目标消息序列号,并从缓存服务器获取与所述目标关键字段对应的最大消息序列号;其中,所述目标消息序列号为具有时序的识别码;
根据所述最大消息序列号与所述目标消息序列号的大小关系、以及所述缓存服务器中是否存储有目标消息处理中标记位,判断是否消费所述目标消息;
当所述目标消息消费成功时,以所述目标消息序列号更新所述缓存服务器存储的所述最大消息序列号。
可选的,根据所述最大消息序列号与所述目标消息序列号的大小关系、以及所述缓存服务器中是否存储有目标消息处理中标记位,判断是否消费所述目标消息包括:
若所述最大消息序列号小于所述目标消息序列号且所述缓存服务器中不存在所述目标消息处理中标记位,则在所述缓存服务器中记录所述目标消息处理中标记位,并消费所述目标消息;
若所述最大消息序列号不小于所述目标消息序列号,或所述最大消息序列号小于所述目标消息序列号且所述缓存服务器中存在目标消息处理中标记位,则忽略所述目标消息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网宿科技股份有限公司,未经网宿科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011171947.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种设计台用辅助装置
- 下一篇:一种矿山机械用具有筛选结构的矿石粉碎装置