kafka架构
Kafka是如何实现消息有序的?有哪些分区算法?
(一)Kafka是如何让实现消息有序的 生产者:通过分区的leader副本负责数据以先进先出的顺序写入,来保证消息顺序行。消费者:同一分区内的消息只能被一个group里的消费者消费,保证分区内消费有序。Kafka每个partition中的消息写入时都是有序的,消费时,每个partition只能被每一个消费者组中的一个消费者消费,保证了消费时也是有序的。整个kafka不保证有序。如果为了保证kafka全局有序,那么设置一个生产者,一个分区,一个消费者。
(二)Kafka有哪些分区算法? 轮询策略:将消息顺序分配到各个分区中,假设一个主题下有三个分区,第一条消息将被发送到分区0,第二条消息被发送到分区1,第三条消息被发送到分区2,以此类推,第四条消息被发送到分区0。轮询策略有非常优秀的负载均衡表现,它总是能保证消息最大限度地被平均分配到所有分区上,故默认情况下它是最合理的分区策略,也是我们最常用的分区策略之一。
随机策略:
将消息随机地放到任意一个分区上,本质上看随机策略也是力求将数据均匀地打散到各个分区,但稍逊于轮询策略,所以如果追求数据的均匀分布,还是使用轮询策略比较好。事实上,随机策略是老版本生产者使用的分区策略,在新版本中已经改为轮询策略了
按消息键保序策略&#x