canal 启动介绍(2)

本文详细介绍了 Canal 的启动流程,包括启动流程图、时序图及核心源码解析。主要内容涵盖配置加载过程(全局配置与实例配置),以及服务启动步骤(如启动 embededCanalServer 和 CanalServerWithNetty)。同时,文中还提供了 Canal 的配置文件示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述    

    本篇主要是为了讲清楚canal是如何启动的,从文章内容结构来说主要分为流程图、时序图、核心源码三大块。理解一个东西宏观上一定要理清楚层次,然后细节再去追求融会贯通。希望你们会喜欢。


canal启动流程图


img_386b4728f4df502ef1bb5c750f19038a.png
canal启动流程图

说明:

    整个canal的启动过程过程其实大的分为3个过程,分别入口的main函数启动,配置的加载,服务的启动。main的函数启动就没说可以说的,基本上就一个启动入口,着重讲讲配置的加载。

    配置的加载,canal的配置主要分为全局配置和实例配置,全局配置就是启动canal需要的配置,实例配置就是启动Instance需要的配置,这个可以参考后面给出的canal配置章节。

    启动过程,启动过程从宏观层面来说应该包括 启动embededCanalServer、启动CanalServerWithNetty,启动Instance服务。如果在这个基础上再考虑的话还需要考虑Instance层面的HA监控和配置变更监控,以及Server的HA监控。


canal启动时序图


img_ae9536c1c3b02ea1496f16854c25995c.png
canal启动时序图

说明

    canal启动的时序图其实是对canal的流程图进行了细分,其实总体来看也是两大块,配置的加载,服务的启动。

    配置的加载包括:全局配置的加载、instance配置的加载、创建embededCanalServer和CanalServerWithNetty实例、创建server的对应monitor对象(用于HA)、autoscan的监控、创建zkClient实例。

    服务启动包括:注册自身节点到zk节点、订阅zk节点信息、启动embededCanalServer实例、启动CanalServerWithNetty实例、启动instance服务(包括metaManager、alarmHandler、eventStore、eventSink、eventParser)、启动instance配置监听、启动instance config配置监听。


canal 启动源码解析


配置加载
img_96295e3b64f6e9d61838be08ae43576c.png
配置加载-1
img_c8537a8a67999328f541f30d0bc0dfe1.png
配置加载-2


服务启动
img_f85048aac53fb5599ea7a4f77bf395f9.png
服务启动-1
img_228b9b790ed2c17ab7798446b3c66407.png
服务启动-2


canal配置文件

canal配置文件目录
img_ad59b38ebb4408ac77f31d39af28e539.png
canal配置

说明

    canal的配置主要分为3大块,分别是canal的全局配置canal.properties、instance的配置instance.properties、以及instance的spring的配置file-instance.xml。


canal全局配置
img_d4dd497f9312e4fe6a9af586c711259a.png
canal全局配置

说明

    canal的全局配置,基本上可以看到一些全局的配置。


canal的instance配置
img_ff3e5159bdedabe42412e4bcdc49b697.png
canal的instance配置

说明

    canal的instance配置是指连接mysql的实例的配置,这个大家仔细看就能看懂。


canal-instance-sprint实例配置
img_3b7e55d7e8c8103ed5fed1761802338c.png
instance-spring配置

说明

    spring配置其实是用于构建spring-factory用于创建instance实例使用的,从上图就可以看出来。可以看到canal的instance各个组件包括eventParser、eventSink、eventStore、metaManager。

### 启动 Canal Adapter 源码 #### 准备工作 为了成功启动 Canal Adapter 源码,需先准备好开发环境。这包括但不限于 Java 开发工具包 (JDK),Maven 构建工具以及 Git 版本控制系统[^3]。 #### 获取源码 通过 Git 克隆官方仓库来获取最新的 Canal Adapter 源码: ```bash git clone https://github.com/alibaba/canal.git cd canal ``` #### 编译项目 利用 Maven 对整个项目进行编译打包操作,在根目录执行如下命令: ```bash mvn clean install -DskipTests=true ``` 此步骤会自动下载所需依赖库并构建出可执行 JAR 文件。 #### 创建数据库用户 确保 MySQL 中存在具备适当权限的用户供 Canal 使用。可以按照以下 SQL 语句创建新用户 `canal` 并赋予相应权限[^4]: ```sql CREATE USER canal IDENTIFIED BY 'canal'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%'; FLUSH PRIVILEGES; ``` #### 修改配置文件 进入 `/usr/local/canal_adapter/conf/instance.properties` 文件夹内编辑实例配置文件,设置目标数据源连接参数以及其他必要的选项。例如指定监听的目标表名列表、过滤条件等信息[^1]。 #### 放置插件 将自定义或第三方提供的适配器插件放置于 `/usr/local/canal_adapter/plugin` 目录下以便加载使用。 #### 初始化与启动服务 调用 `CanalAdapterLoader.init()` 方法完成初始化过程;随后可通过 `AdapterProcessor.start()` 来正式开启 Canal Adapter 处理逻辑[^2]。 具体来说就是运行包含上述方法的应用程序入口类(通常是带有 main() 函数的那个),这样就可以让 Canal Adapter 正常运作起来处理来自 Canal Server 的变更事件了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值