一. Kafka简介
1. 消息队列
-
消息队列 ---- 用于存放消息的组件
-
可以将消息存放到队列里, 也可以从消息队列中获取消息
-
很多时候消息队列不是一个永久性的存储, 是作为临时存储存在的 (设定一个期限, 设置消息在MQ中的保存时间)
-
消息队列中间件: 如Kafka, Active MQ, RabbitMQ, RocketMQ, ZeroMQ
2. Kafka的应用场景
-
异步处理:
- 可以将一些比较耗时的操作放在其他系统中, 通过消息队列将需要进行处理的消息进行存储, 其他系统可以消费队列中的数据
- 常见的有:发送短信验证码,发送邮件
-
系统解耦:
- 原先一个微服务是通过接口(HTTP)调用另外一个微服务,这是高耦合的, 只要接口发生变化就会导致系统不可用
- 使用消息队列可以将系统进行耦合, 现在一个微服务可以将消息放入到队列中, 另一个微服务可以从消息队列中把消息取出来进行处理, 进行系统解耦
-
流量削峰
- 因为消息队列是低延迟, 高可靠, 高吞吐的, 可以应对大量并发
-
日志处理
- 可以使用消息队列作为临时存储, 或者一种通信管道
3. 消息队列的两种模型
-
生产者, 消费者模型
- 生产者负责将消息生产到MQ中
- 消费者从MQ中获取消息
- 生产者和消费者是解耦的, 生产者和消费者可能属于不同的程序
-
消息队列的模式
- 点对点: 一个消费者消费一个消息
- 发布订阅: 多个消费者消费可以一个消息
二. Kafka安装和使用
1. 安装Kafka集群
- 1.1 解压安装包, 修改server.properties
#broker的ID,全局唯一编号, 不能重复 假设安装目录为 /opt/module/kafka
broker.id<