为什么使用RabbitMQ消息队列

       我们会在“请求” -> "处理抢单业务的接口" 中间架一层消息中间件做“缓冲”、“缓压”处理,可以避免 “瞬间时刻一窝蜂的 request 涌入我们的接口” 的情况,主要原因是由于在高并发的环境下,由于服务器来不及同步处理,请求往往会发生堵塞的现象,比如说大量的增加、修改(insert、updata)之类的请求同事到达mysql,直接导致无数的行锁,表锁、甚至最后请求堆积过多,从而触发too many connections错误。通过使用消息队列MQ,我们就可以异步处理请求,从而缓解系统的压力。

       其实就是用队列等来保持请求,避免服务器处理不过来,所以你需要做的就是在API网关,把客户的请求放到一个消息队列,比如直接用JAVA的LinkedBlockingQueue等,然后服务器从这个里面取任务进行处理。
       如果用专业的MQ,那么就是API 网关做生产者,把客户端请求放入队列,后台服务器做消费者,从MQ中取任务来进行处理同时有几个人抢,请求不直接进入数据库,先放进队列,系统处理排第一的请求,获得订单,其他返回无。

发布了22 篇原创文章 · 获赞 6 · 访问量 4878

猜你喜欢

转载自blog.csdn.net/qq_37651252/article/details/102725309