![](/img/trans.png)
[英]Hosting TCP based WCF service on the same ports as IIS (via Windows Activation Service) in Azure WebRole
[英]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.