canal-server模块介绍-adapter模块的实现方式介绍

在上面两篇中,我们从基本概念理解了canal是一个哪些项目,能应用于哪些场景,之后通过一个demo体验,有了基本的体感和认识。

从这一篇开始,我们将从源码入手,深入学习canal的实现形式。了解canal相关功能的实现方法,其中有好多机制是十分值得深入了解的,从代码实现角度去学习实时数据订阅与同步的实现与核心技术点。其实,假如要在生产中使用这个开源项目,了解源码更是必不可少,是解决问题和新特点订制的前提条件。

本文使用的版本是1.1.4,这也是笔者写这篇博客时的最新稳定版。

1.打算工作

下载源码

git clone https://github.com/alibaba/canal.git

切换到1.1.4这个tag

git checkout canal-1.1.4

或则可以关注我的源码注释版本(正在不断更新中)

https://github.com/saigu/JavaKnowledgeGraph/tree/master/code_reading/canal

2.canal项目模块介绍

canal项目是基于maven建立的,将不同的功能模块界定了不同的子模块。

我们可以简单执行可执行模块deployer,也可以将模块通过maven依赖的方法,将你须要的子模块引入到你自己的项目中进行使用开发。

图片[1]-canal-server模块介绍-adapter模块的实现方式介绍-唐朝资源网

简单介绍下核心模块的功能:

3.模块关联

那这种模块之间是怎样组织、如何关联的呢?

我们从整体到局部来看一下。

整体构架关联,包括admin模块、server模块、client-adapter模块

图片[2]-canal-server模块介绍-adapter模块的实现方式介绍-唐朝资源网

1)server模块是服务端核心模块,拿来拉取binlog的实时变更,之后投递到顾客端。

2)server可以通过配置,选择投递到MQ,或则是启动一个nettygps 协议解析 源代码,让顾客端来拉取。

3)client-adapter就是一个独立布署到服务,可以直接拉取canal-server的消息(或则拉取mq的消息),转发到对应RDS/Redis/HBase,其实,你也可以自己实现一个转发到redis的adapter

4)admin模块是管理控制台,可以调度canal-server组成一个个集群实现instance的高可用、可以修改server、instance的配置信息。

Canal-server模块局部关系,包括deployer模块、server模块、instance模块、parser模块、sink模块、store模块、meta模块、client模块。

图片[3]-canal-server模块介绍-adapter模块的实现方式介绍-唐朝资源网

1)deployer模块是一个启动模块,可以启动canal-server。

2)一个server是一个独立应用,是一个jvm进程,上面可以有多个instance对象。

3)instance内包括了parser、sink、store、meta

4)parser负责获取binlog变更,之后sink将parser获取的binlog变更转换为event,存入store。

5)meta是元信息管理器

6)client模块可以内嵌入你的应用,拿来消费canal-server的消息风波。

基本上核心模块的关系就是这样了,后续会根据模块的维度进行源码剖析,敬请期盼。

都听到最后了,原创不易,点个关注gps 协议解析 源代码,点个赞吧~

知识碎片重新梳理,建立Java知识图谱:github.com/saigu/JavaK…(历史文章查阅十分便捷)

© 版权声明
THE END
喜欢就支持一下吧
点赞146赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容