一、什么是MQ
message queue 消息队列。是一种进程间通信或者同一进程不同线程间的通信方式。消息的发送者和接收者不需要同时与消息队列交互,消息会保存在队列中,直到接收者取回它。(只是转发,不做任何逻辑的处理)
二、常见的mq类型
- ActiveMQ:阿帕奇用java开发,比较老牌,性能不高,对于高并发容易出现堵塞、错误,没办法因对现在的大数据
- kafka(卡夫卡):专门用于日志数据收集,性能非常高,消息可靠性不优,有重发、错误、丢失
- RocketMQ:阿里巴巴借鉴kafka开发,改进了kafka的缺点,性能高、可靠性强,已开源但是有某些功能呢不够完整,只有收费商业版才会实现所有的功能
- RabbitMQ:全开源、高可靠、安全
三、使用mq的优点
- 解耦
- 异步提速
- 削峰
四、使用mq会带来的问题
- 引入外部依赖越多,系统稳定性越差
- 一旦mq宕机,就会对业务造成影响
- 加大了系统的复杂度
- 一致性问题
五、rabbitmq内部逻辑(原理)
六、rabbitmq六种模式(详情->官方文档)
七、使用mq需要满足什么条件(什么场景下使用)
- 生产者不需要从消费者处获得反馈(接口返回值为空)
- 允许短暂的不一致性
- 确实用了有效果