消息隊列的作用解耦、異步、削峯
1、解耦
傳統模式
一個班級,班裏有新學生報道,班主任要修改班裏學生名單,有什麼事情都問班主任,班主任很忙。
後來班裏設了一個班長,班主任有什麼消息通知班長,大家有什麼消息直接問班長就行了。
中間件模式
中間件的優點:將系統A將消息寫入消息隊列就行,其他系統需要什麼消息,找消息隊列訂閱,從而系統A不需要做什麼修改
異步
小王找老師修改ppt,小李找老師假條簽字,小趙找老師補習功課,小錢找老師開證明。
傳統方式可能得一個個來吧,可能簽字蓋章時間很快,那也得等其他同學弄完,有個先來後到。
中間件模式
異步的話,可以不按照順序進行,讓班長給同學簽字蓋章,老師給同學修改ppt和補作業,這樣有的同學就不用等太久啦。
中間件優點:將消息寫入消息隊列,非必要的業務邏輯以異步的方式運行,加快響應速度。
削峯
傳統模式
傳統模式的缺點:併發量大的時候,所有的請求直接懟到數據庫,造成數據庫連接異常
放假前一天,好多同學過來找老師,老師忙的飯都顧不得吃,
中間件模式:
老師忙不過來啊,找來班長,班長在門口告訴大家彆着急,一個個來,先收集好大家的材料,按照順序,一個個見老師。
中間件模式優點:
系統A會慢慢的按照數據庫處理的併發量,從消息隊列中慢慢拉取消息。在生產中,這個短暫的高峯期積壓是允許的。
借鑑來源