簡體   English   中英

適用於長時間運行任務的Azure Service Fabric Actor

[英]Azure service fabric actor for long running tasks

我是Azure Service Fabric的新手。 根據我的研究,我非常熱衷於將其用於特定的優化問題方案。 但是,我在MSDN上找不到任何詳細信息來支持我的發現。

我的要求是我有一個Web API,該API可以獲取輸入並轉儲到數據庫中。 此輸入用於運行優化算法,該算法通常需要3-5分鍾左右。 用戶提交的多個請求可能最終需要處理。

我目前認為,每次優化輸入都會產生一個新的ASF可靠參與者,這是一個不錯的選擇。 但是,我不清楚ASF如何對長時間運行且不是瞬時的任務起作用。

此外,我不確定群集中的資源利用率如何。 我的最終目標是能夠在並行需要時至少提交預定義數量的優化算法參與者無狀態服務。

非常感謝您就我所關心的問題提供技術建議。 對於這種情況,我應該考慮是演員還是無國籍

我認為這里至關重要的是在后台進行計算。 優化算法運行時,服務/演員調用者不應一直等待。

為此,您需要執行一條命令,將其保存在某個位置(一個Queue會做得很好),然后將令牌返回給調用方。 令牌可用於查詢狀態/進度。

Actor中執行此操作需要:

  • 使用StateManager保留隊列,該隊列保留作業
  • 注冊一個計時器來處理工作。
  • (可選)致電其他(額外)演員以報告進度

無狀態服務中執行此操作需要:

  • 外部隊列(這是一個外部依賴關系,會影響可用性)
  • (可選)外部進度存儲

在有狀態服務(附加選擇)中執行此操作需要:

  • 使用StateManager持有ReliableQueue
  • 定期檢查此隊列中RunAsync工作。
  • (可選)定期將進度存儲在StateManager

我懷疑最適合這種情況的服務類型是有狀態服務。 這是一個有狀態服務的示例,它排隊和處理工作。

我認為有狀態和無狀態的結合將是您的方案的一個很好的解決方案。 使用有狀態的隊列請求,並使用無狀態的處理(算法)請求。 如果需要,SF集群將根據負載為集群中的其他節點創建無狀態服務的新實例。 有狀態服務將是您的持久存儲,用於存儲請求(通過可靠的隊列)和進度(可靠的字典)。 有狀態服務在群集中維護一個主副本和兩個輔助副本。

暫無
暫無

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

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