[TOC]
### **基本概念**
Kafka中的概念有Broker、Topic、Partition、Replication-Factor。
* Broker:kafka集群中的每个kafka实例(进程)就是一个broker
* Topic:topic是kafka集群中一个逻辑概念,主要用来实现多租户(多用户)。当往kafka集群写消息时,需要指明往哪个topic写;读消息也是
* Partition:创建topic时可以指定分区数,默认为1;当往topic中写消息时,消息实际是写到该topic的某个分区中;分区是一个物理概念,一个分区对应着一个broker下的一个磁盘目录,写入该分区的消息实际上就是保存到broker对应的磁盘目录下
* Replication-Factor:副本因子;当创建topic的时候,可以指定该topic下分区的副本因子;如果副本因子为1,说明该topic下的每个分区只有一份数据;如果副本因子为2,则说明该topic下的每个分区有两份数据;一个分区的两个副本位于不同的broker上
另外,分区的副本有主副本(Leader)和从副本(Follower)之分,个leader和follower都是一个broker(不同partition的副本可以在同一个broker)。Kafka会把所有partition的leader平均分配到broker上,**所有的读写都只由leader来完成**,follower只从leader同步消息,并不对外服务(参考[此文](https://juejin.cn/post/6844903862885679112)。
下图可以加深理解:

### **FAQ**
**Q:生产者向topic发送消息的时候,需要指明partition吗?**
****
