为什么我们需要瞬态故障处理存储?

时间:2013-05-03 02:56:52

标签: azure

我看到一些线程称存储库已经有重试策略, 那么我们为什么要使用它:Transient Fault Handling block

任何人都可以向我展示一些关于如何正确使用此瞬态故障处理模块以进行myy blob和Table存储的示例吗? 谢谢!

4 个答案:

答案 0 :(得分:1)

有关实施示例,请阅读您发送的链接 - “关键方案”部分。如果您没有连接问题,请不要实施。我们使用它,但据我们所知,它没有帮助。我们遇到的每个故障都是一个较长期的Azure内部网络相关问题,导致TFHB无法处理的错误。

答案 1 :(得分:1)

一个原因(以及我在我的应用程序中使用它的原因)是,瞬态故障处理应用程序块不仅为存储(表,blob和队列)提供重试逻辑,还为SQL Azure和服务总线队列提供重试逻辑。如果您的项目使用这些额外的资源(即SQL Azure和服务总线队列),并且您希望有一个库来处理瞬态错误,我建议使用它来存储客户端库。

我将使用此库的另一个原因是它的可扩展性。您可以扩展此库以处理其他错误情形(存储客户端库重试策略未涵盖)或将其用于其他Web资源(如服务管理API)。

如果您只是使用blob和表存储,则可以很好地使用存储客户端库附带的重试策略。

答案 2 :(得分:0)

我不使用瞬态故障处理块进行blob存储,它可能更适用于表存储或传输更大的数据块。鉴于我使用blob存储容器来存档网站某些区域的调试信息(以短txt文件的形式),这似乎有点令人费解。我从来没有见过任何写入存储的失败,我们每周写入数万条日志。当然,不同的存储使用可能会产生不同的可靠性。

答案 3 :(得分:0)

对于表和blob,您不需要使用任何外部瞬态重试块。在sdk中实现的那些相当强大。如果您认为应该实现特殊的重试策略,那么执行此操作的方法是实现从Azure Storage IRetryPolicy接口继承的自己的重试策略,并将其作为TableRequestOptions.RetryPolicy属性的一部分传递给您的存储请求