MQ的作用是非常之大的。
1、解耦。
當一個大型的系統。比如,商城系統。包括以下的功能:
1、發郵件
2、發短信
3、抽獎
4、搜索等
如果你都用一台服務器,做到一個程序里,代碼會非常龐大,不利於維護。同時一台服務器的機器性能也跟不上。
我們用MQ來做,它們之間的通信,直接用MQ。
2、銷峰。
假如你的秒殺活動,同時有一大批人在搶購,這個時候,如果你每個人都等待走完整的流程,那么系統會非常的延遲、我們也沒有辦法保證一定是按順序執行的、有可能會多買,兩個用戶同時中獎等,數據不完。如果我們可以把用戶提交的內容直接入MQ,用戶就不用等待,同時有多台服務器來完成后續的任務。因為消息是順序的,也保證了排隊的公平性和不出錯。
3、定時任務。
定時任務是一個頭痛的問題,通常我們把消息寫入數據庫,用一個線程來監視,當時間到了之后就開始執行。這種做法太麻煩、因為它沒辦法做成柱塞式的,所以性能有影響,同時也容易出錯,直接做成MQ來通知,豈不是更好!節省了一大堆時間,也保證了不會出現時間錯誤!
RabbitMQ、
Redis、
ZeroMQ、
ActiveMQ、
Jafka/Kafka
它們各有優缺點,但是總體來說,我還是喜歡用雲。因為太簡單了。不用自己架設服務器!
有了MQ這種東西,你很容易做出高可靠性的,游戲,電商,社交等應用。。。。
棋牌游戲中,聊天,出牌,等消息處理
電商中,解耦、分布式、銷峰
社交中,聊天室,如果你的消息是自己轉發的,那么幾萬個人的時候,你有水平、硬件需要有多高、多強大才有滿足呢?