[发明专利]一种Kafka集群中的消息传输方法及装置有效
申请号: | 201811319985.9 | 申请日: | 2018-11-07 |
公开(公告)号: | CN111163118B | 公开(公告)日: | 2023-04-07 |
发明(设计)人: | 刘锋 | 申请(专利权)人: | 株式会社日立制作所 |
主分类号: | H04L67/1001 | 分类号: | H04L67/1001;H04L67/51;H04L43/0888;H04L67/1008;H04L41/0894 |
代理公司: | 北京银龙知识产权代理有限公司 11243 | 代理人: | 黄灿;姜精斌 |
地址: | 日本*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 kafka 集群 中的 消息 传输 方法 装置 | ||
本发明实施例提供了一种Kafka集群中的消息传输方法及装置。本发明实施例在大尺寸消息的传输过程中,既能保证集群吞吐量不会大幅降低,还可以使得集群各节点负载更均衡,系统资源更加有效利用。另外,本发明实施例利用分区算法加速了大尺寸消息的还原速度,提高了处理响应时间;另外,偏移量保存在集群节点处,也保证了当订阅方系统崩溃恢复后可以无需再从最开始处重复消费消息,只需从当前消费位置开始处理消息,可以避免重复消费,同时也保证了数据一致性,也大大降低了时间成本。
技术领域
本发明涉及分布式发布/订阅消息系统,具体而言,本发明涉及一种Kafka集群中的消息传输方法及装置。
背景技术
Kafka是由Apache软件基金会开发的一个开源消息处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布/订阅消息系统,能够支撑海量数据的数据传递。在离线和实时的消息处理业务系统中,Kafka都有广泛的应用。Kafka将消息持久化到磁盘中,并对消息创建了备份保证了数据的安全。Kafka在保证了较高的处理速度的同时,又能保证数据处理的低延迟和数据的零丢失。Kafka的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台,其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,这使得它作为企业级基础设施来处理流式数据非常有价值。
为了便于在发布/订阅消息系统内传递过大的消息,现有技术提出了对消息进行切片的处理方案,即将大尺寸的消息切割为多个片段分别进行发布。
另外为了避免订阅方从宕机恢复后,从消息流重新开始接收消息的偏移量是未知的,现有技术还提供了一种支持传递过大的消息的方法,该方法包括以下步骤:
(1)确定提交消息代理集群的偏移量,其中所确定的偏移量基于一个或多个超大尺寸消息的一个或多个片段是否被缓冲;
(2)将所确定的偏移量提交消息代理集群。
如果订阅方宕机,则在订阅方系统恢复后,该方法就可以从消息代理集群中检索所确定的偏移量,并基于该偏移量继续订阅消息。
上述方法解决了订阅方宕机后消费的消息偏移量未知的问题,但没有考虑大尺寸消息切片后的数据的完整性和一致性问题,因此,亟需一种方案,能够保证大尺寸消息切片后的数据的完整性和一致性。
发明内容
本发明实施例要解决的技术问题是提供一种Kafka集群中的消息传输方法及装置,将同一消息的多个片段发布至目标节点的同一分区,保证了数据的完整性和一致性,并能够降低消息订阅的响应延迟。
为解决上述技术问题,本发明实施例提供的一种Kafka集群中的消息传输方法,包括:
获取待发布消息的大小和主题;
在所述待发布消息的大小超过预设尺寸的情况下,按照预设的分片基准值对所述待发布消息进行分割,得到所述待发布消息的多个消息片段,记录分割时间戳并为每个消息片段进行顺序编号;
从所述多个消息片段的编号中随机选择一个目标编号,根据所述分割时间戳和目标编号,组合得到每个所述消息片段的分区关键字;
在所述Kafka集群的目标节点的所述待发布消息的主题下的分区中,确定所述分区关键字对应的目标分区,将所述多个消息片段按照编号顺序发布至所述目标分区。
优选的,在获取待发布消息的大小和主题之前,所述方法还包括:
通过发布不同大小的消息,分别测试所述Kafka集群在不同大小的消息下的集群吞吐量;
根据集群吞吐量最大时的消息的大小,确定所述分片基准值。
优选的,在确定所述分区关键字对应的目标分区之前,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于株式会社日立制作所,未经株式会社日立制作所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811319985.9/2.html,转载请声明来源钻瓜专利网。