【CDP-雲設計模式】第8章,2.優先級隊列模式(Priority Queue Pattern)

1.要解決的問題

  有時會有大量工作需要處理,而且這些工作可能需要重新定義優先級。例如,未付款用戶和訂閱用戶(如截止出版時間)可享受的不同級別的服務之間存在區別,舉個例子,從web瀏覽器上傳出版物的描述文件。當用戶上傳一個描述文件時,例如對於出版物所執行的轉換過程在系統端表現爲一批進程,轉換結束後文件就被髮布了。那麼此時給這些批處理進程指定優先級對於各類用戶來說就顯得十分重要了。

2.雲模式的說明

  隊列將被用於控制批處理工作。只需要給隊列提供優先級序號。工作請求由隊列控制,隊列中的工作請求由批處理服務器處理。在雲計算中,高可靠隊列是作爲一項服務被提供的,您可以用它來輕鬆構建高可靠的批處理系統。您可以根據優先級別準備多個隊列,並依據優先級將請求放入隊列,從而在批處理進程中應用優先級。相應隊列的批處理服務器的性能(數量)應該與其優先級別相匹配。

3.實施

  在AWS中,隊列服務是SQS。可能需要多個SQS隊列爲不同的優先級別準備隊列(包括優先隊列和次級隊列)。此外,您還可以使用消息延遲發送功能來推遲進程的執行。

  • 使用SQS爲不同的優先級別準備隊列。

  • 將需要立即執行的進程(工作請求)放置在高優先級隊列中。

  • 準備一定數量的批處理服務器,根據優先級別處理隊列中的工作請求。

  • 隊列擁有消息“延遲發送”的功能。您可以使用這項功能來推遲進程開始的時間。

4.配置

圖1

5.好處

  • 您可以增加或者減少處理工作的服務器數量從而自動調整優先隊列和次級隊列的工作處理速度。

  • 您僅需增加或者減少處理工作的EC2實例的數量就可以滿足性能和服務需求。

  • 即使EC2實例出現故障,消息(工作)仍會留在隊列服務中,使得進程能夠在EC2實例恢復後立刻繼續執行,從而打造一個面對故障也能穩如泰山的系統。

6.注意事項

  根據處理進程的EC2實例數量和隊列中消息數量的平衡情況,可能會出現次級隊列中的進程先處理完的情況,所以您需要監控主隊列和次級隊列的處理速度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章