RocketMQ 主要功能

144 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

应用解耦

本来一个 all in one 的包(所有的功能都在一个包里),按照功能给它拆开来,比方说用户和订单模块拆开来,那么一旦拆开来后,就需要用 SOA 模式进行相互调用,调用的时候就得发请求过去,这种请求是有状态关系的,如果 A 给 B 发请求,如果此时 B 宕机了,这时候就需要进行熔断降级;如果想让他调通的话,可以做一个负载均衡,跑多个 B 模块,一个调不通可以调用第二个,此时在 A 模块需要维护一个服务列表;如果三个全部宕机了,这种叫做两个模块强耦合,也就是一旦调不同就会报错

这时候可以使用一个第三方模块,也就是 RocketMQ, 服务 A 想调用服务 B,把想做的事情写进去,等服务 B 没问题有时间了,再从服务 B 中拿出来进行执行,好处就是实现AB应用不在互相依赖,服务 B 即使都不在线,照样能完成业务,提交请求直接返回结果,实现异步,从而解耦合

这也是 RocketMQ 最重要的一个功能

流量削峰

前提:用户请求来了,有个接入层,能接住用户请求 当流量达到高峰的时候,我们通常会在接入层写一个限流算法来控制流量来保证服务的可用性,避免系统被击瘫,但是这种方式损失了一部分请求

此时可以使用 RocketMQ 来缓冲大量的请求,当 RocketMQ 中堆积消息过多时,我们可以动态上线增加服务,来保证不丢失重要请求

异步处理

当多个模块需要调用同一个模块的同一个消息时,需要串行处理,而当 RocketMQ 对垒后能实现并行处理,减少了总处理时间,也加快了上游服务响应