2016-11-10 105 views
1

在我們的服務結構應用程序中,我們有一項服務需要在運行期間將一些數據保留在內存中以優化性能,但在極少數情況下,我們需要清除此數據。在Azure服務結構中調用服務的特定實例

因此,在某些時候,一個調用來到這個服務,並告訴它清空它的緩存。問題在於,我們可能有多個此服務實例,並且當您在服務結構中調用服務時(來自其他服務),該調用只會結束一次。我需要一個調用此服務的所有實例。

,我們連接到我們的服務(使用泛型方法),像這樣:

T service = ServiceProxy.Create<T>(serviceUri); 

是否有指定服務的實例使用的方法嗎?或者以其他方式獲取消息給所有服務實例?

謝謝

+0

如果你認爲每個實例都像一個負載平衡集合一樣是一個單獨的節點,爲什麼不把它保留在一個可靠集合中的狀態數據 - 然後任何實例都可以清除它,並從集合中重新讀取它(幾乎)與從內存中讀取一樣快,但是在節點間會一致。 –

+0

@RussellYoung我實際上嘗試過使用可靠的集合,但是Assemblies是我需要存儲的類型之一,可靠的集合似乎不適用於Assemblies。我嘗試將其存儲爲byte []並在需要時加載程序集,但這會降低性能。另外,我可能是錯的,但是對於有狀態的服務,在您必須對服務進行分區時,似乎實際使用了多於一個的實例(即,不僅僅是冗餘副本),並且不在分區之間共享可靠的集合? – Tom

回答

0

這似乎是Service Fabric Pub/Sub的完美用例。只需要將需要在數據存儲器中清除其所有服務的服務作爲訂戶,然後您的呼叫服務就可以發佈將廣播給所有訂閱服務的消息。

查看更多這裏:https://github.com/loekd/ServiceFabric.PubSubActors

+0

我有些驚訝,有沒有更簡單的方法來做到這一點,但這可能是最好的解決方案,謝謝。 – Tom

相關問題