簡體   English   中英

使用某些命令自動縮放雲服務

[英]Autoscaling of Cloud services which works with some commands

我在 Azure 上將自定義工作器作為雲服務(經典)。 我已經安排了工作時間 (5) 和其他時間 (20) 實例數量的自動縮放。

有時當一些工作人員正在處理命令時會出現問題,但這是營業時間的開始,因此實例被“殺死”(縮小)。 結果命令沒有完成。 命令是來自 Azure 隊列的消息。 所以基本上消息返回到隊列。 但是另一個工人需要一些時間才能再次獲取該消息。

所以問題是 - 只有在完成消息/命令的工作后,是否有一種自動擴展工作人員的方法?

請參閱如何停止 WebRole/WorkerRole 的單個實例/VM 中的答案

簡而言之,您可以使用刪除角色實例 API ( https://docs.microsoft.com/en-us/previous-versions/azure/reference/dn469418(v=azure.100) ) 來指定您想要的角色實例去關機。 但是,這不適用於自動縮放,您必須編寫一些代碼來確定要關閉哪些實例。

通常,更好的解決方案是確保輔助角色實例正在執行的工作是冪等的並且可以輕松恢復。 聽起來您已經有了這種設計,但是它所花費的時間存在問題,在這種情況下,您可能有機會將每個“命令”分解為更小的工作單元,以便在處理該命令時可以保持進度稍后被一個新實例接收。

你的角色的OnStop會在它被拆除時被調用。 根據文檔:

一旦 OnStop 方法完成執行,角色將被停止。 如果其他代碼需要時間才能正常退出,您應該保持 OnStop 線程忙碌,直到執行完成。

您可以利用這 5 分鍾的寬限期從角色實例中清除活動工作。 如果您在整個任務中共享一個取消令牌,例如,您可以在OnStop期間取消OnStop工作並處理取消以立即使工作再次在隊列中可見,而不是等待超時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM