数据订阅与同步
文章平均质量分 91
阿丸笔记
微信公众号:阿丸笔记。
Java知识图谱:https://github.com/saigu/JavaKnowledgeGraph
展开
-
爷青回,canal 1.1.6来了,几个重要特性和bug修复
刚刚在群里看到消息说,时隔一年,canal 1.1.6正式release了,赶紧上去看看有什么新特性。原创 2022-05-27 10:03:02 · 1381 阅读 · 7 评论 -
2020实战复盘:如何从0到1搭建数据传输平台产品DTS?
2020年下半年的主要任务,就是从0到1搭建了数据传输服务平台产品。平稳上线后,基本达到预期,实现了最初的产品规划目标。这里做个复盘,记录下从0到1的过程,包括:产品设计整体技术架构核心模块的技术选型、原理与改造适配总结与展望1.什么是数据传输服务数据传输服务DTS(Data Transmission System)的目标是支持RDBMS、NoSQL、OLAP等数据源间的数据交互,集数据迁移/订阅/同步于一体,帮助构建安全、可扩展、高可用的数据架构。当然,目前我们的核心存储还是以MySQ原创 2021-01-04 10:40:23 · 625 阅读 · 0 评论 -
拥抱云原生,如何将开源项目用k8s部署?
k8s以及云原生相关概念近年来一直比较火热,阿丸最近搞了个相关项目,小结一下。本文将重点分享阿里开源项目otter适配k8s部署的改造过程,其中的改造过程和技巧应该适用于将大多数开源项目改造到k8s进行部署。1.背景otter是阿里开源的分布式数据库同步系统,基于数据库增量日志解析,并准实时同步到本机房或异地机房的mysql/oracle数据库(相关内容可以参考https://github.com/alibaba/otter,本文不做过多赘述)。为了充分利用物理资源、快速扩容同步节点、拥抱云原生,原创 2020-12-21 12:55:08 · 762 阅读 · 0 评论 -
使用过mysql的binlog吗?看看如何用binlog排查阿里开源项目otter的问题
MySQL的binlog相信大家都有所耳闻,但是可能没有真正日常使用过。因此,本文结合一个otter小坑的排查案例,来分享下binlog的日常使用方式。重点了解下:binlog的导出方式binlog的解析方式结合案例分享下开源项目otter的一个小坑1.案例背景某个周末突然收到报警,发现线上多云数据库的数据同步任务挂起,显示日志写入数据失败。错误原因非常明显:唯一索引冲突。查看了一下源库的数据内容,确实已经update完毕。而目标库的数据内容,确实存在冲突导致无法update。2原创 2020-12-04 19:19:49 · 339 阅读 · 0 评论 -
基于canal的client-adapter数据同步必读指南
本文将介绍canal项目中client-adapter的使用,以及落地生产中需要考虑的可靠性、高可用与监控报警。(基于canal 1.1.4版本)canal作为mysql的实时数据订阅组件,实现了对mysql binlog数据的抓取。虽然阿里也开源了一个纯粹从mysql同步数据到mysql的项目otter(github.com/alibaba/otter,基于canal的),实现了mysql的单向同步、双向同步等能力。但是我们经常有从mysql同步数据到es、hbase等存储的需求,就需要用户自己用ca原创 2020-09-04 10:47:06 · 9118 阅读 · 7 评论 -
「从零单排canal 07」 parser模块源码解析
基于1.1.5-alpha版本,具体源码笔记可以参考我的github:https://github.com/saigu/JavaKnowledgeGraph/tree/master/code_reading/canal本文将对canal的binlog订阅模块parser进行分析。parser模块(绿色部分)在整个系统中的角色如下图所示,用来订阅binlog事件,然后通过sink投递到store.parser模块应该来说是整个项目里面比较复杂的模块,代码非常多。因此,本文根据过程中的主线来进行展.原创 2020-08-21 16:48:50 · 877 阅读 · 1 评论 -
「从零单排canal 06」 instance模块源码解析
基于1.1.5-alpha版本,具体源码笔记可以参考我的github:https://github.com/saigu/JavaKnowledgeGraph/tree/master/code_reading/canalinstance模块比较简单,我们重点了解以下几个问题instance配置模式有哪几种,如何根据配置创建instance?远端配置如何覆盖本地配置的?instance实例内部有哪些组件?1.基本结构instance模块下面也分为三个子模块,core、manager、spr.原创 2020-07-28 13:05:40 · 459 阅读 · 0 评论 -
「从零单排canal 05」 server模块源码解析(1.1.5-sp版本)
基于1.1.5-alpha版本,具体源码笔记可以参考我的github:https://github.com/saigu/JavaKnowledgeGraph/tree/master/code_reading/canal本文将对canal的server模块进行分析,跟之前一样,我们带着几个问题来看源码:CanalServer有几种使用方式?控制台Admin、客户端client是如何与CanalServer交互的?CanalServerWithNetty和CanalServerWithEmbedd.原创 2020-07-19 19:21:54 · 623 阅读 · 0 评论 -
「从零单排canal 04」 启动模块deployer源码解析
基于1.1.5-alpha版本,具体源码笔记可以参考我的github:https://github.com/saigu/JavaKnowledgeGraph/tree/master/code_reading/canal本文将对canal的启动模块deployer进行分析。Deployer模块(绿色部分)在整个系统中的角色如下图所示,用来启动canal-server.模块内的类如下:为了能带着目的看源码,以几个问题开头,带着问题来一起探索deployer模块的源码。CanalServer启.原创 2020-07-05 21:37:46 · 747 阅读 · 1 评论 -
「从零单排canal 03」 canal源码分析大纲(1.1.4版本)
在前面两篇中,我们从基本概念理解了canal是一个什么项目,能应用于什么场景,然后通过一个demo体验,有了基本的体感和认识。从这一篇开始,我们将从源码入手,深入学习canal的实现方式。了解canal相关功能的实现方式,其中有很多机制是非常值得深入了解的,从代码实现角度去学习实时数据订阅与同步的实现与核心技术点。当然,如果要在生产中使用这个开源项目,了解源码更是必不可少,是解决问题和新特性定制的前提条件。本文使用的版本是1.1.4,这也是笔者写这篇博客时的最新稳定版。1.准备工作下载源码git原创 2020-06-22 09:58:05 · 694 阅读 · 0 评论 -
「从零单排canal 02」canal集群版 + admin控制台 最新搭建姿势(基于1.1.4版本)
canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据 订阅 和 消费。应该是阿里云DTS(Data Transfer Service)的开源版本,开源地址:https://github.com/alibaba/canal。canal从1.1.4版本开始引入了admin控制台,有了很多不一样的配置方式。在搭建过程中如果仅仅按照wiki的用户手册,还是容易踩很多坑的。因此,将笔者在搭建过程中的步骤记录下来,作为官方wiki的 补充,希望能有所帮助原创 2020-06-10 12:56:04 · 3521 阅读 · 6 评论 -
「从零单排canal 01」 canal 10分钟入门(基于1.1.4版本)
1.简介canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据 订阅 和 消费。应该是阿里云DTS(Data Transfer Service)的开源版本。2.提供的能力Canal与DTS提供的功能基本相似:1)基于Mysql的Slave协议实时dump binlog流,解析为事件发送给订阅方。事件格式为(伪代码):Eevnt { Header { logfileName [binlog文件名]原创 2020-06-04 21:15:02 · 808 阅读 · 0 评论 -
实时数据订阅与分发系统概述
实时数据订阅与分发系统可以将业务数据源变更实时分发分发到消息总线上,并维护消息的统一格式,提供通用的客户端框架供消息生产者与下游业务接入。一般能用于以下场景:索引构建:MySQL到ES缓存管理:MySQL到Redis或本地cache数据库镜像实时备份价格变化等重要业务信息订阅实时数据订阅与分发系统一般都有如下几个核心模块构成:Change Data Capture(变更数据抓取,CDC):负责实时抓取业务数据源的变更消息;消息中间件:支撑消息的分发与堆积;原创 2020-05-27 22:47:46 · 3601 阅读 · 0 评论