dtm_worker_workflow
2016-08-05 15:23:28 0 举报
dtm_worker_workflow是一个用于处理和管理数据转换工作流的系统。它提供了一个灵活且可扩展的平台,使用户能够定义、执行和监控各种数据转换任务。通过使用dtm_worker_workflow,用户可以将复杂的数据处理过程分解为多个独立的任务,并通过并行执行这些任务来提高处理效率。此外,dtm_worker_workflow还提供了一套强大的工具和功能,包括任务调度、错误处理、日志记录等,帮助用户更好地管理和维护其数据转换工作流。总之,dtm_worker_workflow是一个功能强大且易于使用的数据转换工作流管理系统,适用于各种规模的企业和组织。
作者其他创作
大纲/内容
如果超过server_timeout(线上1200)无活动,断开
是常规Client/Server Socket与Client或MySQL继续通信,进行实际请求的处理
重新初始化日志关闭继承于Master的dtm.log的fd打开worker_process.log
Y
N
是否收到了shutdown信号?
如超过client_timeout(线上1200)无活动,断开
标记all_finished=0
end of 遍历
标记accept_held
从Master继承过来的所有Pipe关掉所有Control侧Pipe关掉除自己外其它所有Worker侧Pipe将自己侧Pipe标为ctrl_channel
标记all_finished=1,并遍历epoll中所有fd
在channel上阻塞read来自Control的通知(Control会将每一个新生的Worker更新到最新状态)
主循环
主循环while 没有收到shutdown信号或all_finished=0
将服务Socket和ctrl_channel放入epoll,监听IN事件
从服务Socket中accept出新的Client Socket并放入epoll,监听OUT事件
为Client Socket?
将Socket和事件放入待处理队列
检查是否自己当前持有accept锁
将epoll的timeout缩短为1意为无锁时只处理已经ready的事件
Color Legend
处理待处理队列中的Socket和事件
如果是服务Socket,是新连接
该Client连接上无active请求?
是ctrl_channel?
网络通信
如果accept_held,释放锁
是Control发来控制指令read ctrl_channel并做处理write响应给Control
待处理队列有事件?
将epoll的timeout设为check_timeout(线上为1)
已收到shutdown信号?
进行wait_build和prepare_lock相关逻辑暂不关心
end of 主循环
创建本进程epoll
遍历本次epoll返回的ready fd
将服务Socket从epoll中移除
accept_held?
Worker
如收到shutdown信号,断开
内部小循环
0 条评论
下一页