dtm_master_running_flow
2016-08-03 15:29:56 0 举报
dtm_master_running_flow是一个流程,用于管理数据中心的主设备运行状态。它监控主设备的运行情况,确保它们正常运行并能够处理数据请求。如果发现任何问题,该流程将采取适当的措施来解决这些问题,以确保数据中心的正常运行。此外,dtm_master_running_flow还负责维护主设备之间的通信和协调,以确保它们能够协同工作。总之,dtm_master_running_flow是一个重要的流程,它对于保证数据中心的稳定运行至关重要。
作者其他创作
大纲/内容
while 没有收到shutdown或reload的signal
将子进程在共享内存中注销
为新子进程在共享内存中登记
创建Nonblock控制Socket开始Listen
有Control指令?
复用上一个子进程的Pipe
初始化accept锁调度队列
将每个Worker进程放入accept锁调度队列
end of while
Y
N
若为Worker且当前持有accept锁强制释放并移出调度队列
向所有子进程发送shutdown信号
是否是有标记的子进程
读取配置文件更新内存中的配置信息
对退出子进程进行收割
创建Nonblock主服务Socket开始Listen
是否有子进程退出
是否start所有子进程(Control指令之一)
收割所有退出的子进程
Master
创建新一批子进程
清空子进程对应的Pipe两端
处理Control指令
为每个子进程创建一副Pipe
向当前所有非Control的子进程发送shutdown信号
为每个子进程在共享内存中登记
初始化共享内存,作用:进程间抢锁、子进程登记
向与Control相连的管道write响应
对整个进程组Nonblock地waitpid
读入配置文件将全部MySQL、Redis连接信息存入内存
标记当前所有非Control的子进程
是否shutdown所有子进程(Control指令之一)
end of Master
初始化signal handlersSIGTERM - shutdownSIGWINCH - reloadSIGALRM - loadconf
pselect 100ms
创建全部子进程
如果收到reload信号则exec新的binary进行重启
如果为Worker则放入accept锁调度队列
当前是否没有任何子进程Control除外
重启一个与退出子进程同类的子进程
创建全部子进程Control除外,因为已存在
向有标记的子进程(即老子进程)发送shutdown信号
有标记的子进程说明是被Master显式有意杀死的无需重启
对已存在子进程进行标记
打开dtm.log日志文件
是否收到loadconf的signal
执行accept调度如果上一次Worker已经释放锁,让队列中的下一个Worker持有锁如果没有,do nothing
Nonblock地读与Control进程相连的管道
0 条评论
下一页