服务结构:独立群集上的寻址服务

时间:2016-11-18 21:03:22

标签: microservices azure-service-fabric

我已经设置了一个三节点独立群集。我在包含三个服务的集群上放置了一个应用程序,应用程序配置为每个服务的实例将驻留在每个节点上。在这三种服务中,其中一种是前端服务,它接收来自外部客户端的请求,然后与其他两种服务(不能从集群外部寻址)进行通信,以获得响应所需的信息。已编写外部客户端程序以通过http请求与前端服务进行通信。目前,此外部客户端必须使用节点IP地址和端口将其请求发送到特定服务实例。我使用这种方法的问题是,如果外部客户端正在寻址的节点发生故障,客户端将无法再解决该服务,尽管前端服务仍然在另外两个节点上运行。

以下是我的问题:外部客户端是否有办法通过Service Fabric调用前端服务,而无需指定要与之通信的特定节点?我希望这种通信方法允许在接收请求的原始节点发生故障时将请求路由到备用节点。

1 个答案:

答案 0 :(得分:1)

您应该在群集前使用load balancer将流量分配给前端服务实例。应将负载均衡器配置为在节点不响应用户请求时将节点从负载均衡器的轮换中取出。这有助于保护您的服务和用户免遭中断。

如果您的用户位于受信任的边界内(例如,Intranet用户),则负载均衡器的替代方案将要求客户端应用程序首先执行service address look-up with Service Fabric's naming service,这将为您提供每个端点的列表可用的无状态服务实例。同样,您并不想将此信息暴露给不受信任的用户,因为他们很容易滥用或超载它。如果这样做,您依靠客户端应用程序通过选择要连接的随机实例来提供负载平衡。但实际上你应该做的是获得负载均衡器。