常见的架构,API 接入层上需要将多个数据源组合吐出。前面获取的数据,是后面的依赖。
有没有一种比较优雅点的方式,可以避免某个小功能点的代码 /数据异常导致的异常导致整体数据无法吐出。
针对每个功能点 try...catch... 确实不太优雅,也难以维护。
全局的异常捕获也无法完成这样的需求。
各位大佬,有没有自己的实践可以分享一下的?
常见的架构,API 接入层上需要将多个数据源组合吐出。前面获取的数据,是后面的依赖。
有没有一种比较优雅点的方式,可以避免某个小功能点的代码 /数据异常导致的异常导致整体数据无法吐出。
针对每个功能点 try...catch... 确实不太优雅,也难以维护。
全局的异常捕获也无法完成这样的需求。
各位大佬,有没有自己的实践可以分享一下的?
|
1
自己实现类似 FilterChain 的东西,然后针对 chain 的调用做 try...catch.. 貌似也可以,但是对于前后依赖的数据有点蛋疼
|
|
ldcloliJun 24, 2020
2
将每个功能点拆出来成一个单独任务,可以设置每个任务的前后依赖,设置返回数据的必要性,最后所有依赖的任务排列成有向无环图,并行执行
|
|
momocraftJun 24, 2020
3
Future / Either
|
|
crclzJun 25, 2020
4
前面的数据是后面的依赖...你前面数据都获取失败了,后面数据怎么获取?
对于每一个环节,尝试向数据源读取 3 次,如果 3 次失败,就抛出异常。 正常情况下是不会出现失败的,如果失败很多次,就报警发邮箱。 |
|
5
@crclz 只有最前面的数据核心数据是,后面有大批的组合逻辑,这个逻辑相对独立。需求核心是,保障核心数据安全。
重试是不适合的,1. 性能不允许(支持单机 1w 的 QPS ) 2. 有时候错误的数据或者代码的异常重试无法解决。 |