Service Fabric允许您指定要侦听的端点,并且每个服务都可以公开不同的协议,如下所示:
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return new[]
{
new ServiceInstanceListener(serviceContext => new OwinCommunicationListener(Startup.ConfigureApp,
serviceContext, ServiceEventSource.Current, "ServiceEndpointHttps")),
//you can add another one here like so:
new ServiceInstanceListener(serviceContext => new OwinCommunicationListener(Startup.ConfigureApp,
serviceContext, ServiceEventSource.Current, "ServiceEndpointUnSecured"))
};
}
在ServiceManifest.xml文件中,我们可以指定这两个端点:
<Endpoints>
<Endpoint Protocol="http" Name="ServiceEndpointUnsecured" Type="Input" />
<Endpoint Protocol="https" Name="ServiceEndpointHttps" Type="Input" />
</Endpoints>
我们有100个微服务,我们希望只有1个,中心位置,我们配置服务是通过http还是https运行。
是否可以更改此设置,以便我们只有1个位置负责为所有服务路由http或https?
答案 0 :(得分:1)
根据您是在讨论群集内服务之间的通信还是群集外部的通信,有几种不同的方法。
对于群集内的服务到服务通信,一切由客户端决定(例如,进行呼叫的其他服务)。正如Rogala所提到的,反向代理将是核心解决方案。您可以调用反向代理,它将使用Service Fabric命名服务路由到公开的端点。如果您只公开https,它将是https,您也可以将反向代理配置为始终使用https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy-configure-secure-communication
对于群集的入口,一个类似的概念,通过集群内部的网关服务,是常见的模式。然后,网关服务将使用反向代理,从而使用上述模式:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-connect-and-communicate-with-services#connections-from-external-clients
答案 1 :(得分:-1)
是的,您可以使用Apigee或Azure API管理等代理,并通过该中心位置拥有所有流量代理。这提供了围绕安全性和管理流量的主要优势。如果您有具体问题,请与我聊聊。
〜干杯