【CDP-雲設計模式】第8章,3.工作觀察者模式(Job Observer Pattern)

1.要解決的問題

  在爲批處理進程分配負載時,可以通過使用隊列來控制工作請求,被列隊的工作請求將被多個批服務器平行處理。然而,如果不採用雲技術,批處理服務器的創建數量將由高峯請求量決定,那麼在高峯期外的其他時段多餘的批處理服務器將造成資源浪費,這不利於經濟效益。除此之外,當出現無法預估的大量請求負載時,批處理系統也不能及時響應。

2.雲模式的說明

  在過去,服務器資源是不能動態增加或者減少的,批處理服務器的提供數量是由高峯需求和可用成本決定的。這導致了較低的成本效益和無力應對預料之外的負載等問題。 在AWS雲中,系統可以通過監控負載自動增加或減少虛機的數量。您可以根據負載自動伸縮批處理服務器的數量,獲得極佳的成本效益,並且可以應對預料之外的負載。具體說來,通過監控工作請求(隊列消息),批處理服務器可按要求自動增加或減少。

3.實施

  AWS中有一個名叫“Auto Scaling”的系統,可以自動增加或減少EC2實例的數量,它和資源監控工具,也就是”CloudWatch“協同工作,按照監測值來決定增加或者減少EC2實例的數量。在AWS中,SQS隊列中的消息數量可被CloudWatch監控。您可以使用SQS管理工作請求,並且使用Auto Scaling和CloudWatch構建一個可以根據隊列消息數量自動增加或減少批處理服務器數量的系統。

  • 將工作請求納入隊列作爲SQS消息。

  • 使批處理服務器獲取來自SQS的隊列消息並進行處理。

  • 設置Auto Scaling用來自動增加或減少批處理服務器的數量,使用SQS消息數量(雲監控)作爲觸發器。

4.配置

圖片1

5.好處

  • 這可以協調作爲工作服務器的EC2實例數量和任務數量,從而提高成本效益。

  • 通過並行處理,可以減少處理工作的總體時間。

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

6.注意事項

  EC2實例的租用是根據單位時間計費的,最少一小時起,所以如果一個EC2實例啓動了之後立即關閉也會收一個小時的費用。因此,您需要注意實例的啓動和關閉時間。

7.其他

  隊列鏈表模式和優先級隊列模式可以結合使用。

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