LOADING

加载过慢请开启缓存,浏览器默认开启

interview - MQ

avator

组件

整体上来说,可以分为三个部分

1.生产者

2.消息队列

3.消费者

推/拉模型

avator

消费者模型

avator

RocketMQ

avator
整体架构

1.生产者集群:生产消息发送到RocketMQ集群

2.broker集群:负责消息存储、查询、服务高可用

3.NameServer:Topic路由的注册中心(每个topic对应一个queue),支持broker的服务注册和发现,集群中各节点不互通信息

4.消费者队列:从RocketMQ订阅消息,支持push pull两种方式获取消息

RocketMQ单实例环境

1.主体模型及功能

a.支持按照tag或者sql进行消息过滤

b.所有的消息存在commitlog,而非segment中,同一时刻只有一个commitlog是被写的

c.索引层面会分离,存偏移量和tag

d.有.index文件,存一些时间信息以及key的信息

上述三个都是固定大小,都是顺序io
message存commit log偏移量以及长度,还有哈希值

2.消息存储和检索

a.按照message id来查询

b.按照MessageKey来查询

c.按照消息队列偏移量查询

3.同步刷盘和异步刷盘

同步:

异步:

4.消费模型

RocketMQ多实例环境

4.5 前,主从架构

主节点挂掉了之后,切换比较长

4.5 后 Raft架构

数据复制,故障转移:

负载均衡:
avator

RabbitMQ

一款实现了AMQP(advanced Message Queuing Protocol)的基础上,并进行额外扩展的消息队列,针对多种工作模式,消息持久化,确认消费等

1.连接:

2.管道:在连接里获取一个channel,然后再去交互(tcp连接)

3.虚拟主机:通过虚拟主机来完成资源的隔离,由交换机和队列组成,交换机把不同的消息分配到不同的队列,交换机和队列通过绑定的方式实现,有一个绑定的key

4.队列:

现在用的越来越少了,消息存储在内存,支持消息持久化

高可用和集群比较麻烦

avator

RabbitMQ的几种工作模式

1.hello word

2.工作队列:生产者生产,多个消费者

3.发布订阅(fanout)模式:将消息交给交换机,然后发给所有的队列,让下游消费

4.路由模式:生产者的key和对应的binding key匹配发送到对应queue

5.主题模式:通过通配符来做路由的正则匹配,然后转发到对应queue

6.模拟RPC模式,客户端发送Request然后绑定回调队列,服务端消费队列,然后把处理的结果填充到请求的回调队列中,客户端监听回调队列

avator