Golang Go语言中用golang做一个pipeline | ETL问题有什么好的设计?
Golang Go语言中用golang做一个pipeline | ETL问题有什么好的设计?
有 N 个数据源,根据这 N 个数据源计算出 M 个结果,依赖关系简单如下,实际会略微复杂些,但一定是个有向无环图。
结果也有有可能会当成另外一个结果的’数据源’
A B
/ \ /
/ \ /
R1 R2 C
\ /
\ /
R3
有一些问题
- 其他调用方会来调用我服务,调用的输入为字符串比如{"R2", "R3"}。
- 每次要计算的结果的数量是不确定的,其他调用方可能只要 R1 和 R2,那我就不想去调用 C 数据源了。
- 每个来调用接口的独立请求里,我这里的数据源我只想调用一次,比如我不想算 R1,R2 的时候获取两次 A 数据源,以及如果在算过 R2 之后,再去算 R3 的时候要再算一边 R2 。
- 我想从下往上算,比如 R3 的逻辑里里 go 出去 R2 和 C,R2 里再 go 出去 A 和 B,那我后续算 R1 的时候,怎么直接取刚刚算 R2 时的获取过的 A,A 写成单例?只要被调用后,再次被调用返回数据源? -当然还有其他的,比如错误中断之类。
更多关于Golang Go语言中用golang做一个pipeline | ETL问题有什么好的设计?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html