DM 源码阅读系列文章(二)整体架构介绍
作者:张学程 本文为 DM 源码阅读系列文章的第二篇, 第一篇文章 简单介绍了 DM 源码阅读的目的和规划,以及 DM 的源码结构以及工具链。从本篇文章开始,我们会正式开始阅读 DM 的源码。 本篇文章主要介绍 DM 的整体架构,包括 DM 有哪些组件、各组件分别实现什么功能、组件之间交互的数据模型和 RPC 实现。 整体架构 通过上面的 DM 架构图,我们可以看出,除上下游数据库及 Prometheus 监控组件外,DM 自身有 DM-master、DM-worker 及 dmctl 这 3 个组件。其中,DM-master 负责管理和调度数据同步任务的各项操作,DM-worker 负责执行具体的数据同步任务,dmctl 提供用于管理 DM 集群与数据同步任务的各项命令。 DM-master DM-master 的入口代码在 cmd/dm-master/main.go ,其中主要操作包括: 调用 cfg.Parse 解析命令行参数与参数配置文件 调用 log.SetLevelByString 设置进程的 log 输出级别 调用 signal.Notify 注册系统 signal 通知,用于接受到指定信号时退出进程等 调用 server.Start 启动 RPC server,用于响应来自 dmctl 与 DM-worker 的请求 在上面的操作中,可以看出其中最关键的是步骤 4