中间件canal概述
Posted 程序猿小哈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中间件canal概述相关的知识,希望对你有一定的参考价值。
简介
canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 mysql 数据库增量日志解析,提供增量数据订阅和消费
基于日志增量订阅和消费的业务包括:
数据库镜像
数据库实时备份
索引构建和实时维护(拆分异构索引、倒排索引等)
业务 cache 刷新
带业务逻辑的增量数据处理
当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x
模块解析
common模块: 主要是提供了一些公共的工具类和接口.
driver模块: 主要提供数据库连接,从而获取到binlog.
dbsync模块: 提供binlog事件对象.(原始的binlog是二进制流,需要解析为对应的binlog事件).源于淘宝的tddl.
parser模块: 数据源接入,模拟slave协议和master进行交互,协议解析.
parser
模块依赖于dbsync
、driver
模块.store模块: 数据存储.核心接口
CanalEventStore
sink模块:
parser
和store
链接器,进行数据过滤,加工,分发的工作.核心接口为CanalEventSink
meta模块: 增量订阅&消费信息管理器,核心接口为
CanalMetaManager
,主要用于记录canal消费到的mysql binlog的位置.instance模块: 一个server有多个
instance
.每个instance
都会模拟成一个mysql实例的slave.instance模块有四个核心组成部分:parser模块、sink模块、store模块,meta模块。核心接口为CanalInstance
protocol模块: client和server模块之间的通信协议
deployer模块: 部署模块,通过该模块提供的
CanalLauncher
来启动canal server
client模块: canal的客户端,核心接口为
CanalConnector
example模块: 提供client模块使用案例
模块结构
各个模块之间的依赖关系:
通过deployer模块,启动一个canal-server,一个cannal-server内部包含多个instance,每个instance都会伪装成一个mysql实例的slave.client与server之间的通信协议由protocol模块定义.client在订阅binlog信息时,需要传递一个destination参数,server会根据这个destination确定由哪一个instance为其提供服务.
以上是关于中间件canal概述的主要内容,如果未能解决你的问题,请参考以下文章
大数据之实时数据源同步中间件--生产上Canal与Maxwell颠峰对决