论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
云原生
›
Canal架构以及使用规范
Canal架构以及使用规范
泉缘泉
金牌会员
|
2024-11-15 13:15:17
|
显示全部楼层
|
阅读模式
楼主
主题
818
|
帖子
818
|
积分
2464
Canal架构以及使用规范
一、Canal的作用
相关文档:GitHub - alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件
MySQL主备复制原理
MySQL master 将数据变更写入二进制日志( binary log, 此中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行检察)
MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
MySQL slave 重放 relay log 中事件,将数据变更反映它本身的数据
canal 工作原理
canal 模拟 MySQL slave 的交互协议,伪装本身为 MySQL slave ,向 MySQL master 发送dump 协议
MySQL master 收到 dump 哀求,开始推送 binary log 给 slave (即 canal )
canal 剖析 binary log 对象(原始为 byte 流)
以是canal是基于MySQL的主从复制原理上处理的,这使得我们的主库肯定要开启主从复制功能才华使用canal,以及主库的binlog 格式为:
检察当前数据库的binlog格式
二、Canal的团体架构
现在Canal分为三个部门:
server 代表一个 canal 运行实例,对应于一个 jvm
instance 对应于一个数据队列 (1 个 canal server 对应 1…n 个 instance )
instance 下的子模块
eventParser: 数据源接入,模拟 slave 协议和 master 进行交互,协议剖析
eventSink: Parser 和 Store 链接器,进行数据过滤,加工,分发的工作
eventStore: 数据存储
metaManager: 增量订阅 & 消费信息管理器
EventParser 在向 MySQL 发送 dump 命令之前会先从 Log Position 中获取上次剖析成功的位置(假如是第一次启动,则获取初始指定位置大概当前数据段 binlog 位点)。mysql 接受到 dump 命令后,由 EventParser 从 mysql 上 pull binlog 数据进行剖析并传递给 EventSink(传递给 EventSink 模块进行数据存储,是一个壅闭操作,直到存储成功 ),传送成功之后更新 Log Position。流程图如下:
EventSink 起到一个类似 channel 的功能,可以对数据进行过滤、分发/路由(1:n)、归并(n:1)和加工。EventSink 是连接 EventParser 和 EventStore 的桥梁。
EventStore 实现模式是内存模式,内存结构为环形队列,由三个指针(Put、Get 和 Ack)标识数据存储和读取的位置。
MetaManager 是增量订阅 &消费信息管理器,增量订阅和消费之间的协议包括 get/ack/rollback,分别为:
Message getWithoutAck(int batchSize),允许指定 batchSize,一次可以获取多条,每次返回的对象为 Message,包罗的内容为:batch id[唯一标识]和 entries[具体的数据对象]
void rollback(long batchId),顾名思义,回滚上次的 get 哀求,重新获取数据。基于 get 获取的 batchId 进行提交,避免误操作
void ack(long batchId),顾名思议,确认已经消费成功,通知 server 删除数据。基于 get 获取的 batchId 进行提交,避免误操作
三、Canal的使用
admin
四、现在Canal的使用规范
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
泉缘泉
金牌会员
这个人很懒什么都没写!
楼主热帖
华为一镜到底主题__荣耀30系列安装教程 ...
日志模块
「Docker入门指北」容器很难理解?带你 ...
数据资产为王,如何解析企业数字化转型 ...
信创环境下分布式文件存储MinIO集群部 ...
28基于java的简单酒店数据管理 ...
Vulnhub之M87靶机详细测试过程(不同提 ...
面试题百日百刷-HBase中HTable API有没 ...
解决NuGet加载或下载资源慢的问题 ...
MYSQL(进阶篇)——一篇文章带你深入 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表