OceanBase X Flink 基于原生分布式数据库构建实时计算解决方案

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: OceanBase X Flink 基于原生分布式数据库构建实时计算解决方案

01

分布式数据库 OceanBase 关键技术解读



作为一款历经 12 年的纯自研国产分布式数据库,从产品立项到核心交易业务上线,OceanBase 从 1.0 时代坚定的走向分布式架构,产品在支付宝内部开始落地实践并支持核心业务。
随着产品能力进一步增强,OceanBase 2.0 时代从 KV 存储系统演变成具备分布式事务,以及多副本强一致性能力的原生分布式数据库,开始服务于外部企业客户,包括互联网、金融、证券等等行业。
在 3.0 时代,随着 HTAP 能力的完善,混合引擎以及混合部署方案吸引更多的海外企业客户使用。随着 4.0 版本的发布,OceanBase 提出单机分布式一体化架构,助力企业小型化和公有云服务。


OceanBase 的一体化架构总结起来有三个关键字:Paxos 协议、无共享架构、分区级高可用。
默认情况下,数据被存储多份,即多副本概念。副本之间通过 Paxos 协议保证数据强一致性。通过多副本+Paxos 协议,保证数据库系统的高可用性。
系统中每个 OBServer 节点,同时具备计算和存储能力。整个系统没有单点瓶颈,可多点读写。在集群扩容和缩容时,数据以分区为基本单元进行迁移,自动实现负载均衡。


作为承担企业命脉的系统,数据库的高可用性对企业至关重要。OceanBase 基于 Paxos 协议的典型三副本部署方案,保证在单机、机房、城市出现故障时,数据不丢,服务不停。


降本增效是企业永恒的话题,那么如何通过技术手段,降低硬件成本是每一个企业都关注的问题。数据在写入 OceanBase 时,首先写入内存里面,当满足条件或者触发设定的阈值时,数据会被刷新到磁盘上。
因此,在 OceanBase 中全量数据由磁盘的基线数据和内存的增量数据组成,所以有时候 OceanBase 也被叫做准内存数据库。在数据压缩方面,OceanBase 使用的 LSM tree 数据结构,在每一层有对应的压缩算法,此类压缩称为通用压缩。
在通用压缩的基础上,OceanBase 自研了一套对数据库进行行列混存编码的压缩方法(encoding),会进一步对数据进行压缩。存储空间在通用压缩的基础上,进一步降低。在同等条件下,相比 Oracle,OceanBase 存储成本仅为前者 1/3 左右。


在传统数据库方案里,比如最常使用的 MySQl 数据库,一般将多个业务拆分到多个数据库上面。进行物理隔离。避免单个业务异常,影响到整个业务系统。随着业务的快速增长,运维人员需要运维和管理多套环境,成本较高。
在 OceanBase 里面,在资源充足的情况下,只需要新建租户即可接入新业务,业务之间做到资源隔离和数据独立。租户之间的资源隔离方案,保证一套环境可承载多套业务,运维人员工作量大大减少。


HTAP 是近几年不断被提及的一个话题,那么 HTAP 是不是一个伪命题?其实 HTAP 并不是凭空出现,现实是用户有真实的业务需求、实际的场景。
在之前的方案里,TP 业务产生的数据通过工具,同步到一些分析型产品里,进行数据分析、跑批等任务。这样涉及到多个系统拼接,以及多份数据流转和存储。
当前,大家共识的 HTAP 也是 OB 认为的 HTAP:即在做好 TP 的同时,兼顾和提升分析能力。在这个概念里,有两个核心的点,即一份数据和一套系统。数据在一个系统里处理即可,不需要再次进行同步和流转。
OceanBase 除了一套 SQL 引擎满足 TP 和 AP 需求,又可以根据用户的读写分离需求,通过多副本类型和弱一致性,灵活的实现各种读写分离策略,保证原有业务不做变动,改造成本为 0,即可满足用户需求。


作为分布式数据库,扩展性是最重要的一个能力,在 OceanBase 的一体化架构下,集群节点对等,每个节点都具备计算和存储能力,同时可在线进行扩容和缩容。每个节点都可以进行读写,理论上,集群的性能随着节点的扩容线性增长。


在前不久,OceanBase 发布 4.0 版本,推出单机分布式一体化架构。分布式架构更多应用在数据体量和规模大的业务场景,在这些场景下更能发挥分布式优势。
对于业务数据体量不够大,或者当前数据体量不大的企业用户,分布式方案对资源的要求过高,所以不太合适中小型业务体量的场景。与此同时,单机或者轻量的架构,更适合这类业务。单机一体化架构方案,在使用单机的同时,随着未来数据规模增长之后,又可以将单机变为分布式架构,充分契合业务发展需求。

02

生态对接以及典型应用场景



Flink 作为实时分析领域的代表性产品,被很多 OceanBasse 社区用户使用并在实时数仓业务场景使用。根据社区用户需求,我们对接和适配了 Flink 以及其周边生态工具,比如 ChunJun 等。
用户通过 Flink 以及相应生态工具,让数据可以在不同系统中自由流转。比如将上游的源端 MySQL 或者 OceanBase 数据,同步到下游 OceanBase、Kafka 等目标端。


在 OceanBase 社区里,很多用户使用 OceanBase+Flink 来解决生产遇到的实际问题,典型的应用场景包括:
场景一,数据实时写入与数据清洗,这也是使用最多的一个场景。数据在流式写入到下游时,不仅仅要保证写入的实时性,同样可能存在数据格式的清洗、转换等问题,因此通过 Flink 可以实现数据的实时写入到下游数据库比如 OceanBase 等,同时在写入过程中可以进行数据清洗等动作。


场景二:打宽数据流。多表 join 以及和维度表、事实表关联是最常见的一个场景。在上图中,业务数据源会不断的生成一个数据流,和 OceanBase 里面的维表做 join 操作,打宽数据流,生成一个大宽表。最终,将数据写入到一个结果集中,并存储在数据库系统里,比如 OceanBase 等。


场景三:构建物化视图。当业务数据源源不断的写入到 OceanBase 时,表中的数据不断变化。此时,进行一些查询操作,比如聚合查询时,单条新增的数据会触发查询计算。当查询涉及到的数据规模大且数据频繁更新时,会出现查询性能不理想的情况。
使用 Flink 之后,将数据流转换成动态表,并不断进行聚合操作。将产生的结果集存放在下游,比如 OceanBase 等。用户只需要查询该结果集,即可拿到需要的数据,不需要每次进行聚合操作,性能提升非常明显。


场景四:数据二次加工。随着分布式方案的普及,企业利用分布式数据库的扩展性将大数据场景里的原生数据存储在数据库里,比如各种指标数据。
当需要将原生数据的指标进行二次加工时,借助 Flink 的实时同步能力,在同步过程中对指标数据进行再次加工,并将加工之后的数据回写至 OceanBase,供业务使用。同时加工之后的数据,又可以作为源端再次进行加工,使用非常灵活。

03

OceanBase X Flink 在游戏行业实践



随着企业越来越重视数据价值,因此数据的新鲜度至关重要,企业需要能够实时观测到数据的变化。比如在快递流转中,企业需要实时掌握从用户下单到用户签收整个流程的快递运转情况,及时发现在每一个环节可能出现的问题以及快速解决,提升运营效率,提高用户体验。
在流量黄金时间段,企业决策者需要时刻关注热点广告位情况,及时调整广告投放,最大发挥广告位价值。


在大数据实时数仓领域,数仓为企业的决策制定过程,提供数据支持的战略,Lambda 架构是较早的数仓解决方案,使用流处理和批处理两种架构,进行数据处理。某游戏公司数仓架构如图所示:离线处理交给 Hive,实时分析由 Click House 完成。
Hive 是基于 Hadoop 的数据仓库工具,可对存储在 HDFS 的数据集进行数据整理、特殊查询和分析处理。Spark 是一个基于内存分析计算的开源的集群计算系统,目的是让数据分析更加快速,Hive+Spark 两者优势互补。而 Spark+Click House 则是通过 Spark 微批写入到 Click House 里面,发挥 Click House 的分析能力。


在游戏行业有以下三个典型场景:

  • 场景一:通过身份证号查询用户 ID。当用户注册时,系统需要通过身份证号信息,去各个平台查询是否已经有注册信息或者多个 ID。如果已有注册信息,则提醒用户登陆。
  • 场景二:通过用户 ID 查看广告渠道。当用户注册后,第三方渠道商需要得到是否正确归因的回调,比如从该渠道注册的用户,是不是被黑掉。
  • 场景三:实时广告效果查看。游戏主播在推广游戏时,需要实时看到游戏的点击,下载,安装,注册,创建角色,渠道等等这些指标信息的数据。对应到业务层面,涉及到 7 张表的关联操作。


在场景一和二里,使用 Click House 分析需要 66s;在场景三里,Hive 方案里完成查询需要二十多分钟。


结合业务测试和架构特点,当前面临的挑战主要有以下四个方面:

  • 实时性不够。在 Hive 架构下,数据从导入到可见需要 30 分钟,而 ClickHouse 也需要一分钟。
  • 一致性不足。相信用过 Lambda 架构的人都知道 ClickHouse 和 Hive 的数据经常“打架”,二者计算出来的数据不一致。需要在计算上做去重处理,但即使重复处理完,仍然有数据不一致的问题,导致 ClickHouse 的数据只能用于实时数据的查看,Hive 数据则会用于最终数据使用。
  • 可维护性复杂。在业务使用中,需要开发两套代码对接 Hive 和 ClickHouse 架构。
  • 查询性能不理想。在以上介绍的三个场景里,场景一和二在 ClickHouse 里面需要秒级甚至分钟级才能出结果,场景三需要十几分钟。



引入 OceanBase+Flink 方案之后,数据通过 Flink 实时写入到 OB,同时进行数据清洗,规整数据格式。在场景一和场景二中,在毫秒级就能返回结果。在场景三里面 1.5 秒就可以看到广告效果,性能提升非常明显。


新方案收益同样非常明显,相比之前的架构,性能从分钟级到秒级甚至于毫秒级,同时组件更少,架构上更轻量。一套方案即可满足一些业务的实时性要求,维护成本低,业务改造成本小。

04

未来展望



在 OceanBase 和 Flink 方案实际落地中,我们发现还可以对 Flink 做一些优化,主要有以下三个方面:

  • 在性能方面。当前 Flink 是单线程读取数据快照。未来,会将快照切成多个数据片同时并发读,提升性能,
  • 在一致性方面。原有设计中为了保证数据不丢,会先启动增量读再启动快照读。在进行 ETL 操作时,可能存在数据冗余问题。新设计中,可以对快照+增量数据读进行优化,实现一致性读取。
  • 在兼容性方面。当前 Flink 适配 OceanBase 的 connector 5.1 版本。随着 OceanBase 兼容 mysql 8.0,未来同样需要 Flink 适配 8.0 connector。


随着 OceanBase+Flink 被广泛的应用于生产环境,未来我们将与 Flink 以及周边生态工具不断进行适配并完善该方案,更好的服务企业用户。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
20天前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
44 3
|
2月前
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
2月前
|
存储 SQL 微服务
常用的分布式事务解决方案(三)
常用的分布式事务解决方案(三)
|
2月前
|
关系型数据库 MySQL
常见分布式事务的解决方案(一)
常见分布式事务的解决方案(一)
|
3月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
272 0
|
2天前
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
449 7
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
|
15天前
|
运维 搜索推荐 数据安全/隐私保护
阿里云实时计算Flink版测评报告
阿里云实时计算Flink版在用户行为分析与标签画像场景中表现出色,通过实时处理电商平台用户行为数据,生成用户兴趣偏好和标签,提升推荐系统效率。该服务具备高稳定性、低延迟、高吞吐量,支持按需计费,显著降低运维成本,提高开发效率。
36 1
|
18天前
|
运维 数据处理 Apache
数据实时计算产品对比测评报告:阿里云实时计算Flink版
数据实时计算产品对比测评报告:阿里云实时计算Flink版
|
1月前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
|
2月前
|
存储 运维 监控
阿里云实时计算Flink版的评测
阿里云实时计算Flink版的评测
57 15