ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kafka学习(五) 消息分区

2022-07-23 19:33:17  阅读:119  来源: 互联网

标签:消费 发送到 分区 Kafka 学习 消息 Key 因果关系


消息分区策略

这里不是说Kafka的主题为什么要分区,而是说在分区的结构下,如何让具有某种特点的消息发送到特定分区。

这里有一个很明显的问题,就是主题分区,那么生产者发送的消息到底被发送到了哪个分区呢?一般我们都知道有轮询机制或者是随机机制,这两种机制都比较好理解。而且Kafka也都支持,在新版本中默认使用的是轮询机制,如下图所示:

但是在某些场景下我们需要控制某种类型的消息发送到特定分区或者说我们需要严格的进行消息的顺序消费,也就是说这些消息有因果关系,要想消费下一条必须先要消费前一条。消费者消费某个分区的消息肯定是顺序消费,但是由于消息不是顺序进入分区的,你可以从上图看到0002消息并不是在0001消息之后,这就导致有可能消费者程序先消费了0002。如果这些消息没有因果关系那么则没问题,只要保证消费者都消费完就可以了至于先后顺序无需关心。但是如果有因果关系就不行,这样会造成混乱。

要想实现因果关系的消费可以有2个办法

单分区模式

我们创建一个具有单分区的主题,这样消息就顺序进入分区,消费者也就顺序消费。这样实现了全局顺性,不过这样就降低了吞吐量。

基于消息Key的分区策略

这种就是为消息设置Key,Key相同的发送到同一分区。要注意这里虽然是多个分区看似吞吐量增加,但是你可以设想一下如果你的因果消息Key都一样那么这种模式和上面的单分区模式其实一样。如果你的因果消息可以继续细分为几个不同的Key,那么在多分区模式下相对于整体来讲吞吐量是提高的。

如何使用

kafka-python 模块的使用

Java客户端的使用

标签:消费,发送到,分区,Kafka,学习,消息,Key,因果关系
来源: https://www.cnblogs.com/yinging/p/16512799.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有