[发明专利]位点提交方法和装置有效
申请号: | 201811073744.0 | 申请日: | 2018-09-14 |
公开(公告)号: | CN110912949B | 公开(公告)日: | 2022-11-08 |
发明(设计)人: | 方琪 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | H04L67/10 | 分类号: | H04L67/10;H04L67/51;H04L67/30 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 张一军;张效荣 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 提交 方法 装置 | ||
本发明公开了一种位点提交方法和装置,涉及计算机技术领域。其中,该方法包括:步骤1:对于分配给消费实例的每个分区,将该分区中被所述消费实例最新消费的消息的描述信息进行保存;所述消息的描述信息包括:消息的位点、消息的进入时间;步骤2:在位点提交事件被触发后,判断该分区中被所述消费实例最新消费的消息的进入时间与当前时间的差值绝对值是否不超过超时时间阈值;步骤3:若是,则将该分区中被所述消费实例最新消费的消息的位点提交至服务端。通过以上步骤,能够在批量消费后再手动提交一次位点的情况下,既能保证服务端中各个分区的位点不会出现深度重置的情况,又能保证客户端正常消费消息。
技术领域
本发明涉及计算机技术领域,尤其涉及一种位点提交方法和装置。
背景技术
在计算机技术领域,消息队列已经成为一种常用的技术手段。作为消息队列中的代表,Kafka的应用更加广泛。
Kafka是一种高吞吐量的分布式发布订阅消息系统,其通过位点提交的机制保证单分区内的消息消费顺序。所述位点,可理解为一个用于定位分区中的每一个消息的序列号。所述位点提交,可理解为作为消费实例将其对消息的消费进度情况汇报给服务端。所述消费实例是指用于消费消息的客户端的实例(instance),也可称为用于消费消息的应用程序实例(instance)。通常,一台机器可以部署一个或多个消费实例。
Kafka的位点提交方式主要有两种:自动提交位点和手动提交位点。自动提交位点,是指消费实例按照Kafka的配置情况,自动将位点报告给服务端。手动提交位点,是指消费实例通过代码将位点报告给服务端。在手动提交位点方式中,具体什么时候报告、报告什么值,都由消费实例决定。
Kafka可通过Zookeeper进行负载均衡管理。在消费实例数量发生动态变化(比如有的消费实例崩溃,或者有新的消费实例加入集群) 时,会触发再均衡(rebalance)功能,进而可能产生分区漂移现象。所谓分区漂移,是指一个分区原本是在一个消费实例上消费,后来飘移到另一消费实例上消费的情况。分区飘移可能导致服务端中的位点被往前重置很多,即深度重置的情况出现。例如,假设Topic1有四个分区“Partition[0]至Partition[3]”,对应这四个分区,有四个消费实例“消费实例[0]至消费实例[3]”。在刚开始启动消费的时候,由于消费实例启动的先后顺序,Partition[3]中的消息先被消费实例[2]消费,消费实例[2]会把消费的Partition[3]中的消息的位点123记录起来。在四个消费实例都启动后,Partition[3]飘移到了消费实例[3]中,四个分区的分配结果为:将Partition[0]分配给消费实例[0]、Partition[1]分配给消费实例[1]、Partition[2]分配给消费实例[2]、Partition[3]分配给消费实例[3]。在消费消息一段时间后,由于Partition[3]一直被消费实例[3]消费,假设消费实例[3]提交的Partition[3]中的消息位点达到42342。由于某种原因,消费集群需要停止消费。假设消费实例[2]在停止之前正好需要提交一次位点,在本次提交位点时,其除了会提交Partition[2]中的消息的位点,还会把曾经消费过的Partition[3]中的消息的位点123提交至服务端,从而服务端中Partition[3]的消息位点从42342被重置到123。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:在对消息进行批量消费并手动提交位点的情况下,由于Kafka的分区飘移,可能导致位点提交错误,使得服务端中的位点被往前重置很多,即深度重置的情况出现,这个问题会给消费消息的客户端(简称“消费端”)带来很大的困扰和麻烦。
发明内容
有鉴于此,本发明提供一种位点提交方法和装置,能够在批量消费后再手动提交一次位点的情况下,既能保证服务端中各个分区的位点不会出现深度重置的情况,又能保证客户端正常消费消息。
为实现上述目的,根据本发明的一个方面,提供了一种位点提交方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811073744.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种数据查询方法和装置
- 下一篇:晶片清洗装置及清洗方法