导图社区 消息队列
这是一篇关于消息队列的思维导图,包括概念,常见的消息列队,高可用,消息积压,消息有序性等方面的医学内容
这是一篇关于JVM的思维导图,JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的
这是一篇关于Mybatis的思维导图,Java开发中常用SSM(Spring,SpringMVC,Mybatis)组合中的Mybatis框架的使用要点
这是一篇关于Mysql的思维导图,MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
社区模板帮助中心,点此进入>>
安全教育的重要性
个人日常活动安排思维导图
西游记主要人物性格分析
17种头脑风暴法
如何令自己更快乐
头脑风暴法四个原则
思维导图
第二职业规划书
记一篇有颜又有料的笔记-by babe
伯赞学习技巧
消息队列
概念
削峰,解耦,异步
预处理系统中一件查询,调用多个系统接口,检查宽带链路,各个接口的调用使用消息队列异步解耦
调度系统工单接口,使用消息队列接收并创建工单,当有批量工单到来时,系统可以正常处理工单
模式
Pub/sub
点对点
常见的消息队列
Kafka
RocketMQ
高可用
主从架构
RabbitMQ
镜像复制模式
queue在每个节点都同步
分布式
每个节点是一个broker
每个topic可划分多个partition
每个partition都会在其他机器上产生replica副本
所有replica副本会选举出一个leader,其他的为follower
读
从leader读取消息
消息必须是所有follower返回ack的
写
follower主动从leader上pull消息
leader收到所有follower返回的ack返回生产者写成功
重复消费消息
进程重启等情况
从业务角度处理
消息传输可靠性
生产者丢失消息
事务模式
吞吐量降低
confirm模式
每个消息都有唯一id
写成功返回ack
写失败回调nock接口
RabbitMQ丢失消息
创建Queue时设置为持久化
发送消息时deliveryMode为2
消息持久化到磁盘中
消费者丢失消息
手动ack
producer
MQ
配置topic保证每个partition至少2个副本
配置kafka服务端leader至少感知有一个follower链接
配置producer每条消息必须收到所有副本写成功
配置producer消息失败无限重试
consumer
关闭自动ofset改为手动ofset
消息有序性
一个consumer对应一个queue
消息放到一个partition中
消费端使用queue控制有序消费
消息积压
消费端挂掉服务正常消费消息导致消息积压
修复消费端,积压消息单独使用临时消费端处理