Service Fabric 未处理的异常和最佳做法

Service Fabric Unhandled Exceptions and best practices

提问人:g.t.w.d 提问时间:8/2/2016 更新时间:9/5/2019 访问量:2103

问:

只是好奇是否有人在 Service Fabric 中遇到过未经处理的异常,以及围绕它们的最佳做法是什么。主要是对服务故障状态感到好奇。如果服务处于故障状态,它们是否会被回收?或者是否应该对未处理的异常进行全局异常处理,如果 SF 中甚至存在该概念。我在搜索时没有找到太多关于这个主题的内容。

C# 异常 azure-service-fabric

评论


答:

-1赞 Pino De Francesco 8/2/2016 #1

您的问题非常广泛,答案会根据微服务的类型而变化。一个好的开始点,也要了解这个主题的广阔性,就是看看 Service Fabric 运行状况监视文章和相关的子主题。如您所见,有很多配置选择,根据我的经验(我是 Microsoft Azure 架构师),没有灵丹妙药,没有“一刀切”的解决方案。唯一的最佳做法是设计最适合项目的异常管理,并尽可能多地利用 Fabric 运行状况策略。

评论

0赞 g.t.w.d 8/2/2016
好吧,可靠服务的故障状态(我应该提到)并不是一个广泛的问题。不同的服务以不同的方式处理故障状态。我只是好奇无状态可靠服务如何处理故障状态。在运行异步期间发生的任何导致故障状态的故障最终都会导致 SF 回收服务。虽然真的没有太多人在谈论这个。
0赞 Pino De Francesco 8/2/2016
@g.t.w.d 我相信,之所以在这个问题上存在很多问题,是因为在两个相交的领域有很多:(1) Service Fabric Health 和 (2) Reliable Service State。通过在服务中使用 System.Fabric.Health,这两者相交,以允许结构运行状况监视器对服务状态管理在结构中引发的事件执行操作。
0赞 pixelTitan 9/5/2019 #2

在我的公司,我们按照使用 ITransaction 的准则构建了一些可重用的代码,这允许我们运行任何任意代码,并用适当的异常处理和重试策略对其进行包装。在该文档中,提供了有关各种类型的异常应如何影响方法以及它们应如何影响作为远程处理终结点一部分的方法的指南。RunAsync

通常,处理文档中讨论的内容之外的任何异常情况均由您决定。就我自己而言,我只会让异常冒泡,如果出现意外异常,我会让服务失败。预期的异常应始终使用适当的重试策略进行处理。