gpt4 book ai didi

azure-service-fabric - 使用 ServicePartitionClient 对服务结构 StatelessService 进行负载平衡

转载 作者:行者123 更新时间:2023-12-04 08:23:25 28 4
gpt4 key购买 nike

我在 Service Fabric 集群上实现 API 网关,其中 API 网关服务是将外部 HTTP 请求路由到集群中运行的一组工作程序服务的公共(public)端点。对于网关和内部服务之间的服务间通信,我们使用 ServicePartitionClient。

我发现,当使用 ServicePartitionClient 解析服务地址并与无状态服务通信时,它会选择无状态服务的单个实例,并且在每次通信尝试时仅与该实例通信。就我而言,我有多个无状态服务实例在运行,并希望在它们之间分配负载(例如循环法)。有没有一种方法可以使用 ServicePartitionClient 来做到这一点,而不需要每次都点击 NamingService 服务(这对于我们的用例来说太昂贵了)?

最佳答案

为每个请求创建一个新的 ServicePartitionClient 实例。

ServicePartitionClient 是一个相对轻量级的数据结构,它只包含一些关于通信 channel 的元数据。实际的连接管理、池和解析名称缓存发生在下面的层中:

  • FabricClient 缓存已解析的端点,这样您就不会在每次请求端点时都访问命名服务。
  • ServicePartitionResolver 使用基于我们已知的常见连接异常的基本重试循环包装 FabricClient。
  • CommunicationClientFactoryBase(如果您正在使用它)会为您保留一个 ServicePartitionResolver 实例并缓存连接。

因此,只需确保您正在重用您的 CommunicationClientFactory。如果您使用的是 CommunicationClientFactoryBase 并且没有传入自己的 ServicePartitionResolver,则它默认使用单例。

关于azure-service-fabric - 使用 ServicePartitionClient 对服务结构 StatelessService 进行负载平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40539202/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com