2016-07-05 69 views
0

我有一個C#控制檯應用程序,它將服務器位置上的15GB FireBird數據庫文件提取到多個文件,並將文件中的數據加載到SQLServer數據庫。控制檯應用程序使用System.Threading.Tasks.Parallel類來執行從文件到sqlserver數據庫的dataload的並行執行。如何將長時間運行的進程託管到Azure雲中?

這是一個每週過程,需要6個小時才能完成。

將此(控制檯應用程序)流程轉移到天青雲 - WebJob或WorkerRole或任何其他雲服務的最佳選擇是什麼?

如何減少遷移到雲後的執行時間(6小時)?

如何實現建議的選項?請提供指針或代碼樣本等。

您的詳細評論幫助非常感謝。

謝謝

Bhanu。

+0

這兩個答案目前都能正常工作,儘管取決於數據讀取,您可能會發現需要擴展您的sql db以獲得您需要更快加載數據的DTU。數據加載完成後,您可以將數據庫縮小。 –

回答

2

讓我考慮一下對你的

「什麼是這個(控制檯應用程序)過程的推進 Azure雲最好的選擇? - WebJob或WorkerRole或任何其他雲服務」這個問題

首先,您可以通過WebJob和WorkerRole完成任務,但是我建議您使用WebJob。

約WebJob贊成是:

1

您可能想要查看Azure函數。您僅支付您使用的處理時間,並且似乎沒有最長運行時間(與AWS Lambda不同)。

他們可以按照時間表安排或從其他事件開始。

如果您已經在並行工作,您可以將一些並行任務分解爲獨立的天青功能。除此之外,如何加快速度需要具體瞭解你正在努力完成的任務。

在過去,當我試圖加快這樣的工作速度時,我會首先在處理包含當前時間或計算持續時間(使用StopWatch類)的過程中吐出日誌消息。然後找出哪些方面可以改進。速度緩慢也可能是由於SQL Server端的放緩所致。你需要更多的調查。但第一步總是捕捉指標。

由於Azure函數可以水平擴展,因此您可能需要先將文件中的數據分解爲更小的塊,然後讓這些函數處理每個塊。然後啓動這些塊的多個並行處理。請務必不要超出您的SQL Server能夠處理的範圍。

+0

只需要擡頭一看,Azure功能的每個運行實例都有一個時間限制。目前(截至2017-12-27)是10分鐘。也就是說,這篇文章中的其他內容非常有效。特別是如果你能夠並行運行的話。 – Hallmanac

相關問題