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

1 Kafka概述

1.1 Kafka是什么?

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

①什么是消息队列?

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

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

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

image-20201102194718714

②消息队列的两种模式

一对一模式

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

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

image-20201102193711790

发布订阅模式

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

  • 这里又有两种模式:

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

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

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

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

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

image-20201102193939865

1.2 Kafka基础架构

image-20201103110134597

一个消费者组内的不同的消费者可以订阅不同的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,轮询分到一个分区。
③消费者消费消息
  • 消费者分为:单个消费者和消费者组

image-20201102093215537

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

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

image-20201102205359122

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

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

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

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

    image-20201102210544176

    image-20201102210004856

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最佳第六六六人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值