共计 3214 个字符,预计需要花费 9 分钟才能阅读完成。
TiCDC 是一个通过拉取 TiKV 日志实现的 TiDB 增量数据同步工具,具备还原数据到与上游任意 TSO 统一状态的能力,同时提供凋谢数据协定,反对其余零碎订阅数据变更。TiCDC 运行时是无状态的,借助 PD 外部的 etcd 实现高可用。TiCDC 集群反对创立多个同步工作,向多个不同的上游进行数据同步。
在 4.0 之前,TiDB 提供 TiDB Binlog 实现向上游平台的近实时复制,在 TiDB 4.0 中,引入 TiCDC 作为 TiDB 变更数据的捕捉框架。TiCDC 首个 GA 版本随着 TiDB 4.0.6 正式公布,具备生产环境的运行能力,次要劣势如下:
- 数据高可用 :TiCDC 从 TiKV 获取变更日志,意味着只有 TiKV 具备高可用就能保证数据的高可用,遇到 TiCDC 全副异样敞开的极其状况,后续启动还能失常获取数据。
- 程度扩大 :反对组建多 TiCDC 节点集群,将同步工作平均地调度到不同节点上,面对海量数据时,能够通过增加节点解决同步压力过大的问题。
- 主动故障转移 :当集群中的一个 TiCDC 节点意外退出时,该节点上的同步工作会主动调度到其余的 TiCDC 节点上。
- 反对多种上游零碎和输入多种格局 :目前曾经反对兼容 MySQL 协定的数据库、Kafka 和 Pulsar 分布式流解决零碎,反对输入的格局有 Apache Avro,Maxwell 和 Canal。
利用场景
两核心主备
数据库作为企业 IT 的外围,在稳固运行的根底之上,数据库的容灾建设成为保障业务连续性的前提条件。
综合考量业务关键性、老本等因素,局部用户心愿外围数据库只须要实现主备站点的容灾即可,利用 TiCDC 构建 TiDB 主备站点的容灾计划成为现实之选。该计划基于 TiCDC 的数据同步性能,能够适配两个核心长距离距离、网络提早较大的场景,进行两个数据中心 TiDB 集群之间的数据单向同步,保障事务的最终一致性,实现秒级 RPO。
环形同步与多活
利用 TiCDC 实现三个 TiDB 集群之间的环形同步,构建 TiDB 多核心的容灾计划。当一个数据中心的机柜发生意外掉电,能够把业务切换到另一个数据中心的 TiDB 集群,实现事务的最终一致性和秒级 RPO。为了分担业务拜访的压力,在应用层能够随时切换路由,将流量切换到目前负载较小的 TiDB 集群提供服务,实现负载平衡,在满足数据高可用的同时晋升容灾能力。
数据订阅
TiCDC 为上游数据生产端提供实时、高吞吐、稳固的数据订阅服务,通过凋谢数据协定(Open Protocol)与 MySQL、Kafka、Pulsar、Flink、Canal、Maxwell 等多种异构生态系统对接,满足用户在大数据场景中对各类数据的利用与剖析需要,宽泛实用于日志收集、监控数据聚合、流式数据处理、在线和离线剖析等场景。
最佳实际
小红书
小红书是年轻人的生存形式平台,用户能够通过短视频、图文等模式记录生存点滴,分享生存形式,并基于趣味造成互动。截至到 2019 年 10 月,小红书月沉闷用户数曾经过亿,并继续快速增长。
小红书在报表剖析、大促实时大屏、物流仓储、电商数据中台、内容平安审核剖析等多个场景应用 TiDB 承载外围业务。在内容平安审核剖析场景,上游 TiDB 承载平安审核数据的实时记录,由线上利用间接写入,实现实时数据的监控和剖析。
在审核数据分析的业务流程中,通过 TiCDC 抽取 TiDB 的实时流数据,接到上游 Flink 进行实时计算聚合,计算结果再次写入 TiDB,用于审核数据的剖析、人工效率的剖析和治理等。小红书通过调用 TiCDC 外部 API(Sink Interface)自定义 Sink,应用 Canal 协定发送数据到 Flink,对接已有业务零碎,显著升高业务零碎的革新老本。TiCDC 高效的数据同步,对异构数据生态的反对,为小红书业务数据的实时处理奠定了坚实基础。
汽车之家
汽车之家是寰球访问量最大的汽车网站,致力于通过产品服务、数据技术、生态规定和资源为用户和客户赋能,建设“车媒体、车电商、车金融、车生存”4 个圈。
TiDB 在汽车之家曾经稳固运行两年多的工夫,承载了论坛回复,资源池,好友关系等重要业务。在 2020 年 818 大型促销流动中,汽车之家采纳 TiDB 两地三核心的计划,为秒杀、红包、抽奖、摇一摇等场景提供全方位的数据保障,应用 TiCDC 将 TiDB 集群数据实时同步至上游的 MySQL 数据库,作为故障应急的备份,实现业务容灾能力的晋升。TiCDC 数据同步的提早在秒级别,很好地满足了线上促销类业务的实时性要求。
智能举荐是汽车之家的一个重要业务,资源池是智能举荐的底层存储。资源池接管和汇聚各类资讯信息,进行数据加工后供首页举荐、产品展现、搜寻等业务前台做举荐展现。资源池后期应用 MySQL 作为存储层,采纳 MySQL Binlog 传入 ElasticSearch,满足检索场景需要。因为 MySQL 呈现性能和容量的瓶颈,切换到 TiDB 之后,汽车之家采纳 TiCDC 做异构数据的同步,替换原有的 MySQL Binlog 计划。TiCDC 高可用、低提早、反对大规模集群等个性,为业务提供稳固的数据撑持。汽车之家基于 TiCDC 开发了日志数据输入到 Kafka 接口,实现海量异构数据的同步解决,目前曾经上线并稳固运行两个多月。
海尔智家
海尔智家 APP 是海尔公布的挪动端官网体验交互入口,为寰球用户提供智慧家庭全流程服务、全场景智家体验与一站式智家定制计划。
海尔智家的 IT 技术设施构建在阿里云上,外围业务要求数据库反对 MySQL 协定,在满足强统一分布式事务的根底上,提供灵便的在线扩大能力,并且能够与各类大数据技术生态严密交融,TiDB 4.0 成为海尔智家的现实之选。
利用 TiDB 增量数据同步工具 TiCDC 将用户信息和生存家信息同步到 ElasticSearch,提供近实时的搜寻性能。目前用户表数据近千万,数据量达到 1.9G,Kafka 日生产音讯量在 300 万左右。此外,TiCDC 为智能举荐的大数据服务提供稳固、高效的数据同步,基于对立的 TiCDC Open Protocol 行级别的数据变更告诉协定,极大不便了不同部门的数据解析需要,目前智能举荐的性能正在开发中。
知乎
知乎是中文互联网综合性内容平台,以“让每个人高效取得可信赖的解答”为品牌使命和北极星。
知乎在首页个性化内容举荐、已读服务等场景中应用 TiDB 作为外围数据库,通过 TiCDC Open Protocol 输入日志到 Kafka,进行海量的音讯解决。随着业务量级的增长,在应用的过程中遇到了诸多因 Kafka 架构和历史版本实现上的限度而引发的问题。思考到 Pulsar 对原生跨地区复制(GEO-Replication)的反对同知乎将来基础设施云原生化的方向更加符合,知乎开始在一些业务中应用 Pulsar 替换 Kafka。
知乎对 TiCDC 的外围模块进行了一系列开发工作(https://github.com/pingcap/ti…,https://github.com/pingcap/ti…),把 TiCDC Sink 与 Pulsar 进行对接,实现 TiCDC 的数据同步到 Pulsar。借助 Pulsar 所具备的 GEO-Replication 性能,能够为 TiCDC 的消费者带来地理位置无关的变更事件订阅能力。Pulsar 集群的疾速节点扩容、故障的疾速恢复能力能够为 TiCDC 事件的生产方提供更优的数据实时性保障。
从后期业务的实际来看,Pulsar 与 TiCDC 的利用获得了现实成果。知乎将推动各项业务从 Kafka 向 Pulsar 进行全面的迁徙,将来也将利用 Pulsar 到跨集群同步 TiDB 数据的场景下。
体验 TiCDC
大家能够通过 TiUP(部署文档)上疾速部署 TiCDC,通过 cdc cli
创立同步工作,将实时写入同步到上游的 TiDB 中,或者上游 Pulsar 中,又或者上游 Kafka 中(操作文档)
对于 4.0.6 GA 之前版本的用户,请参考降级文档。
致谢
感激所有 TiCDC 的贡献者,TiCDC 可能走到 GA 离不开每一位贡献者的致力!