1 Kafka概述

1.1 Kafka是什么?

Kafka是一个分布式的基于发布订阅模式消息队列,并且是消费者主动拉取模式的。

①什么是消息队列?

消息队列是一种异步处理的方式。

  • 同步处理:相当于银行办理业务,需要你一直在那呆着。
  • 异步处理:相当于修手表,先放在修理店,你可以去干其他的事情,过段时间来取。

消息队列具有解耦,可恢复,缓冲,灵活性高,异步处理等优点。

大数据6_01_Kafka概述-基础框架

②消息队列的两种模式

一对一模式

  • 每一个消费者都会对应一个消息队列

  • 缺点:消息队列不能复用。用完就删除,如果有多个消费者同时消费,资源占用就比较大。

大数据6_01_Kafka概述-基础框架

发布订阅模式

  • 生产者将消息发布到Topic中,同时消费者会订阅这个Topic。

  • 这里又有两种模式:

    • 生产者主动推送模式,只要你订阅了这个Topic,就会将所有的消息推送给你。

      消费速度,就由生产者决定。、

      • 缺点:发送太多,可能存在自己不想要的消息。
    • 消费者主动拉取模式,消费者主动的拉取自己的消息。

      消费速度,由消费者决定。

      • 缺点:消费者不知道消息队列中有没有消息,需要一直轮询的方式去查看是否有新的消息。

大数据6_01_Kafka概述-基础框架

1.2 Kafka基础架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FTaEflTg-1605071190711)(Kafka.assets/image-20201103110134597.png)]

一个消费者组内的不同的消费者可以订阅不同的topic!

  • 如果是roundRobin:会乱了,某个消费者会分到自己没有订阅的消息。
  • 如果是range:是根据主题划分!这样就不会出现乱了的现象。

①Topic、分区、副本

  • 可以理解为一个队列,不同的类型。

  • 对Topic话题进行分区

  • 对每个Topic设置副本,不同的副本放到不同的机器上,多个副本中只能有一个为Leader,万一Leader挂掉了,Follower会重新选举为Leader。

MR分区:提高reducer端的并行度

hive分区:查询时可减少读取数据量

kafka分区:①提高一个Topic的负载均衡②提供并发度。

②消息流向

生产者生产消息 --> 发送给Leader --> Leader会发送给自己的ISR内的follower --> 再发给其他的follower --> 消费者消费消息。

生产的消息怎样选择进入哪个分区?

  • 消息被封装成一个ProducerRecord对象,如果这个对象
    • 指定了partition,那就去这个partition中;
    • 没有指定partition,但是有key值,根据key值得hash对分区数取余
    • 没有指定partition也没有指定key,轮询分到一个分区。

③消费者消费消息

  • 消费者分为:单个消费者和消费者组

大数据6_01_Kafka概述-基础框架

消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者

④Zookeeper和Kafka

  • Kafka的操作 元数据信息存储在Zookeeper中

大数据6_01_Kafka概述-基础框架

  • 消费者也会存一些消费的位置信息(偏移量),放到zookeeper中(而不是内存),这是0.9版本之前!

    在0.9版本之后从新将offset存放在kafka本地。

  • kafka将数据存储到本地,因为含有index所以很快。

  • 数据存放时间默认是7天,168h。

    大数据6_01_Kafka概述-基础框架

    大数据6_01_Kafka概述-基础框架

为什么改回存放到kafka本地呢?

  • ①消费者既要与Kafka集群通信,又要与zookeeper通信。
  • ②存到zookeeper中就需要与zookeeper频繁通信,增大了zk的压力。

相关文章:

  • 2021-04-28
  • 2021-11-14
  • 2021-08-17
  • 2021-09-23
  • 2022-12-23
  • 2021-11-11
  • 2021-08-01
  • 2021-06-28
猜你喜欢
  • 2022-01-06
  • 2021-08-02
  • 2021-06-07
  • 2021-12-13
  • 2021-09-20
  • 2021-09-23
相关资源
相似解决方案