訊息佇列在實際應用中包括如下四個場景:
具體場景:使用者使用qq相簿上傳一張,人臉識別系統會對該進行人臉識別,一般的做法是,伺服器接收到後,上傳系統立即呼叫人臉識別系統,呼叫完成後再返回成功,如下圖所示:
該方法有如下缺點:
人臉識別系統被調失敗,導致上傳失敗;
延遲高,需要人臉識別系統處理完成後,再返回給客戶端,即使使用者並不需要立即知道結果;
上傳系統與人臉識別系統之間互相呼叫,需要做耦合;
若使用訊息佇列:
客戶端上傳後,上傳系統將資訊如uin、批次寫入訊息佇列,直接返回成功;而人臉識別系統則定時從訊息佇列中取資料,完成對新增的識別。
此時上傳系統並不需要關心人臉識別系統是否對這些資訊的處理、以及何時對這些資訊進行處理。事實上,由於使用者並不需要立即知道人臉識別結果,人臉識別系統可以選擇不同的排程策略,按照閒時、忙時、正常時間,對佇列中的資訊進行處理。
具體場景:使用者為了使用某個應用,進行註冊,系統需要傳送註冊郵件並驗證簡訊。對這兩個操作的處理方式有兩種:序列及並行。
序列:50+50+50=150ms 並行:50+50 = 100ms
並在寫入訊息佇列後立即返回成功給客戶端,則總的響應時間依賴於寫入訊息佇列的時間,而寫入訊息佇列的時間本身是可以很快的,基本可以忽略不計,因此總的處理時間相比序列提高了2倍,相比並行提高了一倍
具體場景:購物**開展秒殺活動,一般由於瞬時訪問量過大,伺服器接收過大,會導致流量暴增,相關系統無法處理請求甚至崩潰。而加入訊息佇列後,系統可以從訊息佇列中取資料,相當於訊息佇列做了一次緩衝。
該方法有如下優點:
請求先入訊息佇列,而不是由業務處理系統直接處理,做了一次緩衝,極大地減少了業務處理系統的壓力;
佇列長度可以做限制,事實上,秒殺時,**佇列的使用者無法秒殺到商品,這些請求可以直接被拋棄,返回活動已結束或商品已售完資訊;
具體場景:使用者新上傳了一批**, 人臉識別系統需要對這個使用者的所有**進行聚類,聚類完成後由對賬系統重新生成使用者的人臉索引(加快查詢)。這三個子系統間由訊息佇列連線起來,前乙個階段的處理結果放入佇列中,後乙個階段從佇列中獲取訊息繼續處理。
該方法有如下優點:
避免了直接呼叫下乙個系統導致當前系統失敗;
每個子系統對於訊息的處理方式可以更為靈活,可以選擇收到訊息時就處理,可以選擇定時處理,也可以劃分時間段按不同處理速度處理;
訊息中介軟體的使用場景
一般認為,採用訊息傳送機制 訊息佇列 的中介軟體技術,進行資料交流,用在分布式系統的整合。解決分布式系統之間訊息的傳遞。電商場景 使用者下單減庫存,呼叫物流系統,系統擴充後服務化和業務拆分。系統互動,y一般用rpc 遠端過程呼叫 如果系統擴充到有幾十個介面,訊息中介軟體來解決問題。一 非同步處理 使...
訊息中介軟體應用場景
訊息佇列中介軟體是分布式系統中重要的元件,主要實現非同步訊息,應用解耦,流量削峰及訊息通訊等功能。下面舉例說明在實際應用中訊息佇列是如何使用的。以使用者註冊,並且需要註冊郵件和簡訊為例。使用者註冊後,需要傳送註冊郵件和註冊簡訊。傳統的做法有兩種 序列和並行方式。如下圖所示 1 序列方式 將註冊資訊寫...
訊息中介軟體(二)MQ使用場景
訊息佇列中介軟體是分布式系統中重要的元件,主要解決應用解耦,非同步訊息,流量削鋒等問題,實現高效能,高可用,可伸縮和最終一致性架構。目前使用較多的訊息佇列有activemq,rabbitmq,zeromq,kafka,metamq,rocketmq 以下介紹訊息佇列在實際應用中常用的使用場景。非同步...