簡體   English   中英

在Azure WebRole中以高可用性托管WCF服務

[英]Hosting a WCF service in Azure WebRole with high availability

我處於需要Azure WebRole上高度可用的WCF服務的情況下。 但是,存在一個小問題,因為此服務將處理需要從Blob存儲加載大量數據(3GB)的請求。 僅在服務啟動后才需要加載該數據! 因此,發生的事情是在服務的構造函數中,我正在加載此數據(大約需要2分鍾)。 對服務的每個請求僅花費約100毫秒。

我的第一個問題是該服務的構造函數僅在第一個請求時被調用。 因此,使用此服務的第一個人必須等待2分鍾,這真令人討厭。

第二個問題是服務每隔一天(有時是半周)必須再次加載該數據。 因此,我認為服務類已被處置? 因此,再次使用該服務的人必須等待2分鍾,該服務不負責。

我不知道為什么會這樣,以及如何阻止這種情況的發生。 我的服務位於InstanceContextMode.Single和ConcurrencyMode.Multiple中。

任何想法都受到高度贊賞!

如果魔術數據經常不更改,則應從OnStart()內部下載數據,以便在OnStart()返回之前不會將請求分派到角色實例。 OnStart()大約需要兩分鍾的額外時間,雖然不是很好,但是可以忍受,尤其是因為用戶不再注意到延遲了。

將3GB數據加載到輔助角色進程中可能不是一個好主意。 您提到了“高可用性”,所以當您想並排增加多個工作人員角色以平衡請求時會發生什么。 每個工作人員都需要托管該數據。 此外,在多實例環境中,Azure保留縮減您的服務,四處移動和將其旋轉回以用於資源分配目的的權利。

您是否考慮過使用App Fabric / Windows Azure緩存來托管數據?

http://www.windowsazure.com/en-us/pricing/details/caching/

您可以使用單獨的輔助角色將其加載到緩存中,並在服務器負載較低的某個已知時間按需要刷新它。

然后,您可以讓所有的Web服務工作人員角色根據需要查詢緩存中的數據。

暫無
暫無

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

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