前端監(jiān)控系統(tǒng)是采集用戶端的異常、性能、業(yè)務埋點等數(shù)據(jù)上報,在服務端做存儲,并支持可視化分析的平臺。
用戶量可能很大,采集的數(shù)據(jù)可能比較多,這時候服務端的并發(fā)壓力會比較大,要是直接存入數(shù)據(jù)庫,那數(shù)據(jù)庫服務很可能會崩掉。
那就用現(xiàn)在的數(shù)據(jù)庫,如何保證面對大量并發(fā)請求的時候,服務不崩呢?

第一個 web 服務接收請求,把消息存入 RabbitMQ,然后另一個 web 服務從 MQ 中取出消息存入數(shù)據(jù)庫。
有同學說,這不是一樣么?
不一樣,MQ 的并發(fā)量比數(shù)據(jù)庫高很多。之前 web 服務要等數(shù)據(jù)庫存儲完成才能響應,而現(xiàn)在只存入 MQ 就可以響應了。那可以支持的并發(fā)量就更多。
而數(shù)據(jù)庫的并發(fā)比較低,我們可以通過 MQ 把消費的上限調低,就能保證數(shù)據(jù)庫服務不崩。
比如 10w 的消息進來,每次只從中取出 1000 來消費:
并發(fā)量被控制住了,自然就崩不了了,從 MQ 中取出慢慢處理就好了。
這就是 MQ 的流量削峰的功能。
而且完全可以加幾個 web 服務來同時消費 MQ 中的消息:
知道了 RabbitMQ 能干啥,那我們就來用一下試試吧!
該文章在 2023/5/9 16:31:55 編輯過