dtm_master_running_flow
2016-08-03 15:29:56 0 举报
`dtm_master_running_flow` 是一个用于监控和管理分布式事务管理器(DTM)主节点运行状态的流程。它确保了在分布式系统中,事务能够正确地提交或回滚,以保持数据的一致性和完整性。该流程通过实时监控主节点的健康状态、事务处理进度以及与其他从节点的通信情况,来确保整个分布式事务系统的稳定运行。同时,它还提供了一些故障恢复机制,如自动切换主节点、重试失败的事务等,以应对可能出现的异常情况。总之,`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
创建全部子进程
如果收到reload信号则exec新的binary进行重启
如果为Worker则放入accept锁调度队列
当前是否没有任何子进程Control除外
重启一个与退出子进程同类的子进程
创建全部子进程Control除外,因为已存在
向有标记的子进程(即老子进程)发送shutdown信号
有标记的子进程说明是被Master显式有意杀死的无需重启
对已存在子进程进行标记
打开日志文件
是否收到loadconf的signal
执行accept调度让队列中的下一个Worker持有锁
Nonblock地读与Control进程相连的管道
0 条评论
下一页