[发明专利]数据处理方法与装置在审
申请号: | 202010051117.8 | 申请日: | 2020-01-17 |
公开(公告)号: | CN113138858A | 公开(公告)日: | 2021-07-20 |
发明(设计)人: | 何宇彤;赵岩 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F16/20;G06F16/22 |
代理公司: | 北京律智知识产权代理有限公司 11438 | 代理人: | 袁礼君;孙宝海 |
地址: | 100086 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据处理 方法 装置 | ||
本公开提供一种数据处理方法与装置。数据处理方法包括:从消息队列中间件获取目标数据;获取所述目标数据的验证值,并检测内存中的预设双向链表中是否存在所述目标数据的所述验证值;如果所述预设双向链表中不存在所述验证值,检测缓存的预设数据库中是否存在所述验证值;在所述预设数据库中不存在所述验证值时处理所述目标数据。本公开提供的数据处理方法可以快速判断出是否存在数据重复消费情况且不影响数据处理速度。
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种数据处理方法与装置。
背景技术
在进行分布式实时计算前,通常要从订阅的消息队列中间件的主题中消费数据流,然后再依据其内容进行后续的处理计算。而目前主流的消息队列中间件,如Kafka、RabbitMQ、RocketMQ等,在数据消费时均可能出现消息重复的问题,如果消费数据的服务是非幂等性的,就会造成计算结果的偏差。
目前对于数据重复消费问题的处理,主要通过验证消费反馈消息来实现,即执行消费的服务线程在处理完取得的数据后,对消息队列中间件返回一个反馈消息,告知消息队列中间件数据已被处理,使消息队列中间件开始分发下一条数据。如果消息队列中间件在预设时间内没有接收到反馈消息,则会将当前数据重复分发给下一个服务线程去执行。如果预设时间较短,容易产生数据未处理完即被判定处理失败、数据被重复分发和消费的问题,导致计算结果出现偏差;如果预设时间较长,无法及时检测到客户端的异常,在客户端出现异常时容易导致过长的等待时间,降低系统处理数据的效率。因此,该预设时间的设置往往难以兼顾两种需求,需要一种能够兼顾效率和准确性的数据重复消费避免方法。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种数据处理方法与数据处理装置,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的数据重复消费问题。
根据本公开实施例的第一方面,提供一种数据处理方法,包括:从消息队列中间件获取目标数据;获取所述目标数据的验证值,并检测内存中的预设双向链表中是否存在所述目标数据的所述验证值;如果所述预设双向链表中不存在所述验证值,检测缓存的预设数据库中是否存在所述验证值;在所述预设数据库中不存在所述验证值时处理所述目标数据。
在本公开的一种示例性实施例中,还包括:
处理完所述目标数据后,获取所述目标数据的所述验证值;
将所述目标数据的所述验证值存入所述预设双向链表和所述预设数据库。
在本公开的一种示例性实施例中,所述预设双向链表为LinkedHashMap,所述预设数据库为Redis数据库。
在本公开的一种示例性实施例中,所述将所述验证值存入所述预设双向链表和所述预设数据库包括:
获取所述目标数据的第一识别符;
使用预设算法处理所述目标数据的第一识别符,以获取所述目标数据的第二识别符;
将所述第一识别符和所述目标数据对应的标记值存入所述预设双向链表;
将所述第二识别符和所述目标数据对应的标记值存入所述预设数据库。
在本公开的一种示例性实施例中,所述获取所述目标数据的验证值包括:
根据所述目标数据的预设属性获取所述目标数据的标识符;
确定所述目标数据对应的标记值;
将所述标识符和所述标识符对应的数值设置为所述目标数据的验证值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010051117.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种洗衣机及其控制方法
- 下一篇:一种洗衣机及其控制方法