dtm_worker_workflow
2016-08-05 15:23:28 0 举报
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
Color Legend
在ctrl_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的事件
处理待处理队列中的Socket和事件
如果是服务Socket,是新连接
该Client连接上无active请求?
是ctrl_channel?
阻塞epoll_wait,超时为timeout
如果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 条评论
下一页