Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Azure服务结构中调用服务的特定实例_C#_Azure_Azure Service Fabric - Fatal编程技术网

C# 在Azure服务结构中调用服务的特定实例

C# 在Azure服务结构中调用服务的特定实例,c#,azure,azure-service-fabric,C#,Azure,Azure Service Fabric,在我们的service fabric应用程序中,有一项服务要求在运行期间在内存中保留一些数据以优化性能,但在某些罕见的情况下,我们需要清除这些数据 因此,在某个时刻,一个调用来到这个服务并告诉它清空缓存。出现的问题是,我们可能有多个此服务的实例,当您在服务结构中调用一个服务(从另一个服务)时,调用只会转到一个实例。我需要调用此服务的所有实例 我们连接到我们的服务(使用通用方法),如下所示: T service=ServiceProxy.Create(serviceUri); 有没有办法指定要使

在我们的service fabric应用程序中,有一项服务要求在运行期间在内存中保留一些数据以优化性能,但在某些罕见的情况下,我们需要清除这些数据

因此,在某个时刻,一个调用来到这个服务并告诉它清空缓存。出现的问题是,我们可能有多个此服务的实例,当您在服务结构中调用一个服务(从另一个服务)时,调用只会转到一个实例。我需要调用此服务的所有实例

我们连接到我们的服务(使用通用方法),如下所示:

T service=ServiceProxy.Create(serviceUri);
有没有办法指定要使用的服务实例?或者以其他方式向服务的所有实例获取消息


感谢

这似乎是Service Fabric Pub/Sub的一个完美用例。只需将需要清除其数据内存的所有服务都设置为订阅服务器,然后您的呼叫服务就可以发布消息,该消息将广播到所有订阅服务


请参阅此处的详细信息:

这似乎是服务结构发布/订阅的一个完美用例。只要将需要清除其数据内存的所有服务都指定为订户,然后您的呼叫服务就可以发布消息,该消息将广播到所有订阅服务


请参阅此处的详细信息:

如果你认为每个实例都是一个单独的节点,就像一个负载平衡集,那么为什么不将你依赖的状态数据保存在一个可靠的集合中——那么任何实例都可以清除它,并且从集合中重新读取它将(几乎)和从内存中读取一样快。但是它在节点之间是一致的。@RussellYoung我实际上尝试过使用可靠的集合,但是程序集是我需要存储的类型之一,而可靠的集合似乎不适用于程序集。我尝试将其存储为byte[]并在需要时加载程序集,但这会大大降低性能。同样,我可能是错误的,但是对于有状态服务,它实际上有超过1个实例被使用(即,不仅仅是一个冗余副本),在一个时间,你必须对服务进行分区,并且可靠的集合不会在分区之间共享,如果你认为每个实例都是一个单独的节点,比如一个负载平衡集,为什么不将您所依赖的状态数据保留在一个可靠的集合中呢?这样,任何实例都可以清除它,从集合中重新读取数据的速度(几乎)与从内存中读取数据的速度一样快,但在节点之间是一致的。@RussellYoung我实际上尝试过使用一个可靠的集合,然而,程序集是我需要存储的类型之一,而且可靠的集合似乎不能与程序集一起使用。我尝试将其存储为byte[]并在需要时加载程序集,但这会大大降低性能。另外,我可能错了,但对于有状态服务,一次实际使用的实例似乎不止一个(即不仅仅是冗余副本),您必须对服务进行分区,并且可靠的集合不会在分区之间共享?我有点惊讶,没有更简单的方法可以做到这一点,但这可能是可用的最佳解决方案,谢谢。我有点惊讶没有更简单的方法,但这可能是最好的解决方案,谢谢。
T service = ServiceProxy.Create<T>(serviceUri);