簡體   English   中英

AWS 上托管的 .NET Core 后台服務的最佳實踐

[英]Best practices for .NET Core's BackgroundServices hosted on AWS

目前我有 web api 構建在 ASP.NET Core 5 Web Api 之上,它托管在 AWS (Fargate) 上。 將來計划對其進行擴展。 現在,存在對BackgroundService的需求,因為一個 API 端點必須生成一些需要上傳給多個相關方的報告,因為報告生成和發送到 3 個不同的端點可能需要 5-10 秒甚至更多,而 API 的客戶端不感興趣這些行動的結果。

我的方法是:在報告表(SentTo1Side、SentTo2Side、SentTo3Site)中創建列,然后使用后台服務從我之前放入隊列的 AWS 隊列中“收集”消息,而 web api 的客戶端調用了我的端點。 發送后,我從隊列中刪除消息並更新 SentToXSide 列

我的問題是:

擴展我的 web api 是否應該導致同時運行多個后台服務? 我想是的。 那么如何防止向客戶端發送多個報告。 這就是我使用 AWS Sqs 的原因 - 在我的情況下甚至可能不需要,因為我可以循環遍歷數據庫行以查看未發送哪些報告)。

在完美的場景中,您將根據吞吐量擴展后台服務(工作者)。 SQS 可以確保一個作業被處理一次,當出現問題時,該作業將被重新處理。

擴展我的 web api 是否應該導致同時運行多個后台服務? 不,縮放應該由所需的工作量引起,因為處理請求可能比處理作業快。

那么如何防止向客戶端發送多個報告。 如果您做對了,SQS 會為您解決這個問題。

暫無
暫無

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

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