赞
踩
kafka学习
1、kafka怎么保证消息的消费顺序?
kafka只保证单partition有序,如果Kafka要保证多个partition有序,不仅broker保存的数据要保持顺序,消费时也要按序消费。假设partition1堵了,为了有序,那partition2以及后续的分区也不能被消费,这种情况下,Kafka 就退化成了单一队列,毫无并发性可言,极大降低系统性能。因此Kafka使用多partition的概念,并且只保证单partition有序。这样不同partiiton之间不会干扰对方。
kafka保证消息顺序有2种方法。
第1种:(全局消费顺序:比如3个直播间同时发消息,全局顺序就是保证直播间1先发的消息那么一定先到)实现方式:1个Topic(主题)只创建1个Partition(分区),这样生产者的所有数据都发送到了一个Partition(分区),保证了消息的消费顺序。
第2种(局部消费顺序:比如3个直播间同时发消息,局部顺序就是直播间1先发,直播间2后发,但是可能直播间2的消息先到,这个顺序是不保证的。但是直播间1先发了“消息1”,再发了“消息2”,这个顺序是能保证的,也就是在直播间内是有序的,但是直播间之间的消息顺序不能保证。)实现方式:生产者在发送消息的时候指定要发送到哪个Partition(分区)(1个)。
消费者以组的名义订阅topic,topic下有多个partition,消费者组中有多个消费者实例。同一时刻,一条消息只能被组中的一个消费者实例消费。如果按照从属关系来说的话就是,主题下的每个分区只从属于组中的一个消费者&#
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。