2014-01-29 127 views
1

我需要能夠在Azure上定位特定的Web角色實例。我們有一個數據緩存,偶爾我需要能夠轉儲高速緩存,如果它變陳舊。我可以針對Azure上的特定Web角色實例嗎?

首先我們需要一遍又一遍地打了一個頁面,並再次檢查

Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.CurrentRoleInstance.Id 

我們檢查,看看這改變從0到1,以確保高速緩存在這兩種情況下傾倒。這不是一個理想的解決方案。我真的很希望能夠將請求指向實例0或實例1.

是否有任何方法專門將請求指向實例?

回答

2

不,你不能真的,即使你可以,它仍然看起來不可擴展。我會建議你去稍微區別一下。方式:而不是知道有多少服務器以及如何到達每個服務器,而只需要一個Azure服務總線主題。然後,您的Web應用程序的部分啓動邏輯將消失並訂閱此主題。接下來,在需要清理某些內容時,您可以向主題發送一條消息。然後,這條消息將被分發給每個訂閱者(正在監聽的web應用實例),而這個實例將負責從本地緩存中清除指定的緩存條目。

消息的內容將取決於您的緩存方案,但我認爲它需要包含的所有內容都是要強制刷新的緩存項的關鍵字。

+0

不錯的方式來做到這一點,我們甚至可以使用帶有時間戳的數據庫標誌來清除它。我們還可以記錄哪些角色在何時清除緩存。非常有意義,謝謝。 –

3

德魯的答案是一個很好的答案,但它也可以直接解決個別實例。查看InstanceInputEndpoint - http://msdn.microsoft.com/en-us/library/windowsazure/gg557553.aspx#InstanceInputEndpoint

這使您可以爲所有實例指定一個端口範圍,然後在該範圍內,您可以使用正確的端口號來對每個實例進行尋址。

+0

是否可以使用它來引用外部世界的特定實例/終點? –

+0

是的Nicholas,這是InstanceInputEndpoints的用途。 – kwill

相關問題