大数据-262 实时数仓 - Canal 同步数据 介绍背景原理与优势 拉链表 实时统 ...

一给  金牌会员 | 2025-1-11 17:54:46 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 856|帖子 856|积分 2568

点一下关注吧!!!非常感谢!!持续更新!!!

Java篇开始了!



  • MyBatis 更新完毕
  • 目前开始更新 Spring,一起深入浅出!
目前已经更新到了:



  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(已更完)
  • DataX(已更完)
  • Tez(已更完)
  • 数据挖掘(已更完)
  • Prometheus(已更完)
  • Grafana(已更完)
  • 离线数仓(已更完)
  • 实时数仓(正在更新…)
章节内容



  • 业务数据库表布局
  • 生意业务订单、订单产物、产物分类、商家店铺、地域组织表

Canal 同步业务数据

环境准备



  • Hadoop
  • HBase
  • Flink
  • ClickHouse
  • MySQL
  • Canal
  • Kafka
Canal 介绍

阿里巴巴 B2B 公司,由于业务的特性,卖家告急会集在国内,买家告急会集在国外,以是衍生出了杭州和美国异地机房的需求,从 2010 年开始,阿里系公司开始渐渐的尝试基于数据库的日志剖析,获取增量变更举行同步,由此衍生出了增量订阅、消耗的业务。
Canal是用 Java 开辟的基于数据库增量日志剖析,提供增量数据订阅、消耗的中间件。目前,Canal告急支持了 MySQL 的 Binlog 剖析,剖析完成后才利用 Canal Client 用来处理得到相干数据。(数据库同步需要案例的 otter 中间件,基于 Canal)。
Canal 的背景与初衷

在大规模互联网应用中,尤其是在像阿里巴巴如许的电商平台中,数据库的规模和复杂度通常非常高。为了进步数据的实时性和可用性,很多业务场景需要实时地同步数据库中的变化(如订单、用户数据等),并确保数据在多个系统之间同等。
Canal 的诞生,正是为相识决这一问题。通过 变更数据捕获(CDC) 技能,Canal 能够高效地监控并捕获数据库中的数据变动(如插入、更新、删除等操纵),然后将这些变动实时同步到下游系统,如搜索引擎、数据仓库、缓存等。
Canal 的核心功能

变更数据捕获(CDC)

Canal 的核心功能是实现变更数据捕获,它通过 剖析数据库日志(binlog) 的方式来获取数据库中的变化数据。Canal 支持 MySQL、PostgreSQL、Oracle 等数据库,并能够实时地捕获数据库的变化。


  • 增量数据同步: 通过剖析 binlog,Canal 能够识别出数据库的增量变化(插入、更新、删除等),并将这些变动同步到下游系统。
  • 高效处理: Canal 对数据变更举行高效的捕获和同步,支持大规模的分布式部署,能够处理高并发、高吞吐量的场景。
数据同步

Canal 不光可以捕获数据变动,还能将这些数据变动同步到其他系统。常见的应用场景包括:


  • 同步到搜索引擎: 比如将 MySQL 中的数据变更实时同步到 Elasticsearch,以便进步检索的实时性。
  • 同步到数据仓库: 实现 OLAP(联机分析处理)系统中的数据实时同步,比如将数据库变更同步到 Hadoop、ClickHouse 等大数据平台。
  • 缓存同步: 数据库变动后,Canal 可以实时更新缓存(如 Redis),以确保缓存中的数据是最新的。
异构数据库支持

Canal 不光支持 MySQL、PostgreSQL、Oracle 等传统关系型数据库,还支持通过扩展和插件的方式支持更多数据库的接入,适应差别数据库之间的同步需求。
数据剖析与转换

Canal 允许对捕获到的数据举行剖析和转换。用户可以基于 Canal 提供的 API,定制化处理从数据库中捕获的数据,比如数据格式的转换、过滤等。
Canal 的工作原理

Canal 的工作原理大致分为以下几个步骤:


  • 连接数据库:Canal 会连接到源数据库,并获取该数据库的 binlog(对于 MySQL 来说是 binary log,其他数据库有雷同机制)。binlog 记载了数据库的全部数据变动操纵。
  • 剖析 binlog:Canal 会持续监听和剖析数据库的 binlog 文件。每当有新的数据变动时,Canal 就会读取新的 binlog 并剖析出具体的变更内容(插入、更新、删除等)。
  • 数据处理:Canal 会将捕获到的变更数据通过数据剖析处理,然后根据设置和需求将数据同步到下游系统(比方消息队列、缓存、搜索引擎、数据仓库等)。
  • 长期化与监控:Canal 还提供了长期化机制,能够保存已经同步的数据状态,同时具备监控功能,能够及时检测到系统非常并举行告警处理。
Canal 的优势



  • 实时性: Canal 可以非常快速地捕获到数据库中的变更,适用于需要实时数据同步的场景。
  • 高吞吐量: 它可以处理大量的数据变更,适用于高并发、高吞吐量的场景。
  • 机动性: Canal 提供了丰富的扩展接口和插件支持,用户可以根据自己的需求举行定制化处理。
  • 高可用性: Canal 支持分布式部署和高可用架构,可以在多节点之间实现负载均衡和故障切换,包管系统的稳定性。
Canal 的部署与使用

Canal 的部署和使用并不复杂,用户只需设置 Canal 与数据库的连接信息,并定义目标系统,Canal 就能开始实时捕获并同步数据。它支持 单机模式 和 集群模式,用户可以根据实际的吞吐量和可用性需求来选择差别的部署方式。
设置

用户需要设置以下内容:


  • 数据库连接信息:包括数据库的 IP、端口、用户名、密码等。
  • binlog 设置:指定要监听的 binlog 文件。
  • 目标系统设置:设置将变更数据同步到哪个系统,比方 Kafka、Elasticsearch、Redis 等。
启动与监控

Canal 提供了简单的命令行工具来启动服务,而且可以通过 Web 界面或监控系统(如 Prometheus)对 Canal 的运行状态举行实时监控。
使用场景

原始场景

阿里 otter 中间件的一部分



  • 数据同步: 实现差别数据库之间的数据同步,确保数据同等性。
  • 实时数据仓库: 将源数据库的变更实时同步到数据仓库中,举行数据分析和报表展示。
  • 实时搜索引擎更新: 将数据库的变更实时同步到搜索引擎中,提升搜索的实时性和准确性。
  • 缓存更新: 在数据库发生变更时,及时更新缓存中的数据,避免缓存穿透和缓存差别等的问题。
更新缓存


拉链表

订单表,6 月 20 日有 3 条记载:

到 6 月 21 日,表中有 5 条记载:

到 6 月 22 日,表中有 6 条记载:

在数据仓库中筹划汗青拉链表保存该表



  • dw_begin_date 表示该条记载的生命周期开始时间,dw_end_date 表示该条记载的生命周期竣事时间
  • dw_end_date = '9999-12-31’表示该条记载属于有用
  • 假如查询有用记载则可以直接 where 9999-12-31
  • 假如查询 2012-06-21 的汗青快照,dw_begin_date <= ‘2012-06- 21’ and end_date >= ‘2012-06-21’

和原表在 6 月 21 日的记载完全同等,可以看出,如许的汗青拉链表,技能满意汗青数据的需求,又能很大水平的节流存储空间。
实时统计

抓去业务表的新增变化数据,用于实时统计。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表