azure - 我是否需要重试策略来处理 Service Fabric 内部通信的暂时性故障?

标签 azure service appfabric transient

我们将 Azure Service Fabric 与可靠服务和参与者、IoTHub 和 Web API 结合使用,目前正在集成“ transient 故障处理”(TFH),以处理服务(远程)通信期间的错误。

对于 Azure 存储和 SQL,它已经实现,我们使用内置的重试策略,并且效果很好。

但是 Service Fabric 内部通信又如何呢?还有一些服务通过远程机制进行通信。

这是我的问题:

  • 我们是否需要处理 Service Fabric 中 Reliable Services 和 Reliable Actors 之间的通信瞬时故障?
  • 如果是这样 - 这怎么办? transient 故障处理应用程序 block 是实现内部通信重试策略的唯一方法吗?
  • 如果不是 - Service Fabric 如何处理暂时性故障?

我已经收集的其他信息:

This article about communication between services描述了服务间通信的典型故障处理重试模式。但我们使用服务远程处理来代替 ICommunicationClientFactory 和 ICommunicationClient。我不知道如何通过服务远程处理来使用这种典型的故障处理。

最佳答案

迟到的答案,但也许人们仍在寻找答案...无论如何,Service Fabric 具有默认的 transient 故障处理(以及非 transient 故障处理)。通过OperationRetrySettings,您可以自定义这些。您还可以通过 TransportSettings 自定义其他属性。以下是如何自定义这些设置的示例:

FabricTransportSettings transportSettings = new FabricTransportSettings
{
OperationTimeout = TimeSpan.FromSeconds(30)
};

var retrySettings = new OperationRetrySettings(TimeSpan.FromSeconds(15), TimeSpan.FromSeconds(1), 5);

var clientFactory = new Microsoft.ServiceFabric.Services.Remoting.FabricTransport.Client.FabricTransportServiceRemotingClientFactory(transportSettings);

var serviceProxyFactory = new Microsoft.ServiceFabric.Services.Remoting.Client.ServiceProxyFactory((c) => clientFactory, retrySettings);

var client = serviceProxyFactory.CreateServiceProxy<IXyzService>(new Uri("fabric:/Xyz/Service"));

return client;

hth//彼得

关于azure - 我是否需要重试策略来处理 Service Fabric 内部通信的暂时性故障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38562320/

相关文章:

c++ - 如何让 C++ Windows 服务在用户登录/注销或 PC 进入休眠/休眠状态时得到正确通知

azure - 与 Azure 中的 LDAP 集成

powershell - 移动和重命名AppFabric配置数据库

azure - 在 GRAPH API 中使用 'ReceivedDateTime' 时出现“无效过滤子句”

azure - 删除 Visual Studio 发布的 Azure Function

java - 在 MS Azure 上部署 java Tomcat 应用程序(war)

c# - 在Azure函数中解析C#中的Json

mysql - 将 MYSQL 添加到 Cloud Foundry 并将其用作服务

.net - 实现自重启服务的最简单方法是什么

Azure DataCache MaxConnectionToServer