ServiceFabric系列之四: 服务与服务之间是如何通信的——反向代理

系列链接

ServiceFabric系列之一: ServiceFabric理论介绍

ServiceFabric系列之二: 在Windows上创建容器应用并部署到ServiceFabric中

ServiceFabric系列之三: 服务与服务之间是如何通信的——DNS服务

ServiceFabric系列之四: 服务与服务之间是如何通信的——反向代理

目的

服务与服务之间的通信除了使用DNS服务外,还可以使用ServiceFabric中内置的反向代理服务,我们来学习它。

反向代理介绍

反向代理是在每个节点上运行的服务,它支持从集群内部访问微服务,也支持从集群外部访问微服务。反向代理在本地节点上公开一个或多个终结点,以供客户端服务用来向其他服务发送请求,请看下图

在集群内部访问微服务

通过portal.azure.com创建集群的时候就需要启用它,如果你希望更新现有的集群,参考此链接

 可以看到这里这里启用的反向代理端口是19081,它会在群集中的每一台机器上打开这个端口。然后我们在集群里的虚拟机中访问 http://localhost:19081/ServiceFabricDemo/BackendContainerService/api/Values

img

可以看出,是可以通过反向代理进行访问的。

在集群外部访问微服务

通常外部客户端无法直接访问集群里的每个服务,可以使用Azure 负载均衡器来充当微服务和外部客户端之间的网络边界,所以需要在负载均衡器里面配置,如下图。

img

现在可以从群集外部访问群集中公开 HTTP 终结点的所有微服务,这意味着微服务设计为内部的可能会被确定的恶意用户发现,可对反向代理进行设置,转发到安全的 HTTP 服务,这里暂不演示。下图为从外部通过反向代理访问后端的API服务,访问的地址是:http://servicefabricdemo.eastus2.cloudapp.azure.com:19081/ServiceFabricDemo/BackendContainerService/api/Values

img

所以这里,也可以将前端angular项目中的链接(第14行)替换为上面的链接。

相关链接

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy-setup#enable-reverse-proxy-via-azure-resource-manager-templates

总结与讨论

分别在什么情况使用DNS服务和反向代理服务呢?

如果部署多个服务,可以使用 DNS 名称找到用于通信的其他服务的终结点。 DNS 服务适用于无状态服务,在 Service Fabric 版本 6.3 和更高版本中,它也适用于有状态服务。 对于运行低于 Service Fabric 6.3 版本的 有状态服务,可以使用 HTTP 调用的内置反向代理服务调用特定的服务分区。
DNS 服务不支持动态端口。 可以通过反向代理服务解析使用动态端口的服务。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值