簡體   English   中英

從 Azure 隊列調用 REST API

[英]Call REST API from Azure Queue

我知道這個問題是有線的,但我不能 100% 確定是否可能。 需要專家建議。

我正在使用這種架構(見圖 1),有一個 MVC WebAPI 將數據放入 Azure 隊列,然后隊列將調用 Azure 函數來執行小任務但數量非常大,例如隊列正在向 Azure 函數發送 5k - 10k 請求1分鍾。

圖。1 在此處輸入圖片說明

我們想刪除 Azure Function,因為它花費了我們很多。 我們想去替代它。 為此,有人分享了使用另一個 MVC WebAPI 刪除 Azure 函數的想法。 (見圖2)

圖2 在此處輸入圖片說明

上面的架構是可能的嗎? 如果是,那么如何,如果不是,那么任何人都可以提出任何建議嗎?

將 Azure Functions 與存儲隊列觸發器一起使用時,Azure Functions 將根據隊列上的負載進行橫向擴展。 默認情況下, batchSize設置為 16。該設置可以通過host.json進行配置

Functions 運行時同時檢索和並行處理的隊列消息數。 當正在處理的數量下降到 newBatchThreshold 時,運行時會獲得另一個批次並開始處理這些消息。 因此,每個函數處理的最大並發消息數是 batchSize 加上 newBatchThreshold。 此限制分別適用於每個隊列觸發的函數。

當消息數量很大時,僅此設置可能不夠。 在這種情況下,您希望限制與用於執行 Function App 的 VM 數量相關的橫向擴展行為。 該設置是一個應用設置WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT 將其設置為 1 會阻止任何擴展到新 VM,但根據文檔

此設置是一個預覽功能 - 並且只有在設置為 <= 5 的值時才可靠

雖然您的重點是處理成本,但也要考慮時間。 除非等待消息處理很長時間是可以的,否則您可能有函數的其他替代方法。 但是成本和處理時間之間的權衡總是存在的。

暫無
暫無

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

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