概述
这是两种编程的思想,是在平时写代码以及设计时需要遵循的原则。
fail-fast:
简言之,快速失败。我们在设计一个模块(可以是一个函数,一个类甚至是一个服务)时,如果有某种条件会导致模块无法正常运行下去,就应该让模块立刻终止(可以是return,也可以抛一个runtimeexception)。这样做有两种好处:
1)及早终止,防止错误一直被带到下游,导致下游服务崩溃或者产生脏数据;
2)便于排查,fail-fast一般都会有类似断言的机制来判定某种条件,在断言处终止可以很方便的定位问题,而如果错误被带到下游,就很难定位问题的根源了;
fail-safe:
与fail-fast相反,如果模块遇到某种错误,不应该让程序失败,而是采取某种降级策略,尽量往下走。这个原则主要适用于主模块内的分支流程。
举个例子,我有一个接口,主要是返回feed流的,但是有一个分支逻辑是调用广告服务插入广告类型的feed的,如果广告服务不可用了,我的整体逻辑是不能挂的,因为不插入广告也没关系,但是正常的feed流还是需要返回。所以对广告服务的调用是要能降级的。简单来说,可以try-catch住,如果调用有异常了就不插入广告。不能因为一个分支逻辑而把主要逻辑整挂了。
这两种原则在设计模块以及编码时需要注意。
最后
以上就是坦率自行车为你收集整理的【Java】fail-safe 以及 fail-fast 原则的全部内容,希望文章能够帮你解决【Java】fail-safe 以及 fail-fast 原则所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复