![](https://cdn.zimug.com/wx-zimug.png)
本文对应视频:https://www.bilibili.com/video/BV1Fu411y73E/
[TOC]
## 一、消息传递模型
通常来说,消息队列的消息传递模型主要有两种:
1、Point-to-Point(P2P),一条消息由一个消费者消费。
2、Publish/Subscribe(Pub/Sub),一条消息被多个消费者消费。
### 1. P2P模型(点对点模型)
在P2P(点对点)模型中,一条消息仅能被一个消费者进行消费。消息队列负责接收生产者发布消息,同时支持消费者从队列中获取消息。
![](http://cdn.zimug.com/d9ac9fbc5e68c64cdacdc6022c8f0b6d)
P2P的特点:
1. 每个消息只能被一个消费者(Consumer)消费。也就是说,消息被处理一次,并且仅被处理一次。
2. 生产者和消费者之间是不存在耦合关系的,生产者向消息队列发送了消息之后,不论消费者是否处于运行状态,都不会影响到消息被发送到消息队列中。
3. 可能会有多个消费者侦听同一个队列,但是队列中的某一个消息只能被其中一个消费者所消费。
4. 消费者在成功消费消息之后需要向队列进行应答反馈,所以如果你需要保证消息传递的可靠性,那么你需要使用P2P模式的消息队列。
5. 消息按照顺序依次放入消息队列中,消息队列按照先进先出的原则把消息传送给消费者(除非使用了特殊消息优先级设置,否则一律遵循该原则)。
![](http://cdn.zimug.com/7a064fbb2788207f0447026ba2c3aea5)
集群消费模式(消费者组模式),是为了提高吞吐量,针对同一个队列或消费主题,存在多个消费者。多个消费者组成一个消费者组,尽量均衡的消费消息队列中的消息。消费者组模式本质上仍然是P2P模式,消息被消费者组内的某一个消费者处理一次,并且仅被处理一次。
但是消费者组消费的模式和基础的P2P模式,还是有一些区别:**就是消费者组模式通常无法保证消费的顺序。**
### 2.Publish/Subscribe模型(发布订阅模型)
在Pub / Sub(发布订阅)模型中,一条消息被多个消费者(订阅者)消费,这个消费过程就像是广播。生产者(发布者)就像是广播员,消费者(订阅者)就像是听众。
![](http://cdn.zimug.com/bb092ae1bc529360b5a61b803d1d93be)
Publish/Subscribe的特点:
1. 每个消息可以被多个消费者(或消费者组)进行消费,这个过程通常被称为“订阅”,消费者也被称为订阅者;
2. 消息发布者通常不会知道、也感知不到哪些订阅者正在接收该主题的消息。消息的发布者就像是一个新闻播音员,新闻我是播完了,哪些观众看、哪些观众没看就和播音员关系不大了。就像听众不需要向播音员反馈信息,消息发布者也不需要等待消息订阅者的反馈。
- 文档概要
- 如何提问
- 一、kafka基础入门
- 1.1.白话消息队列
- 1.2.消息传递模型
- 1.3.典型应用场景一
- 1.4.典型应用场景二
- 1.5.kafka简单介绍
- 1.6.kafka核心概念解析
- 1.7.搭建kafka单机版
- 1.8.kafka3中zk替代方案
- 二、生产级集群安装
- 2.1.linux安装JDK
- 2.2.linux主机与ip解析
- 2.3.linux新建用户
- 2.4.linux开放防火墙端口
- 2.5.最大打开文件句柄数
- 2.6.集群主机之间免密登录
- 2.7.zookeeper集群安装(脚本)
- 2.8.kafka集群安装部署(脚本)
- 2.9.kafka3无需zk的集群安装
- 2.10.集群可用性验证及配置
- 2.11.kafka集群可靠性配置
- 2.12内外网络映射问题
- 三、生产者客户端
- 3.1.本章阅读说明
- 3.2.图解kafka生产者
- 3.3.数据生产可靠性
- 3.4.保证消息顺序性
- 3.5.生产者Java实现
- 3.6.自定义拦截器
- 3.7.自定义序列化器
- 3.8.自定义分区器
- 3.9.幂等与事务处理
- 四、消费者客户端
- 4.1.消费者组与数据积压
- 4.2.消费者Java实现
- 4.3.消费偏移与可靠性
- 4.4.分区再均衡
- 4.5.线程池与消费者组
- 4.6.消费者拦截器
- 4.7.自定义反序列化器
- 五、SpringBoot集成kafka
- 5.1.整合集成kafka客户端
- 5.2.生产者同步异步分区拦截
- 5.3.生产者事务处理
- 5.4.KafkaListener详解
- 5.5.Header及sendTo
- 5.5.监听器模式及偏移量提交
- 5.3.消费监听器的异常处理
- 5.6.JSON序列化日期问题处理
- 六、kafka安全认证
- 6.1.用户名密码PLAIN认证
- 6.2.SCRAM认证
- 6.3.Kerberos认证(撰写中)
- 七、kafka运维配置管理
- 7.1.topic管理命令
- 7.2.KafkaTool带界面管理工具
- 7.3.LogiKM企业级监控管理(撰写中)
- 附录
- linux虚拟机集群的搭建
- 笔者其他作品推荐
- vue深入浅出系列
- 手摸手教你Spring Boot2.0
- Spring Security-JWT-OAuth2一本通
- 实战前后端分离RBAC权限管理系统
- 实战SpringCloud微服务从青铜到王者
- 送书活动