Azure服务结构概念

时间:2020-01-26 10:31:37

标签: reverse-proxy azure-service-fabric

天蓝色的服务结构中的“命名服务”和“反向代理”是什么?何时使用哪个?它们是否彼此(或完全)出于不同的目的相互连接?提供命名服务和反向代理的示例/类别将很有用。

我的要求: 在startup.cs上,我的呼叫服务(serviceA)应该通过服务结构“命名服务”获取被呼叫者服务(serviceB)的根URL,以发出内部服务请求,该怎么做?请提出示例代码。

2 个答案:

答案 0 :(得分:2)

这就是docs所说的:

在集群内部相互连接的服务通常可以 直接访问其他服务的端点,因为 群集位于同一本地网络上。使连接更容易 在服务之间,Service Fabric提供了其他使用服务 命名服务。 DNS服务和反向代理服务。

反向代理服务:

反向代理解决了暴露HTTP的集群中的服务 端点,包括HTTPS。反向代理大大简化了 通过具有特定的URI来调用其他服务及其方法 格式化并处理一项所需的解析,连接,重试步骤 服务,以便使用命名服务与另一个用户通信。其他 话,它会在呼叫其他人时为您隐藏命名服务 通过使其像调用URL一样简单。

因此,如果要调用群集内的其他服务-您应使用反向代理服务,该服务将由DNS服务支持,而DNS服务又由命名服务支持

您也可以直接使用命名服务或dns服务,而无需使用反向代理服务,但是反向代理很方便,因为它允许您像通常那样仅使用HTTP端点:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy#microservices-communication-model

答案 1 :(得分:0)

命名服务或反向代理可以帮助您解析当前的ServiceEndPoint(“服务在群集中的地址”)-您需要在每次调用之前解析服务,因为它们可以移动(例如,移至另一个群集节点等。)

然后,您可以使用HTTP客户端或服务远程处理等进行服务间通信。 这些样本可以为您提供帮助: https://docs.microsoft.com/en-us/samples/browse/?terms=service%20fabric&languages=csharp

个人意见: 对我来说,最好先使用ASP.NET Core模板(无状态+有状态)来获得Service Fabric的经验-在这里您可以使用“ Kestrel”并通过HTTP客户端调用此服务。

您需要根据需要(内部或外部公开)在每个服务中配置“服务设置”。 在这里查看:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-communication-aspnetcore

重要提示: 通过POLLY(例如)为HTTP客户端实现一些重试模式+断路器

在服务之间进行通信的HTTP客户端示例很不错,您可以在这里看到: https://github.com/dotnet-architecture/eShopOnContainers