前言: 在讲解Kafka的架构前我们先了解一下什么是消息队列
1. 消息队列的讲解
-
消息: 应用之间的信息相互传递
-
消息队列(Message Queue): 将消息放在队列中保证消息可靠传递
1.1 消息队列的特点
- 应用系统之间解耦----12306–用户系统+后台
- 消息驱动:以消息驱动应用
- 限流消锋:限制流量,对于双11双12峰值限制
- 异步处理:不同业务系统可以处理消息队列中数据
1.2 消息队列的应用场景举例
- 电商:
- 秒杀
- 流量削峰:
- 实时日志处理:
2. 消息队列中间件Kafka的引入
简介: 消息队列中间件就是消息队列的中间件,用来存储消息的软件,举个例子来理解,为了分析网站的用户行为,我们需要记录用户的访问日志。这些一条条的日志,可以看成是一条条的消息,我们可以将它们保存到消息队列中。将来有一些应用程序需要处理这些日志,就可以随时将这些消息取出来处理。(实时)
3. Kafka的架构(站在巨人的肩膀上思考问题)
Kafka的整体架构图:
解释:
-
Broker: 一个Kafka集群由多个broker组成来实现负载均衡和容错性丶它是无状态的,有ZK维护.(每秒数十万吞吐量,毫秒级别延迟)
-
producer: 生产者 负责将数据推送给broker的topic
-
consumer: 消费者 从broker中的topic中拉取数据
-
consumer group:(消费者组)一个消费者组中由多个 消费者,是kafka提供的可扩展且具有容错性的消费者机制.
-
partition: 分区 大的topic被分为 多个区
-
Replicas: 副本 副本机制保障数据的安全性.
-
Topic: 主题
-
偏移量(offset): 在分区中按照顺序递增,方便消费者在分区中查找消息