什么是Kafka?
Kafka基本概念
-
Broker:物理概念,Kafka集群中的每个Kafka节点;
-
Topic:逻辑概念,Kafka消息的类别,对数据进行区分、隔离;
-
Partition:物理概念,Kafka下数据存储的基本单元。一个Topic数据,会被分散存储到多个Partition,每一个Partition是有序的;
-
Replication(副本、备份):同一个Partition可能会有多个Replica,多个Replica之间数据是一样的;
-
Replication Leader:一个Partitionn的多个Replica上,需要一个Leader负责该Partition上与Producer和Consumer交互;
-
ReplicaManager:负责管理当前broker所有分区和副本的信息,处理KafkaController发起的一些请求,副本状态的切换、添加/读取消息、Leader的选举等。
Kafka概念延伸
Partition(最小存储单元)
-
每一个Topic被切分为多个Partitions(Partition属于消费者存储的基本单位);
-
消费者数目小于或等于Partition的数目(多个消费者若消费同个Partition会出现数据错误,所有Kafka如此设计);
-
Broker Group中的每一个Broker保存Topic的一个或多个Partitions(一个Broker只会保存一个Partition,若Partition太大则多个Broker保存同个Partition);
-
Consumer Group中的仅有一个Consumer读取Topic的一个或多个Partitions,并且是唯一的Consumer(避免同一个Partition被多个Consumer消费)。
Replication
-
当集群中有Broker挂掉的情况,系统可以主动地使Replicas提供服务;
-
系统默认设置每一个Topic的replication系数为1(即默认没有副本,节省资源),可以在创建Topic时单独设置。
特点:
-
Replication的基本单位是Topic的Partition;
-
所有的读和写都从Leader进,Followers只是做为备份(只有Leader管理读写,其他的Replication只做备份);
-
Follower必须能够及时复制Leader的数据;
-
增加容错性与可拓展性。
Kafka基本结构


Kafka消息结构

Kafka特点
- 分布式(多分区,多副本,多消费者,基于ZooKeeper调度);
- 高性能(高吞吐,低延时,高并发,时间复杂度为O(1));
- 持久性和扩展性(数据可持久化,容错率,支持在线水平扩展,消息自动平衡)。
Kafka应用场景
消息队列,行为跟踪,元信息监控,日志收集,流处理,事件源,持久性日志(commit log)等。