特性
- 节点的执行可以同步也可以异步
- 异步的情况可能分布式路由到别的实例
- 同步的情况如何让引擎而不是节点做路由
- 执行分支可能分裂并行计算,可能存在多次分裂
- 合并可能进行层合并,而且每一次调起未必满足合并条件
-
解决方案
[x] 同步和异步都按照异步来开发flow,同步服务要有上层队列/map,按照Reactor模式实现接入层
- Redis分布式状态,完成一次操作进行一次状态更新
- 节点完成分裂工作,写入Task,把下一步列表返回,然后由引擎来做并行或者串行的调度
- 不能用死的字段表示层级,而要用函数做映射
- 分裂一层一层地分,合并也一层一层地合
- 循环要有循环计数器,防止死循环
- 如何划分职责?
[ ] Step 设置【下一步】的输入,指定或者发出【下一步】
实现细节
[x] flow + map[string]steps
- flow上存放全局信息以及进度,对flow仅支持串行读写
- steps构执行进度成图,并且这个图是可前向回溯的,回溯到任意位置,完成数据读取,历史节点仅分裂节点可写
- steps格式a-b-c,表示分裂了两次的flow