Transient Fault Handling and Retry Logic: 瞬间错误处理——重试

1、什么是Transient Fault

Transient Fault:想了一会不知道如何翻译这个词组,姑且称为瞬间错误吧。举一个例子,现在大量项目使用了WCF,如果由于网络瞬间的网络中断或者突发网络负载增大造成连接超时,这时我们最直接的办法也许是弹出的对话框告诉客户,我们这次提交失败了。但是这并不是我们真正想要的结果,由于这些错误通常都是短暂的,可恢复的,我们只需要要再次手动或者自动的进行提交,Retry一下,便可以正常提交此次请求。还有一个例子就是Sql server HA 环境下,虽然Sql server 高可用性实现了服务器自动切换等等一切安全措施,但是由于自动切换服务器而产生的事务提交异常,确是需要我们自己进行处理的,如果没有进行很好的异常处理,那么只有Crash或者丢失数据了。对于一个high availability 程序应该在服务调用层(WCF)和数据库访问层实现Retry逻辑来处理Transient Fault。

 2、Patterns & Framework

由于本人不是大牛了,遇到这种问题自然是问Google, 找来找去终于找到两个可用的框架。

1、SQL Fault Retry Provider

这个项目提供了一个如何创建高可用性应用程序的案例,当然特指在SQL Mirroring环境下。并且提供了一个可以进行重试操作的 Data Provider.

2、Transient Fault Handling Framework

这个框架来自微软的 Windows Azure AppFabric Customer Advisory Team (CAT) 团队。这个框架提供了一个可复用的框架用于处理程序中不同场景下的Retry逻辑。主要针对在客户使用 SQL Azure, Windows Azure storage (queues, blobs, tables), Windows Azure Service Bus 和 Windows Azure Caching Service时,需要Retry的情况。

原文地址:https://www.cnblogs.com/yanyan45/p/2824318.html