- Kafka的topic为什么要分区。
- 消费者组的作用。
- Kafka的分区分配。
“Kafka是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统。”
生产者:不同的生产者生产不同的消息。
消费者:消费数据;会主动拉去数据。
kafka集群管理消息,实现数据快速高效精准地被消费。
Kafka broker服务,储存数据,然后把数据传送给消费者。生产者只需要把消息发送给broker,而不必留意消费者的位置;消费者只需关注broker而不必留意生产者位置。
作用:实现解耦,生产者和消费者不用直接接触。
为什么用zookeeper:
1、Broker是分布式部署并且相互之间相互独立,但是需要有一个注册系统能够将整个集群中的Broker管理起来,此时就使用到了Zookeeper。
2、在Kafka中,同一个Topic的消息会被分成多个分区并将其分布在多个Broker上,这些分区信息及与Broker的对应关系也都是由Zookeeper在维护。
3、生产者需要将消息合理地发送到这些分布式的Broker上,那么如何实现生产者的负载均衡,Kafka支持传统的四层负载均衡,也支持Zookeeper方式实现负载均衡。
4、与生产者类似,Kafka中的消费者同样需要进行负载均衡来实现多个消费者合理地从对应的Broker服务器上接收消息,每个消费者分组包含若干消费者,每条消息都只会发送给分组中的一个消费者,不同的消费者分组消费自己特定的Topic下面的消息,互不干扰。
消费者组:消费者组里包含一个或多个消费者,一个主题下的分区数据只能由一个消费者组里的消费者消费。
Topic主题:消费者有很多类型,生产出的消息放在不同的主题里,每个主题下都有分区,每个分区下的数据不同,消费者也有很多类型,消费者可从broker中订阅想要消费的数据。
如果主题没有分区:可能造成消息积压,负载不均,服务器宕机。所以要分布式存储和分布式消费。
Leader和follower:Leader存储数据,Follower同步数据,如果Leader宕机,将从下一个follower副本中选出一个新Leader。