消息队列的相关知识
使用消息队列的好处以及使用场景还有引发的问题 1.流量削峰,用于短时间高并发流量情况,如秒杀活动,双11活动 在传统模式中,用户请求到达服务器后,再由服务器将数据写入数据库,在高并发情况下,流量暴增,数据库写入压力剧增,造成服务器响应时间漫长. 使用消息队列后,服务器将数据发送到消息队列服务器,然后将响应结果返回给用户,消息队列的数据由其消费者去读取并异步的写入到数据库.通过拉长数据处理时间来减少数据库瞬时压力达到流量削峰的目的 2,服务解耦 假设有这样一个场景, 服务A产生数据, 而服务B,C,D需要这些数据, 那么我们可以在A服务中直接调用B,C,D服务,把数据传递到下游服务即可 但是,随着我们的应用规模不断扩大,会有更多的服务需要A的数据,如果有几十甚至几百个下游服务,而且会不断变更,再加上还要考虑下游服务出错的情况,那么A服务中调用代码的维护会极为困难 使用消息队列后, A服务只需要向消息服务器发送消息,而不用考虑谁需要这些数据;下游服务如果需要数据,自行从消息服务器订阅消息,不再需要数据时则取消订阅即可 3.异步调用 考虑定外卖支付成功的情况 支付后要发送支付成功的通知,再寻找外卖小哥来进行配送,而寻找外卖小哥的过程非常耗时,尤其是高峰期,可能要等待几十秒甚至更长 这样就造成整条调用链路响应非常缓慢 而如果我们引入消息队列,订单数据可以发送到消息队列服务器