摘要:本文整理自 OceanBase 技术专家王赫(川粉)在 5 月 21 日 Flink CDC Meetup 的演讲。主要内容包括:
-
OceanBase 介绍 -
Flink CDC OceanBase Connector 实现原理 -
Flink CDC + OceanBase 应用场景 -
Flink CDC OceanBase Connector 未来展望
一、OceanBase 介绍
OceanBase 是蚂蚁集团自研的分布式数据库。从 10 年开始立项并研发迭代,最早的用户是淘宝的收藏夹。14 年,OceanBase 研发团队从淘宝迁移至蚂蚁集团,主要负责支持支付宝内部的去 IOE 工作,即替换支付宝所用的 Oracle 数据库。目前,蚂蚁集团数据库已经全部迁移到 OceanBase。2021 年 6 月 1 号,OceanBase 正式地对外开源,开放了 MySQL 兼容的版本。
OceanBase 数据库经历了三代架构升级,从最初应用于电商的分布式存储系统,到后面通用的分布式数据库,再到如今企业级的分布式数据库。
上图展示了 OceanBase 的架构。
最上层的 App 通过 OBProxy(负载均衡代理)访问 OceanBase 数据库的 server 端, server 端的数据存在多个副本,副本之间的关系类似于数据库架构中的主从关系,但它是表级别的,即分区表的分区是以表级别为单位存在多个副本,然后打散存在于多个 server 中。
OceanBase 的架构具有以下几个特点:
-
无共享架构:每个节点均有自己完整的 SQL 引擎、存储引擎和事务处理逻辑,节点之间完全对等,不存在分层结构。
-
分区级可用性:提供分区级的可用性。在 OceanBase 数据库中,分区是可靠性和扩展性的基本单元,实现了访问路由、负载均衡以及自动故障恢复。 -
高可用 + 强一致性:由于数据存在多个副本,多个副本之间通过 Paxos 的一致性协议来提供高可靠性,并且确保日志的持久化在多数派节点成功。
-
高可用:基于 Paxos 协议,强一致性。少数副本故障,数据不丢,服务不停。 -
高扩展:支持在线水平扩展、缩容,且各个节点之间可以自动实现负载均衡。 -
高兼容:社区版提供了 MySQL 协议和语法的兼容。 -
低成本:OceanBase 数据库存储的使用成本约为 MySQL 的 1/3 左右。因为其对硬件品质要求较低,且对存储进行了非常多的优化,“存储压缩比” 极致。 -
多租户:租户之间的资源完全隔离,不同业务方只需在自己的租户中进行数据管理,可以节省一定的成本。 -
HTAP:在一套引擎中同时实现了 OLTP 和 OLAP 的功能。
二、Flink CDC OceanBase Connector
实现原理
-
oblogproxy:开源组件,消费日志流的服务, Flink CDC 依赖于此组件来实现增量的数据拉取。 -
OMS store:OceanBase 对外提供的数据迁移服务。商业版的 OMS 已经迭代了很多版本,支持很多数据源。去年,OMS 提供了社区版的支持,主要支持了 OceanBase 的社区版以及 MySQL 两种数据源。 -
JNI client:可以通过 JNI 的日志客户端直接使用 obcdc 与 OBSserver 进行交互拉取增量日志,正在开源计划中。
-
OceanBase Canal:Canal 是阿里巴巴对外开源的 MySQL 增量日志拉取工具。OceanBase 社区基于开源版的 Canal 最新代码,增加了对于 OceanBase 增量日志的拉取解析能力。 -
Flink CDC:通过 oblogproxy 使用 obcdc,从 OceanBase 拉到增量日志之后通过另外的开源组件 logproxy-client 消费增量日志,并进行处理。
-
MySqlSource:实现了最新的 source 接口以及并发读取。 -
DebeziumSourceFunction:基于 Debezium 实现了 SourceFunction,支持旧版 MySQL、Oracle、MongoDB、SqlServer、PostgreSQL。 -
OceanBaseSourceFunction:实现了 SourceFunction 接口,分别基于 JDBC 和 logproxy-cilent 实现了全量和增量读取。
三、Flink CDC + OceanBase
应用场景
场景1:基于分库分表的数据集成
场景2:跨集群/租户的数据集成
场景3:多种数据源的数据集成
场景4:搭建 OLAP 应用
四、OceanBase Connector 未来展望
提问
Qustions
&
解答
Answers
Flink CDC OceanBase Connector 开源后的易用性和稳定性如何?
易用性方面,开源一年以来,我们陆续增加了很多开源组件,包括 OMS、OCP 等非开源社区版生成功能的支持;稳定性方面,OceanBase 已经在蚂蚁内部大量应用, MySQL 兼容版本也已经在包括快手在内的 20 多家企业中投入大规模应用,因此无须担心其稳定性。
OceanBase 的分片信息、索引信息等元数据存储在哪里?
存储在 OB server 内,可以通过 SQL 直接进行查询。
本文为从大数据到人工智能博主「maolv, xiao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://lrting.top/backend/6948/