MQ有哪些场景?
消峰,大促销,秒杀,使用mq进行排队达到消峰的目的
异步,
解耦,mq对服务之间进行解耦,同时达到异步的目的
日志收集,对大数据量的处理
MQ的架构?
底层通过队列模式实现消息收发,
mq主要分为四个角色:nameserver,brocer,producer,consumer—
nameserver:主要是存储broker的所有消息,topic和broker的对应关系
broker:最核心模块,主要是负责消息的存储
producer:消息生产者
consumer:消息消费者
主要流程就是首先启动nameserver等待borker,producer,consumer连接
然后启动broker和nameserver保持长连接,定时向nameserver发送心跳包,
包含broker的所有信息以及与topic的所有信息,
producer跟broker建立长连接然后直接发送消息,
consumer获取topic,并且跟broker建立长连接然后开始消费消息
RocketMQ的数据是存储到内存还是硬盘,如果是硬盘那么怎么保证速度?
储存在硬盘,因为它使用了零拷贝技术,并且分区数据顺序存放,还引进了pagechche预读取机制。
发送消息的几种方式:
异步,通过回调方式获取返回值
同步,发送消息需要等待返回值
单向消息,没有返回值
拉取模式有哪两种
push:推,实时性强
pull:拉,定时去关联分区
rocketmq如何保证消息的顺序
分为全局有序:单线程执行,一个topic下的消息都是顺序的,保证一个队列存放消息,一个消费者从这一个队列获取消息
局部有序:只要保证一个队列中的消息有序消费即可,
延迟消息有用吗?
设置消息的过期时间等级,用于vip到期和确认收货
事务消息的使用场景?
比如打车付款,注册赠送积分,可以延迟同步,采用最终一致性。