闲情居|「mq」 消息队列 - 作用与优缺点详细讲解( 二 )
此时 , 系统的写业务会大量的请求打到MySql中 , MySql每秒处理2K+左右请求时 , 负载已经相当大 。 如果突然2W+的请求都打到MySQL中 , 可能会直接将MySql打死 , 导致业务系统崩溃 。
如果使用MQ进行削峰 , 将数据发送到MQ系统中 , 通过慢慢消费MQ中的数据 , 写入到MySQL中 。 在这种模式下 , 保证了系统A的稳定性 , 保证系统的健壮 。 而MQ每秒中写入2W数据 , 而每秒只消费2K数据 , 会导致有大量的请求数据积压在MQ中 。
所以 , 当请求真的巨大 , 分库(分实例)是需要的 。
但是 , 这个积压是短暂的 。 因为高峰期过后 , 每秒钟的请求量较小 , MQ消费端会快速的消费掉积压的数据 。
总结削峰处理 , 可以给系统带来更高的吞吐量和更稳定的支撑 。
虽然在高峰期 , 确实会给用户来带来一定的数据延迟 。 但是这个延迟正常也是在300ms-1s以内 。 这在如支付账单等场景中完全是可以接受的 。
消息队列的优缺点消息队列的优点 , 就是上述中的在特殊场景下的对应好处 。
解耦: 降低系统耦合性 , 给维护、开发带来更好的便利和更好的可扩展性 。
异步:降低系统之间调用的耗时 , 给用户带来更好的感官体验 。
削峰:提升系统的吞吐量 , 同时提升了系统的健壮性、稳定性 。
缺点有以下几个:
- 降低了系统的可用性
- 提升了系统的复杂度
- 一致性问题
但是 , 如果系统B因为业务问题 , 迟迟无法消费成功 。 则此时 , 多个系统之间数据是不一致的 。
所以 , 消息队列实际上是一种非常复杂的架构体系 , 引入它会得到很多好处 , 但是同时也带来了各种问题 , 需要额外的针对这些问题使用技术方案或者架构来进行规避 。 它会导致系统的复杂度提长一个量级 。
但是 , 需要用的时候 , 还是得用!!消息队列带的好处远远大于带来的问题!!
PS:当然 , 如果系统流量较低、业务不复杂 , 不是很急需引入消息队列来进行解耦、异步和削峰的情况下 , 还是不建议增加系统的复杂度了 。
一切的架构都是基于业务的 。脱离业务来谈架构的行为 , 都是耍流氓!!
推荐阅读
- 金十数据|中国7月制造业交亮眼成绩单!上半年美国对华投资增长6%,好消息
- 北斗三号卫星|7月31日,外交部传来好消息,这场硬仗中国赢得漂亮,联合国电贺
- 春晚|国家一级演员林永健,春晚彩排时收到儿子去世消息,网友:太心酸
- 参考消息|印度内政部长感染新冠病毒
- 参考消息|白宫幕僚长:美国将于11月3日举行大选
- IT之家|北斗办:已经着手下一代北斗建设
- 华为|消息称华为Mate 40发布时间或推迟到10月底:包含四个版本
- 涉案14亿公安局长竟是黑老大|涉案14亿公安局长竟是黑老大 为什么如此猖狂?
- 足球小子|内马尔好消息!对手不败纪录被终结,巴黎巨星冲击5冠王,?0-2
- 【相思病】夜聊时,男生“频繁”发这3条消息,咳咳,他“相思病”犯了!
