Kafka特点:
- 缓冲/削峰
- 解耦
- Kafka 是由三部分组成, Produce(Java), Broker(Scala), Consumer(Java), 所以他的下载包, kafka_2.13-3.0.0.tgz, 代表Scala版本是2.13, kafka是3.0.0版本
-
kafka削峰, 不只是下游消费的速度, 就算是硬盘的读写极限, 也可以进行削峰
image.png
Kafka架构设计
1, 为了方便拓展, 提供吞吐量, 一个topic分为多个partition
- 100T的数据太大, 可以通过[分区]的方式, 使用多个broker实例, 来处理这些数据
2, 配合分区设计, 提出消费组的概念, 组内每个消费者并行消费
- 同样的consumer, 也需要多个来消费kafka的数据, 而且一个consumer只能处理一个分区的数据, 这样才不会乱
image.png
3, 为了提高可用性, 为每个partition增加若干个副本, 类似NameNode HA
为了防止分区宕机数据丢失, kafka还可以将分区进行副本备份,
**consumer消费的时候, 只会消费Leader的数据, 当leader挂了, follower可能会成为leader, 保证数据不丢失
image.png
4, Zk中记录谁是Leader
Zk中也会记录一部分数据, 比如谁是Leader,集群的上下线信息, 但是Kafka2.8.0以后不采用ZK了
image.png