ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[info] 分布式队列 MQ全称为Message Queue 消息队列(MQ)是一种应用程序对应用程序的通信方法。MQ是消费-生产 者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息。消息 发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。 这样发布者和使用者都不用知道对方的存在。 ***** 消息队列场景有很多,核心的有 3 个:**解耦、异步、削峰** ![](https://img.kancloud.cn/5b/37/5b372cb851c6da5c7759817b64ba4039_886x501.png) 如上场景中,A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。A 系统要时时刻刻考虑 BCDE 四个系统如果挂了该咋办?要不要重发,要不要把消息存起来? ***** 如果使用 MQ,A 系统产生一条数据,发送到 MQ 里面去,哪个系统需要数据自己去 MQ 里面消费。如果新系统需要数据,直接从 MQ 里消费即可;如果某个系统不需要这条数据了,就取消对 MQ 消息的消费即可。这样下来,A 系统压根儿不需要去考虑要给谁发送数据,也不需要维护这个代码,也不需要考虑人家是否调用成功、失败超时等情况。 ![](https://img.kancloud.cn/a8/d1/a8d1d19097d96eb930ba910889a88ad0_920x504.png) **总结**:通过一个 MQ,Pub/Sub 发布订阅消息这么一个模型,A 系统就跟其它系统彻底解耦了。 ***** **那什么是分布式队列呢?** 分布式队列简单理解就是帮助我们实现跨进程、跨主机、跨网络的数据共享和数据传递,比如可用redis、Zookeeper实现一个简单可靠的分布式队列实现方式。 ![](https://img.kancloud.cn/7b/b8/7bb83cb90b068ef16a2e536672412c72_894x450.png)