为什么使用MQ(消息队列),这是一个很经典的问题,在互联网公司里,MQ是必须用到的,有以下场景:
异步处理
例如有一个表单提交,涉及多个系统的交互,形成一个冗长的流程,同步处理完毕,再返回给用户,则需要一定的时间,用户体验不好。
异步
而如果引入MQ,把关键步骤,照旧同步处理完毕,直接返回给用结果,非关键步骤,我们通过MQ,让系统背后慢慢消费,慢慢处理。
这样用户体验好,数据也最终一致性。
流量肖峰
有一个应用的接口,调用方特别多,如果每当来一个请求,服务器就进行处理,当瞬间来批量的请求,容易一下子把机器打死。
肖峰
而使用了MQ,多了一个消息队列,相当于多了一个缓存区。每增加一个请求,服务器可能不会立刻响应,而是先放到消息队列里边。服务器可以依次进行,在自己的性能范围内,不断地消费消息,处理请求。
系统解耦
互联网公司里边,每个部门,各负责各自系统,如果彼此的联系,仅仅通过rpc的接口调用,如此一来,双方的每次系统迭代更新,都要对彼此提供的client做一定的考量,增加一个字段、修改一个字段、增加一个参数、减少一个参数、修改个参数名,都要及时通知对方,很不方便。
而彼此之间增加MQ之后,虽然也是要留意下消息体字段,但是就没有那么苛刻,系统双方,显得灵活些。