mq
概念:消息队列,消息传输过程中保存消息的容器,多用于分布式系统之间的通信。基于生产者和消费者模式。本质上解决通信问题,起到代理作用。
作用:
解耦(维护性,加多个系统,直接加mp,不用改原先项目的代码)
异步
削峰(设置每秒从mq拉去的请求数量)
缺点:
系统可用性降低(引用外部依赖越多,系统稳定性越差)
系统复杂度提高(系统间的调用从同步变为了异步。数据可能丢失)
数据一致性 (比如更新浏览量、点赞数等用mq,那么文章的浏览量可能与实时浏览量不一致)
MQ:低延迟(类似银行提现、转账)
四种mq
activity MQ:apache,完全支持jms规范,api丰富,多种集群架构模式,性能不高,最小型。
kafka:apacha,高并发、效率高、对数据一致性不是很支持。
RocketMQ:阿里开源,纯java开发。高并发、高可用、适应大规模分布式应用的特点。对数据一致性做了优化。
RabbitMQ:(amop协议、erlang语言开发)可靠、安全、稳定、对数据一致性要求很高。性能略输。
RabbitMQ
默认端口:5672