赞
踩
1.什么是CDC
变化数据捕获,简称CDC。CDC是建立实时数仓的关键技术
2.CDC的种类
CDC总的可以分成两类,侵入式的和 非侵入式的,侵入式的会对源系统产生性能影响,概括可以分成以下几类,基于时间戳的CDC、基于触发器的CDC、基于快照的CDC。非侵入式的CDC一般是基于日志的,比如比较常见的canal的CDC 通过获取binlog获取变化数据。下表是几种CDC类型的特点(参考https://blog.csdn.net/wzy0623/article/details/53896343)
时间戳方式 | 快照方式 | 触发器方式 | 日志方式 | |
能区分插入/更新 | 否 | 是 | 是 | 是 |
周期内,检测到多次更新 | 否 | 否 | 是 | 是 |
能检测到删除 | 否 | 是 | 是 | 是 |
不具有侵入性 | 否 | 否 | 否 | 是 |
支持实时 | 否 | 否 | 是 | 是 |
需要DBA | 否 | 否 | 是 | 是 |
不依赖数据库 | 是 | 是 | 否 | 否 |
3.常见的CDC工具
zendesk maxwell:mysql的实时读取CDC,基于binlog实现是非侵入式的CDC工具,生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序
airbnb SpinalTap:是一种通用的可靠变更数据捕获 (CDC) 服务,
github地址:https://github.com/airbnb/SpinalTap
Debezium:是用于捕获变更数据的开源分布式平台。可以响应数据库的所有插入,更新和删除操作。Debezium依赖于kafka上,所以在安装Debezium时需要提前安装好Zookeeper,Kafka,以及Kakfa Connect。github地址:https://github.com/debezium
canal:基于binlog的mysql CDC工具,是非侵入式的CDC,是alibaba 开源的,有相应的管理界面。
github地址:https://github.com/alibaba/canal
netflix dblog:cdc,但是从官方的介绍,超越cdc,目前还没开源,估计2020 会开源
官网:https://netflixtechblog.com(可惜访问不到,网上也只有一些 介绍)
4.flink-cdc
Flink 1.11 引入了 Flink SQL CDC,flink-cdc解决了普通的CDC必须通过kafka的问题,简化了流程,下图式普通的cdc的流程,通过cdc的工具将mysql的数据采集到kafka,在通过flink、sparkStreaming等流式计算写入到hbase、es,大数据湖等。流程相对复杂,flink-cdc做的就是可以省去普通cdc到kafka的过程。将采集、计算都在flink中完成 。
flink-cdc github地址:https://github.com/ververica/flink-cdc-connectors
参考:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。