这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战
MQ的相关概念
MQ可以实现什么功能
流量削峰
面对大量的请求,使用MQ做缓冲,把一秒内的请求分散成一段时间来处理。
例如天山,该山最多仅能容纳 一万人次,这容量在平常时间已经足够应付过去旅游散心的人。但是在 天山论剑 时期,武林中的每一个人都想过去证明自己,这时天山就容纳不了这么多的人了,只能限制前一万人进入比武,后续路途遥远的人到来之后 无法进入,只能在外面等着,那他们肯定不服气的,都是武林中人,凭什么人家就可以进去彰显武力,证明自己,而自己就只能在外面干等着,声音都听不到。
有人的地方就有江湖,来的人多了,一阻塞,脾气暴躁的人三两句话直接就打了起来,场面越来越混乱。就在这时,有位 MQ大侠 横空出世,只见他单手执剑,往前轻轻一挥,天山旁的一座山峰山腰处发出一道耀眼的光芒,峰顶缓缓向下滑动,倒在一旁。
所有人都先到隔壁的山峰去比试,获胜的人再前往主峰进行比试。MQ大侠 冷冷说到。于是后面赶来的人纷纷转向隔壁的山峰进行比武。
应用解耦
应用系统中有多个子系统,任何一个子系统出现故障,都会导致整体流程的调用异常。当将其需处理的问题缓存至 MQ 中后,系统间的调用问题会减少很多,某个子系统发生故障后,可以等待其修复完成,再从 MQ 中读取消息进行处理,而后通知下游子系统。
某日,龙门镖局接到一件货物,需要在五天内送往边关,二当家赶忙召集局中镖师整备出发。
前两日风平浪静,大家不免有些松懈,就在此时,一波暗箭射来,顿时有几名镖师伤亡,几名蒙面黑衣人从林中冲出,杀向镖车。二当家急忙发射求救信号,同时拔刀迎向黑衣人。镖局中人由于受到暗箭所伤,渐渐不敌黑衣人。眼看黑衣人逐渐靠近,二当家心中焦急,就在此时,MQ大侠 赶至,连忙出手帮忙。怎耐敌方人多势众,MQ大侠 也无法击溃黑衣人。
二当家只能将货物交给 MQ大侠,让他先突围出去与总镖头回合,自己与其他镖师一起牵制着黑衣人。MQ大侠 带着货物突围而出,提起轻功往边关方向飞去。黑衣人分兵追击,直至途中遇到赶来支援的总镖头,总镖头连忙招呼众人迎接 MQ大侠,击杀黑衣人。
MQ大侠 顺利将货物移交回龙门镖局,使其完成押送任务。
异步处理
当服务间当调用方式为异步调用,原先获得结果当方式有两种,主动发起查询与提供callback接口给被调用方调用。这两种方式都不太优雅,采用MQ可以很方便当解决该问题。
MQ大侠 在游戏人间时,创建来一个佣兵工会,给人提供一个发布任务,赚取赏金当平台。
任务的发布者发布在平台上发布任务之后,只需要过来平台这边进行查询即可得知任务的结果,这样哪怕发布多个任务,也只需要到这一处进行查询,不需要单独对每一位佣兵跟进了解情况,可以将时间空出来继续忙其它的事情。
而佣兵们也只需要在任务完成之后告知平台即可,平台会将结果告知雇主,佣兵无需寻找或等待雇主来与自己进行确认。
其它
江湖上还有许多MQ大侠的传说,需要等待少侠步入江湖后再去深入挖掘,给不凡的生活增添一份乐趣。
四大MQ
- ActiveMQ
- Kafka
- RocketMQ
- RabbitMQ
ActiveMQ | RabbitMQ | RocketMQ | Kafka | |
---|---|---|---|---|
单机吞吐量 | 万级 | 万级 | 十万级 | 十万级 |
时效性 | ms级 | 微秒级 | ms级 | ms级 |
可用性 | 高 | 高 | 非常高 | 非常高 |
可靠性 | 低 | 高 | 中 | 中 |
优点 | 非常成熟,功能强大,在业内大量的公司以及项目中都有应用 | 性能极其好,延时很低,MQ功能比较完备,社区活跃 | 接口简单易用,性能非常好,可以做到大规模吞吐 | 超高的吞吐量,ms级的延迟,极高的可用性以及可靠性 |
缺点 | 偶尔会有较低概率丢失消息,而且官方社区对ActiveMQ 5.x维护越来越少 | 吞吐量低,集群动态扩展麻烦 | 仅提供较少的核心功能,有可能消息重复消费,对数据准确性会造成极其轻微的影响 |
安装:
安装这一步就直接跳过了,RabbitMQ官网里面就有多个操作系统的安装案例,按照说明来执行就可以了。
最后
文章有写的不好的地方,请大佬们不吝赐教,错误是最能让人成长的,愿我与大佬间的距离逐渐缩短!
如果觉得文章对你有帮助,请 点赞、收藏、关注、评论 一键四连支持,你的支持就是我创作最大的动力!!!