Kafka中Partition(分区)是真正保存消息的地方,发送的消息都被放在这里。
每次添加消息到Partition(分区)的时候都会采用尾加法,如上图所示。Kafka只能保证Partition(分区)中的消息有序,而不能保证Topic(主题)中的Partition(分区)的有序。
消息在被追加到Partition(分区)的时候都会分配一个特定的偏移量(offset)。Kafka通过偏移量(offset)来保证消息在分区内的顺序性。
所以,有一种很简单的保证消息消费顺序的方法:1哥Topic只对应一个Partition。这样可以解决问题,但是破坏了Kafka的设计初衷。
Kafka中发送1条消息的时候,可以指定topic、partition、key、data(数据)4个参数。如果你发送消息的时候指定了Partition的话,所有消息都会被发送到指定的Partition。并且,同一个key的消息可以保证只发送至到同一个partition。这个可以采用表/对象的id来作为key。
总结下,对于如何保证Kafka中消息消费的顺序,有下面两种方法:
1.1个Topic只对应一个Partition。
2.发送消息的时候指定key/partition。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 信号与系统复习笔记——线性时不变系统
信号与系统复习笔记——线性时不变系统信号与系统复习笔记——线性时不变系统 线性时不变系统 推导CT-LTI卷积积分 假设输入函数为 x ( t ) x(t) x(t) ,输出为 y ( t ) y(t) y(t) ,考虑对应变换 T { x ( t ) } = y ( t ) T{x(t)}=y…