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的时候,

这个消息才会被消费者读到。

 

posted on 2018-05-23 11:44  HB1  阅读(147)  评论(0)    收藏  举报

导航