1:什么叫消息中间件(MQ)
没有具体的定义。消息中间件属于分布式系统中的一个工具,类似于redis、mongoDB等第三方的产品。关注 消息的发送和接受,利用高效可靠的异步消息传递机制,对分布式系统中的各个子系统进行集成。
2:为什么使用消息中间价
解耦:之前的项目生成一个war包,把war包拆分成不同的系统。利用消息中间件进行解耦。(这种是松耦合)
异步处理:我们只需要把消息放入到mq当中,不用去管后面的操作,这样就可以实现异步的机制。
缓冲:当高并发数据量很多的时候,mq可能处理不了,这时候就可以先把数据保存起来。然后一点点处理掉。
伸缩性:当高并发的时候,我们的接受方或者消费方处理起来比较慢,可以添加集群来保证我们系统正常运行。当没有高并发的时候,也可以删除集群中的应用。
扩展性:当添加一个子系统的时候,只需要订阅这个mq就无缝的连接,当不需要这个子系统的时候,直接删除就行。
3:应用场景
解耦:订单接口调用物流接口,这时候两个接口是耦合在一起的,可以将这两个接口进行拆分,通过消息中间件进行关联。
异步:用户注册,当用户注册成功以后,会给用户发注册成功的短信、邮件。注册接口只关注注册,发短信业务是次要的。这样子也可以缩短接口的相应时间。
缓冲:对日志的操作,都是数据量很大的,这时候可以保存到mq中,进行缓冲。
消息通讯也可以使用mq进行操作。
流量削峰:例如秒杀或者团购,在某一时间流量很高,平常很稳定。把数据放入到mq中,然后缓慢的处理,在保存结果。
4:常用mq的比较
mq和RPC的区别
同步性:RPC是同步的,mq是异步的。
依赖性:RPC是强依赖的,mq是没有依赖的(只是松耦合)