高度可用的应用程序设计的一个关键点,是利用代码中的重试逻辑正常处理临时中断的服务。Microsoft 模式和实践团队开发的暂时性故障处理应用程序块可协助应用程序开发人员完成此过程。“暂时性”一词表示仅持续相对较短时间的临时条件。在本文的背景下,处理暂时性故障是开发高度可用的应用程序的一部分。暂时性情况的示例包括间歇性网络错误和丢失数据库连接。
暂时性故障处理应用程序块是一种正常处理代码中故障的简化方式。此方式可通过添加可靠的暂时性故障处理逻辑,提高应用程序的可用性。大多数情况下,将由重试逻辑处理短暂中断,并在一次或多次尝试失败后重新连接发送者和接收者。应用程序用户通常注意不到成功的重试尝试。
开发人员有三个选项可用于管理其重试逻辑:增量、固定间隔和指数。增量是指在每次重试前等待更长时间,等待时间以线性方式增长(例如 1、2、3 和 4 秒)。固定间隔是指在每次重试之间等待相同长度的时间(例如 2 秒)。作为一个更随机的选项,指数补偿是指在重试之间等待更长时间,但等待时间以指数方式增长(例如 2、4、8 和 16 秒)。
代码中的策略大致包括:
- 定义重试策略
- 尝试可能导致暂时性故障的操作
- 如果发生暂时性故障,则调用重试策略
- 如果所有重试均失败,则捕获一个最终异常
将在模拟故障中测试重试逻辑,以确保连续的重试操作不会导致难以预料的长时间延迟。请在决定放弃整个任务之前进行此测试。