Kafka的定义_基础架构


Kafka的定义:

Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。

发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息,接受的速度也是由消费者自己顶的。

最新定义:Kafka是 一个开源的 分 布式事件流平台 (Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。

前端埋点日志记录,Flume的采集速度一般小于100m/s,双十一时期速度大于200m/s,hadoop上传速度100m/s。Kafka起一个消息队列,缓冲的作用。

消息队列

传统的消息队列的主要应用场景包括:缓存、消峰、解耦和异步通信

解耦:允许你独立的扩展或者改变两边处理过程,只要确保它们遵循同样的接口约束。

image-20220405103524720

异步通信:允许用户把消息放入队列,但是并不立即处理它,然后在需要的时候去处理它们。

image-20220405103831888

消息队列的运行模式

点对点模式

一个生产者对应一个消费者;

消费完数据就删除了;

发布/订阅模式(常用)

可以有对各topic;

消费者消费数据后不删除数据

每个消费者互相独立,都可以消费到数据;

一个生产者,多个消费者;

image-20220405104124727

Kafka的基础架构

  1. Producer: 一个生产者;

  2. Topic-parttion0: 在公司中,实际上一个服务器硬盘大约为8T左右。

  3. n个Consumer,多个group,很多个消费者:

  4. 要求:Kafka规定,一个分区只能由一个消费者消费;

  5. 为了提高可用性,为每个partition增加了若干个副本;

  6. Zookeeper帮Kafka记录服务器节点运行状态,记录每个分区谁是leader,谁是follower,在Kafka-2.8.0之前,必须安装Zookeeper;

  7. 去Zookeeper化,是大势所趋;

    image-20220405105201893

思考

问题一:Kafka提高可用性,和HDFS的高可用有什么区别?

问题二:为什么在Kafka-2.8.0之前必须安装Zookeeper,之后又不需要安装了呢?为什么要做这一改动?