启动时的结构服务可用性
Fabric Service availability on start
我有一个场景,其中我们的一项服务公开了从外部服务接收回调的 WCF 主机。
这些主机是动态创建的,可能有数百个。我需要确保在节点开始接收请求之前它们都已启动并且 运行 在节点上,这样它们就不会收到故障,这很关键。
有没有办法确保服务在我说它准备就绪之前不会收到请求?在云服务中,我可以通过在 OnStart 方法中包含所有这些代码来做到这一点。
我最初的想法是,我可以在打开通信监听器之前 bootstrap 执行此操作 - 希望结构管理器仅在完成此操作后发送请求,但我找不到有关如何处理此生命周期的任何信息。
集群内没有"fabric manager"控制您的服务之间的网络流量。如果您的服务已启动,则集群内的客户端或其他服务可以选择尝试连接到它(如果它们知道其地址)。考虑到这一点,您可以在此处控制两件事:
首先是您的服务端点是否可被其他服务或客户端发现。这是您的服务端点向 Service Fabric 的命名服务注册的时间点,这发生在您的 ICommunicationListener.OpenAsync 方法 returns 时。此时,服务端点已注册,其他人可以发现它并尝试连接到它。当然,如果您不想的话,您不必使用命名服务或 ICommunicationListener 模式;您的服务可以随时打开端点,但如果您不使用命名服务注册它,您将不得不提出自己的服务发现机制。
第二个是您的服务所在的节点 运行 是否正在从 Azure 负载均衡器(如果您不在 Azure 中托管,则为任何负载均衡器)接收流量。这与 Service Fabric 关系不大,而与负载均衡器本身关系更大。在 Azure 中,您可以使用 load balancer probe 来确定是否应将流量发送到节点。
编辑:
我在我们的文档中添加了一些有关 Azure 负载均衡器的信息,希望这对您有所帮助:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-connect-and-communicate-with-services/
我有一个场景,其中我们的一项服务公开了从外部服务接收回调的 WCF 主机。
这些主机是动态创建的,可能有数百个。我需要确保在节点开始接收请求之前它们都已启动并且 运行 在节点上,这样它们就不会收到故障,这很关键。
有没有办法确保服务在我说它准备就绪之前不会收到请求?在云服务中,我可以通过在 OnStart 方法中包含所有这些代码来做到这一点。
我最初的想法是,我可以在打开通信监听器之前 bootstrap 执行此操作 - 希望结构管理器仅在完成此操作后发送请求,但我找不到有关如何处理此生命周期的任何信息。
集群内没有"fabric manager"控制您的服务之间的网络流量。如果您的服务已启动,则集群内的客户端或其他服务可以选择尝试连接到它(如果它们知道其地址)。考虑到这一点,您可以在此处控制两件事:
首先是您的服务端点是否可被其他服务或客户端发现。这是您的服务端点向 Service Fabric 的命名服务注册的时间点,这发生在您的 ICommunicationListener.OpenAsync 方法 returns 时。此时,服务端点已注册,其他人可以发现它并尝试连接到它。当然,如果您不想的话,您不必使用命名服务或 ICommunicationListener 模式;您的服务可以随时打开端点,但如果您不使用命名服务注册它,您将不得不提出自己的服务发现机制。
第二个是您的服务所在的节点 运行 是否正在从 Azure 负载均衡器(如果您不在 Azure 中托管,则为任何负载均衡器)接收流量。这与 Service Fabric 关系不大,而与负载均衡器本身关系更大。在 Azure 中,您可以使用 load balancer probe 来确定是否应将流量发送到节点。
编辑: 我在我们的文档中添加了一些有关 Azure 负载均衡器的信息,希望这对您有所帮助:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-connect-and-communicate-with-services/