使用消息中間件的場景:
- 異步:
例如用戶注冊成功后需要將用戶數(shù)據(jù)入庫,并且發(fā)送郵件和短信提示,可以在數(shù)據(jù)入庫后立即響應(yīng)用戶,然后發(fā)送消息到mq中執(zhí)行發(fā)送郵件和短信的操作。 - 解耦:
用戶下單成功,發(fā)送一條減少庫存的消息到mq中。 - 流量削峰:
比如10W人搶購10個商品,在Mq中可以設(shè)置隊列的長度為10,后面來的請求直接舍棄掉,降低DB的壓力。
常見的MQ:
- amq:性能不好,容易產(chǎn)生消息堆積
- kafaka:容易丟失消息,可以用來做日志收集
- rabbitmq:erlang語言寫的,性能比amq好,穩(wěn)定性比rabbimq好,裝環(huán)境注意版本號匹配
- rmq:(阿里)消息穩(wěn)定,速度快(收費)