Kafka 简介

文章目录

  • 一、消息队列简介
    • 1.1 消息队列是什么
    • 1.2 消息队列中间件
    • 1.3 消息队列应用场景
      • 1.3.1 异步处理
      • 1.3.2 系统解耦
      • 1.3.3 流量削峰
      • 1.3.4 日志处理
    • 1.4 生产者-消费者模型
    • 1.5 消息队列的两种模式
      • 1.5.1 点对点模式
      • 1.5.2 发布订阅模式
  • 二、Kafka 简介
    • 2.1 Kafka 简介
    • 2.2 Kafka基本组成
  • 参考文章


一、消息队列简介

1.1 消息队列是什么

消息队列就是存储消息的队列;英文名为 Message Queue,经常缩写为 MQ。

1.2 消息队列中间件

用来存储消息的软件(组件)。目前市面上的消息队列又很多,例如:Kafka、RabbitMQ、ActiveMQ、RocketMQ、ZeroMQ等。

1.3 消息队列应用场景

1.3.1 异步处理

某些网站的新用户注册,除了要将用户信息保存到数据库,还需要发送短信通知和邮件通知,而短信通知和邮件通知需要连接额外的服务器,需要额外的等待时间;但是如果使用消息队列,就可以进行异步处理,实现快速响应
Kafka 简介_第1张图片

1.3.2 系统解耦

某用户在电商网站下单,会先请求订单系统保存订单信息,然后请求库存系统减少库存,如果库存系统挂了或者接口更改,都会导致下单失败;使用消息队列,使订单系统不再调用库存系统,而是订单系统把消息写入消息队列,然后库存系统从消息队列中拉取消息进行处理,从而实现系统解耦。
Kafka 简介_第2张图片

1.3.3 流量削峰

某些网站有秒杀活动,每秒有10W请求,而数据库吞吐量只有8000,用户请求一瞬间就可以打挂数据库;而使用消息队列后,可以先将用户请求放入消息队列,然后相关业务程序再拉取信息进行处理,就可以进行流量削峰
Kafka 简介_第3张图片

1.3.4 日志处理

某些大型网站需要根据用户的访问行为来推荐相关信息,所以需要在页面上收集大量的用户访问信息。使用消息队列存临时储这些信息,再配合实时处理系统,就可以快速得出结果
Kafka 简介_第4张图片

1.4 生产者-消费者模型

消息队列使用的 **生产者-消费者模型**。生产者生产信息并将其放入消息队列中,消费者从消息队列中获取并消费信息。
Kafka 简介_第5张图片

1.5 消息队列的两种模式

消息队列中有两种模式,分别是:①点对点模式;②发布订阅模式。其中发布订阅模式还有推(push)和拉(poll)两种。

1.5.1 点对点模式

Kafka 简介_第6张图片

概念

  • Producer 和 Consumer 是一对一的,生产者将消息发送到消息队列中,然后生产者从消息队列中获取并消费消息。

特点

  • 消息被消费后就会被清除(即使 MQ 支持多个消费者,但每个消息也只会被被消费一次);
  • 消费者在接收消息之后,需要向消息队列发出应答,以便消息队列删除消息。

1.5.2 发布订阅模式

Kafka 简介_第7张图片
概念

  • Producer 将消息发送到消息队列的 Topic 中,订阅该 Topic 的所有 Consumer 都可以消费这条消息

特点

  • 多个消费者消费一个消息
  • 消息被消费后不会被删除
  • 有主题(Topic)的概念,消费者需要订阅主题后才可以进行消费
推模式(push) 拉模式(pull)
概念 MQ 主动将消息推送给对应的 Consumer Consumer 主动地从 MQ 中拉取消息
特点 消息队列记录所有的消息状态,若消息被标记为已消费,则 Consumer 不能再对其进行消费 Consumer 自己记录消费状态,每个 Consumer 互相独立地拉取消息。
优点 延迟小,基本可以做到实时 可以根据自己的能力拉取消息并处理
缺点 因为发送消息的速度由 MQ 决定,所以难以适应消费速度不同的 Consumer;如果发送速度过快,Consumer 可能来不及消费,导致拒绝服务。 如果消息队列中没有数据,会导致 Consumer 陷入循环中

Kafka 简介_第8张图片


二、Kafka 简介

2.1 Kafka 简介

Kafka 是一个分布式的、基于发布订阅模式的消息队列,主要应用于大数据实时处理领域。
Kafka 简介_第9张图片

2.2 Kafka基本组成

1、Producer:生产者,即向Kafka发送消息的客户端
2、Consumer:消费者,从 Kafka 拉取消息并消费的客户端
3、Consumer Group(CG):由多个 Consumer 组成的消费者组;消费者组是逻辑上的订阅者,所有消费者都属于某个CG;CG 内每个 Consumer 负责不同的 Partition,一个 Partition 不能被同个 CG 中的多个 Consumer 消费,可被不同 CG 中 Consumer 消费(CG 之间互不影响)
4、Broker:一个集群由多个 Broker 组成,一台 Kafka 服务器就是一个 Broker
5、Topic:可以理解为一个队列,主要是对消息进行分类,不同种类的消息可以放到不同的 Topic 中;Producer 和 Consumer 都是面向 Topic 的
6、Partition:一个 Topic 可以分布到多个 Broker 上,具体的就是 Partition,每个 Partition 是一个有序队列
7、Replica:指副本;Topic 中的 每个 Partition 都有若干个副本,有一个 Leader 和若干个 Follower;当集群中的某个节点发生故障时,Replica 可以保证该 Broker 的 Partition 数据不丢失
8、Leader:每个 Partition 中多个副本的“主”;Producer 生产数据和 Consumer 消费数据的对象
9、Follower:每个 Partition 中多个副本的“从”;从 Leader 同步数据,当 Leader 发生故障时,某个 Follower 会成为新的 Leader


参考文章

  • https://www.bilibili.com/video/BV19y4y1b7Uo

你可能感兴趣的:(Kafka,kafka,消息队列)