如何为远程 Service Fabric 集群创建 Actor 代理
Posted
技术标签:
【中文标题】如何为远程 Service Fabric 集群创建 Actor 代理【英文标题】:How to create actor proxy to remote Service Fabric cluster 【发布时间】:2016-10-27 05:21:11 【问题描述】:根据 Service Fabric 文档 (https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-actors-introduction/),actor 代理是这样创建的:
ActorId actorId = ActorId.NewId();
IMyActor myActor = ActorProxy.Create<IMyActor>(actorId, new Uri("fabric:/MyApp/MyActorService"));
await myActor.DoWorkAsync();
好的,这可以正常工作并连接到我的本地集群。但我不知道如何为 remote 集群创建代理? (我有一个 IP 为 10.0.10.10、10.0.11.10、10.0.12.10 的三节点集群。)
我也尝试过使用 ServicePartitionResolver,此处解释为:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-services-communication/,但没有成功。
【问题讨论】:
好问题。我也想看到这个。能够以这种方式与 Actor 进行交互将打开许多应用程序的可能性(即非基于 Web 的客户端,但出于某种原因将集群用作后端)。也可能使调试更快/更容易(即有问题的参与者(及其服务)暂时在本地执行)。 【参考方案1】:如今,ActorProxy 和 ServiceProxy 最适合连接到集群中的参与者和服务。您可以公开一个实例计数为 -1 的无状态服务,该服务可以接受用户请求,然后使用 Actor 和 Service remoting 连接到集群内的 Actor 服务。在未来的版本中,我们可能会提供支持远程处理的开箱即用的应用程序网关。
【讨论】:
感谢您的澄清。就我而言,我使用通过 IIS 托管在不同服务器上的 ASP.NET 应用程序来处理 Web 请求。 Web 层根据需要转发到 SF。我想更好的方法是在同一个 SF 应用程序中使用无状态 WebAPI 服务来直接在同一个集群中处理请求(如下所示:github.com/Azure-Samples/…)。 是的,你需要那个无状态的 Web API 服务作为用户的入口点,然后在里面你可以使用 ActorProxy 和 ServiceProxy。以上是关于如何为远程 Service Fabric 集群创建 Actor 代理的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Service Fabric 配置 Let's Encrypt 证书?