ds_designer
2020-12-28 11:18:55 0 举报
spl执行流程图
作者其他创作
大纲/内容
任务
输出数据到server端
server
zmq 分发DAG
执行
executor
输入/输出通道
输入
当前任务是否为DAG最后一个任务
ZMQ接收DAG
单线程扫描队列创建source任务并提交线线程池执行
zmq 发送protobuf序列化后的数据
是
数据源读入数据
Put
source更根据编译生成对应存储系统的语句查询数据
返回数据
根据DAG任务链创建下一任务
数据逻辑处理
下一任务提交到线程池
阻塞数据接收完成
antlr4解析
client
编译优化生成DAG
关联当前任务的输入通道
Scheduler
新建输出通道
Rest API
反馈SPL执行结果
创建Source任并提交到线程池务
输出数据到下一任务输入通道
循环处理
上一任务输出通道读入数据
当DAG任务链最后一个任务执行后会将数据从输出通道流向server
初始化
DAG队列
发生ACK消息
当数据处理完成后DAG处理结束
zmq接收并反序列化,放入调度队列
输出
Get
当数据接收到一定量时当前任务会根据DAG任务链,寻找数据需要流向下一任务,创建并初始化这个任务并将数据放入到该任务的输入通道
否
protobuf序列化DAG
存储系统
线程池
初始化下一任务
Puller
执行器处理执行SPL逻辑DAG任务本身是链表构造,Scheduler只创建表头source任务,在任务中会创建下一任务并关联或新建数据通道;数据根据任务链的方向向任务通道流动,DAG末端任务数据会流向server端。目前分三类数据通道:1. 数据源通道 - 与数据源交互的数据通道; 协议与具体数据源类型强关联。 2. 内部数据通道 - 与Server端交互的数据通道;协议为zmq REQ-REP 模式。 3. 本地数据通道 - 任务链中间部分的数据通道;协议为本地内存队列。 DAG任务链头部采用数据源通道,尾部采用内部通道,中间采用本地通道,中间目前支持本地通道。
0 条评论
下一页