Kafka 集群
kafka:
多个broker组成,每个broker是一个节点;
你创建一个topic,这个topic可以划分为多个partition,
每个partition可以存在于不同的broker上,每个partition就放一部分数据。
由上可以看出,kafka是分布式的消息队列,
而rabbitmq不是分布式消息队列,他就是传统的消息队列。
kafka 0.8以前,是没有HA机制(replica副本机制),就是任何一个broker宕机了,那个broker上的partition中的数据就无法提供服务了。
kafka 0.8以后,提供replica副本机制。读写操作只能在leader上,不能在follow上。
kafka会均匀的将一个partition的所有replica分布在不同的机器上,以提高容错性。
写数据的时候,生产者就写leader,然后leader将数据落地写本地磁盘,接着其他follower自己主动从leader来pull数据。
一旦所有follower同步好数据了,就会发送ack给leader,leader收到所有follower的ack之后,就会返回写成功的消息给生产者。
(当然,这只是其中一种模式,还可以适当调整这个行为)
消费的时候,只会从leader去读,
但是只有一个消息已经被所有follower都同步成功返回ack的时候,
这个消息才会被消费者读到。

浙公网安备 33010602011771号