基于alibaba-canal的异构数据同步解决方案

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

随着业务的发展,公司的整体架构方向向微服务演进。随之衍生出各种问题,本文主要提供的是数据库隔离(分库)之后的跨库join问题一种解决方案。

起因:

​ 商品服务的抽离,表结构细化;导致各依赖模块出现了各种跨库join问题。在某些复杂的业务场景下,基于原表(未分库前的商品信息)的一次join操作,在新的表结构下需要做多次跨库join。基于此场景,最终确定了技术方案:

  • 对于简单的跨库join操作,使用服务层代码进行数据组装的方式,通过服务调用 + 数据库in查询的方式解决。

  • 对于复杂的业务操作,使用数据异构同步的方式,将细化后的商品信息同步、聚合到依赖模块的库中,以满足复杂业务的需求。

    本文主要介绍一种基于alibaba-canal的数据异构同步的解决方案。

技术清单:
  • Mysql – 数据库
  • Canal– alibaba开源的数据库日志监听中间件
  • Zookeeper – canal高可用的依赖
  • RocketMQ – 消息服务
架构设计图:
Alibaba-Canal使用详解(排坑版)_MySQL与ES数据同步 Canal使用详解 阅读详情

相关推荐

Canal数据同步的终极解决方案,阿里巴巴开源的Canal框架当之无愧!!

在当今互联网行业,尤其是现在分布式、微服务开发环境下,为了提高搜索效率,以及搜索的精准度,会大量使用Redis、Memcached等NoSQL数据库,也会使用大量的Solr、Elasticsearch等全文检索服务。那么,这个时候,就会有一个问题需要我们来思考和解决:那就是数据同步的问题!如何将实时变化的数据库中的数据同步到Redis/Memcached或者Solr/Elasticsearch中呢?

冰河的专栏 3317

Alibaba/Canal 使用

AlibabaCanal是一款用于MySQL数据库增量订阅和消费的工具,主要用于解决数据库的实时数据同步问题。:在分布式系统中,将一个MySQL数据库的数据实时同步到另一个MySQL数据库,确保数据的一致性。:在进行数据库迁移时,使用Canal可以实现源数据库到目标数据库的实时数据迁移,减少迁移过程中的停机时间。:将MySQL数据库的变更数据实时推送到大数据平台(如Hadoop、Kafka、Elasticsearch等),进行实时数据分析和处理。

dzhou1991的博客 1354

阿里的数据同步神器——Canal

数据增量同步工具 Canal

恒哥的博客 1万+

Canal数据同步的终极解决方案,阿里巴巴开源的Canal框架当之无愧!

我想问下大家当初选择做程序员的初衷是什么?有思考过这个问题吗?高薪?热爱?既然入了这行就应该知道,这个行业是靠本事吃饭的,你想要拿高薪没有问题,请好好磨练自己的技术,不要抱怨。有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。

2401_84103844的博客 1652

alibaba数据同步组件canal的实践整理

canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,基于日志增量订阅和消费的业务包括【1】数据库镜像【2】数据库实时备份【3】索引构建和实时维护(拆分异构索引、倒排索引等)【4】业务 cache 刷新【5】带业务逻辑的增量数据处理......

发现问题,面对问题,分析问题,解决问题,总结问题 1169

mysql+canal+rabbitMq+SpringCloud 实现数据库数据同步监听

前言 项目开发中,数据同步一直是一个令人头疼的问题。在业务量小,场景不多,数据量不大的情况下我们可能会选择在项目中直接写一些定时任务手动处理数据,例如从多个表将数据查出来,再汇总处理,再插入到相应的地方。但是随着业务量增大,数据量变多以及各种复杂场景下的分库分表的实现,使数据同步变得越来越困难。 以前用过阿里的Datax,一款离线数据同步工具,通过在项目中定时调用指定的shell脚本,来实现在各种异构数据源之间的数据同步。刚好最近又用到了阿里的canal,于是就抱着学习的态度在本地搭了一套模拟环境。虽然网上

u011232863的博客 4672

Mysql实时数据同步工具Alibaba Canal 使用

canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。 基于日志增量订阅和消费的业务包括 数据库镜像 数据库实时备份 索引构建和实时维护(拆分异构索引、倒排索引等) 业务 cache 刷新 带业务逻辑的

寓教于乐。教己助人 2559

alibaba canal安装笔记

canalalibaba开源的基于mysql binlog解析工具,可利用它实现mysql增量订阅/消费,典型的应用场景如下图: 利用canal,可以将mysql的数据变化,通过解析binlog,投递到kafka(或rocket mq),mq的消费方,可以把这些数据变化,应用到不同的业务场景,比如: 1. 同步到redis(即:数据库的变化自动同步到缓存) 2. 同步到es搜索引擎(...

weixin_30362083的博客 506

Canal 与kafka

近段时间,业务系统架构基本完备,数据层面的建设比较薄弱,因为笔者目前工作重心在于搭建一个小型的数据平台。优先级比较高的一个任务就是需要近实时同步业务系统的数据(包括保存、更新或者软删除)到一个另一个数据源,持久化之前需要清洗数据并且构建一个相对合理的便于后续业务数据统计、标签系统构建等扩展功能的数据模型。基于当前团队的资源和能力,优先调研了Alibaba开源中间件Canal的使用。 这篇文章简单介...

weixin_40544053的博客 1311

Canal】实现原理和搭建方案

canal.adapter,相当于canal的客户端,会从canal-deployer中获取数据,然后对数据进行同步,可以同步到MySQL、Elasticsearch和HBase等存储中去。(1)全局配置:conf/application.properties(也可以是conf/application.yml,连接 Canal-Server、配置同步目标、全局参数)下载canal.deployer,可以直接监听MySQL的binlog,把自己伪装成MySQL的从库,只负责接收数据,并不做处理。

weixin_44823875的博客 693

阿里巴巴Canal原理剖析

Canal是阿里开源的一款基于Mysql数据库binlog的增量订阅和消费组件,通过它可以订阅数据库的binlog日志,然后进行一些数据消费,如数据镜像、数据异构、数据索引、缓存更新等。相对于消息队列,通过这种机制可以实现数据的有序化和一致性,本文主要讲解Canal的原理,大部分内容来源于github上的介绍,这里主要做一个整合,方便自己和大家更好的理解Canal github地址:https://github.com/alibaba/canal 简介 ...

xiaolinzi176的博客 1827

mysql 二进制订阅神器 alibabaCanal

Canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。阿里巴巴 B2B 公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所 以衍生出了同步杭州和美国异地机房的需求,从 2010 年开始,阿里系公司开始逐步的尝试 基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务。 Canal 是用 Java 开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。 目前。Canal 主要支持了 MySQL

LoveSummer 3734

alibaba-canal 开源数据监听实战,附上业务代码

alibaba开源数据同步神器——canal

重露成涓滴 1221

Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性

Springcloud, Redis, Canal

qq_43649937的博客 3257

Canal安装使用

文章目录一、canal简介工作原理MySQL主备复制原理canal 工作原理下载canal安装使用mysql配置canal-deployer安装1.解压canal.deployer2.修改配置文件启动查看日志查看instance日志Canal-Adapter安装1.解压canal.deployer2.修改配置文件sql映射说明: sql支持多表关联自由组合, 但是有一定的限制:3.启动ES数据同步 一、canal简介 canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库

qq_33666686的博客 1051

Alibaba Canal

一、简介 基于日志增量订阅和消费的业务包括 数据库镜像 数据库实时备份 索引构建和实时维护(拆分异构索引、倒排索引等) 业务 cache 刷新 带业务逻辑的增量数据处理 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x 二、原理 MySQL主备复制原理 MySQL master 将数据变更写入二进制...

luoqinglong的专栏 318

实现Canal和Kafka实现MySQL的Binlog实时同步

前提 近段时间,业务系统架构基本完备,数据层面的建设比较薄弱,因为笔者目前工作重心在于搭建一个小型的数据平台。优先级比较高的一个任务就是需要近实时同步业务系统的数据(包括保存、更新或者软删除)到一个另一个数据源,持久化之前需要清洗数据并且构建一个相对合理的便于后续业务数据统计、标签系统构建等扩展功能的数据模型。基于当前团队的资源和能力,优先调研了Alibaba开源中间件Canal的使用。 这篇文章简单介绍一下如何快速地搭建一套Canal相关的组件。 关于Canal 简单介绍一下中间件Cana

在每次的突破中遇见更好的自己 561

SpringCloudAlibaba - 数据同步中间件Canal

简介 官方文档:https://github.com/alibaba/canal canal ,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消...

AkiraNicky的博客 1万+

alibaba Canal 增量订阅 & 消费组件,了解,安装,部署实践

下载部署版本 :canal.deployer-1.1.6.tar.gz issues地址:https://github.com/alibaba/canal/issues/4245注意:1.1.6 版本安装包有问题,需要下载源码,自己重新编译版本下载部署版本 : canal.deployer-1.1.4.tar.gz直接解压即可, 配置 canal 见:https://github.com/alibaba/canal/issues/3150修改方法,打开 startup.bat 文件 19 行修改如下

Crazy_Cw的博客 1574
上一篇: 初识ThreadPoolExecutor(二)——源码简单解读
下一篇: 逐行解读Spring(一) - Xml配置解析,bean标签的解析
小希子丶
博客等级 码龄9年 4粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值