如何为远程 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 证书?

如何指定本地开发人员的 Service Fabric 集群的创建位置?

Service Fabric 群集卡在状态 = 正在部署

从远程位置访问 Service Fabric RPC 接口

Service Fabric 群集部署失败

从公司代理服务器后面连接到Service Fabric集群端点