2016-11-10 74 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

相关问题