背景
我們面臨的問題是,我們正在做的視頻編碼,並希望負載分配到集羣中的多個節點。動態服務創建分配負載
我們希望將特定節點上的視頻編碼作業的數量限制在某個最大值。我們還希望將小視頻編碼作業發送到羣集中的某個特定分組節點,並將長視頻編碼作業發送到集羣中的另一個分組節點。
這背後的想法是通過將大型作業分割成單獨的節點池來幫助維護客戶端之間的公平性。這有助於確保小型視頻編碼作業不會被運行長編碼作業的單個租戶阻止/限制。
使用服務織物
我們計劃使用ASF服務的視頻編碼。考慮到這一點,我們有一個動態創建每個作業的服務的想法。然後可以使用放置約束來確定作業將運行在哪個節點池。基於內存使用情況,CPU使用情況的自定義度量標準...可用於限制節點上活動作業的數量。
使用此方法,分配作業的節點將不得不查詢是否可以創建滿足佈局約束和度量標準的新服務。
問題
- 當一個服務不能放在一個節點上會發生什麼? (使用CreateServiceAsync我假設?)
- 這個民意測驗是否過於昂貴?
我們的視頻編碼可執行文件與大約80MB的服務一起打包。這會使新服務的啓動需要很長時間嗎? (分鐘與秒)
作爲替代方案,我們可以使用基於隊列的可靠系統,其中大作業池從一個隊列中拉出,小作業池從另一個隊列中拉出。這似乎是更簡單的方法,但我想探索所有選項以確保我不會錯過Service Fabric的某些功能。有沒有更好的方法你會建議?