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

摘要:本文整理自 OceanBase 架构师周跃跃,在 Flink Forward Asia 2022 实时湖仓专场的分享。本篇内容主要分为四个部分:

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

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

  3. OceanBase X Flink 在游戏行业实践

  4. 未来展望

点击查看原文视频 & 演讲PPT

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

1

作为一款历经 12 年的纯自研国产分布式数据库,从产品立项到核心交易业务上线,OceanBase 从 1.0 时代坚定的走向分布式架构,产品在支付宝内部开始落地实践并支持核心业务。

随着产品能力进一步增强,OceanBase 2.0 时代从 KV 存储系统演变成具备分布式事务,以及多副本强一致性能力的原生分布式数据库,开始服务于外部企业客户,包括互联网、金融、证券等等行业。

在 3.0 时代,随着 HTAP 能力的完善,混合引擎以及混合部署方案吸引更多的海外企业客户使用。随着 4.0 版本的发布,OceanBase 提出单机分布式一体化架构,助力企业小型化和公有云服务。

2

OceanBase 的一体化架构总结起来有三个关键字:Paxos 协议、无共享架构、分区级高可用。

默认情况下,数据被存储多份,即多副本概念。副本之间通过 Paxos 协议保证数据强一致性。通过多副本+Paxos 协议,保证数据库系统的高可用性。

系统中每个 OBServer 节点,同时具备计算和存储能力。整个系统没有单点瓶颈,可多点读写。在集群扩容和缩容时,数据以分区为基本单元进行迁移,自动实现负载均衡。

3

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

4

降本增效是企业永恒的话题,那么如何通过技术手段,降低硬件成本是每一个企业都关注的问题。数据在写入 OceanBase 时,首先写入内存里面,当满足条件或者触发设定的阈值时,数据会被刷新到磁盘上。

因此,在 OceanBase 中全量数据由磁盘的基线数据和内存的增量数据组成,所以有时候 OceanBase 也被叫做准内存数据库。在数据压缩方面,OceanBase 使用的 LSM tree 数据结构,在每一层有对应的压缩算法,此类压缩称为通用压缩。

在通用压缩的基础上,OceanBase 自研了一套对数据库进行行列混存编码的压缩方法(encoding),会进一步对数据进行压缩。存储空间在通用压缩的基础上,进一步降低。在同等条件下,相比 Oracle,OceanBase 存储成本仅为前者 1/3 左右。

5

在传统数据库方案里,比如最常使用的 MySQl 数据库,一般将多个业务拆分到多个数据库上面。进行物理隔离。避免单个业务异常,影响到整个业务系统。随着业务的快速增长,运维人员需要运维和管理多套环境,成本较高。

在 OceanBase 里面,在资源充足的情况下,只需要新建租户即可接入新业务,业务之间做到资源隔离和数据独立。租户之间的资源隔离方案,保证一套环境可承载多套业务,运维人员工作量大大减少。

6

HTAP 是近几年不断被提及的一个话题,那么 HTAP 是不是一个伪命题?其实 HTAP 并不是凭空出现,现实是用户有真实的业务需求、实际的场景。

在之前的方案里,TP 业务产生的数据通过工具,同步到一些分析型产品里,进行数据分析、跑批等任务。这样涉及到多个系统拼接,以及多份数据流转和存储。

当前,大家共识的 HTAP 也是 OB 认为的 HTAP:即在做好 TP 的同时,兼顾和提升分析能力。在这个概念里,有两个核心的点,即一份数据和一套系统。数据在一个系统里处理即可,不需要再次进行同步和流转。

OceanBase 除了一套 SQL 引擎满足 TP 和 AP 需求,又可以根据用户的读写分离需求,通过多副本类型和弱一致性,灵活的实现各种读写分离策略,保证原有业务不做变动,改造成本为 0,即可满足用户需求。

7

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

8

在前不久,OceanBase 发布 4.0 版本,推出单机分布式一体化架构。分布式架构更多应用在数据体量和规模大的业务场景,在这些场景下更能发挥分布式优势。

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

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

9

Flink 作为实时分析领域的代表性产品,被很多 OceanBasse 社区用户使用并在实时数仓业务场景使用。根据社区用户需求,我们对接和适配了 Flink 以及其周边生态工具,比如 ChunJun 等。

用户通过 Flink 以及相应生态工具,让数据可以在不同系统中自由流转。比如将上游的源端 MySQL 或者 OceanBase 数据,同步到下游 OceanBase、Kafka 等目标端。

10

在 OceanBase 社区里,很多用户使用 OceanBase+Flink 来解决生产遇到的实际问题,典型的应用场景包括:

场景一,数据实时写入与数据清洗,这也是使用最多的一个场景。数据在流式写入到下游时,不仅仅要保证写入的实时性,同样可能存在数据格式的清洗、转换等问题,因此通过 Flink 可以实现数据的实时写入到下游数据库比如 OceanBase 等,同时在写入过程中可以进行数据清洗等动作。

11

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

12

场景三:构建物化视图。当业务数据源源不断的写入到 OceanBase 时,表中的数据不断变化。此时,进行一些查询操作,比如聚合查询时,单条新增的数据会触发查询计算。当查询涉及到的数据规模大且数据频繁更新时,会出现查询性能不理想的情况。

使用 Flink 之后,将数据流转换成动态表,并不断进行聚合操作。将产生的结果集存放在下游,比如 OceanBase 等。用户只需要查询该结果集,即可拿到需要的数据,不需要每次进行聚合操作,性能提升非常明显。

13

场景四:数据二次加工。随着分布式方案的普及,企业利用分布式数据库的扩展性将大数据场景里的原生数据存储在数据库里,比如各种指标数据。

当需要将原生数据的指标进行二次加工时,借助 Flink 的实时同步能力,在同步过程中对指标数据进行再次加工,并将加工之后的数据回写至 OceanBase,供业务使用。同时加工之后的数据,又可以作为源端再次进行加工,使用非常灵活。

三、OceanBase X Flink 在游戏行业实践

14

随着企业越来越重视数据价值,因此数据的新鲜度至关重要,企业需要能够实时观测到数据的变化。比如在快递流转中,企业需要实时掌握从用户下单到用户签收整个流程的快递运转情况,及时发现在每一个环节可能出现的问题以及快速解决,提升运营效率,提高用户体验。

在流量黄金时间段,企业决策者需要时刻关注热点广告位情况,及时调整广告投放,最大发挥广告位价值。

15

在大数据实时数仓领域,数仓为企业的决策制定过程,提供数据支持的战略,Lambda 架构是较早的数仓解决方案,使用流处理和批处理两种架构,进行数据处理。某游戏公司数仓架构如图所示:离线处理交给 Hive,实时分析由 Click House 完成。

Hive 是基于 Hadoop 的数据仓库工具,可对存储在 HDFS 的数据集进行数据整理、特殊查询和分析处理。Spark 是一个基于内存分析计算的开源的集群计算系统,目的是让数据分析更加快速,Hive+Spark 两者优势互补。而 Spark+Click House 则是通过 Spark 微批写入到 Click House 里面,发挥 Click House 的分析能力。

16

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

  • 场景一:通过身份证号查询用户 ID。当用户注册时,系统需要通过身份证号信息,去各个平台查询是否已经有注册信息或者多个 ID。如果已有注册信息,则提醒用户登陆。

  • 场景二:通过用户 ID 查看广告渠道。当用户注册后,第三方渠道商需要得到是否正确归因的回调,比如从该渠道注册的用户,是不是被黑掉。

  • 场景三:实时广告效果查看。游戏主播在推广游戏时,需要实时看到游戏的点击,下载,安装,注册,创建角色,渠道等等这些指标信息的数据。对应到业务层面,涉及到 7 张表的关联操作。

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

17

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

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

18

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

19

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

四、未来展望

20

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

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

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

点击查看原文视频 & 演讲PPT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/86568.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习深度学习——seq2seq实现机器翻译(数据集处理)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——从编码器-解码器架构到seq2seq(机器翻译) 📚订阅专栏:机…

(el-Form)操作(不使用 ts):Element-plus 中 Form 表单组件校验规则等的使用

Ⅰ、Element-plus 提供的 Form 表单组件与想要目标情况的对比: 1、Element-plus 提供 Form 表单组件情况: 其一、Element-plus 自提供的 Form 代码情况为(示例的代码): // Element-plus 自提供的代码: // 此时是使用了 ts 语言环…

机器学习深度学习——从编码器-解码器架构到seq2seq(机器翻译)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——注意力提示、注意力池化(核回归) 📚订阅专栏:机器学习&a…

使用 prometheus client SDK 暴露指标

目录 1. 使用 prometheus client SDK 暴露指标1.1. How Go exposition works1.2. Adding your own metrics1.3. Other Go client features 2. Golang Application monitoring using Prometheus2.1. Metrics and Labels2.2. Metrics Types2.2.1. Counters:2.2.2. Gauges:2.2.3. …

写一个函数返回参数二进制中 1 的个数(c语言三种实现方法)

(本文旨在自己做题时的总结,我会给出不同的解法,后面如果碰到新的题目还会加入其中,等于是我自己的题库。 1.写一个函数返回参数二进制中 1 的个数。 比如: 15 0000 1111 4 个 1 方法一: #include…

基于 eclipse-temurin 镜像部署spring boot 应用

基于 eclipse-temurin 镜像部署spring boot 应用 使用场景示例项目 使用场景 在CI流程中,一般都会集成 打包,构建镜像,分发,启动容器之类的流程; 这里提供一个示例,进攻参考 示例项目 项目结构如下 run…

Django基础

1.Django基础 路由系统视图模板静态文件和媒体文件中间件ORM(时间) 2.路由系统 本质上:URL和函数的对应关系。 2.1 传统的路由 from django.contrib import admin from django.urls import path from apps.web import viewsurlpatterns …

体渲染原理及WebGL实现【Volume Rendering】

体渲染(Volume Rendering)是NeRF神经场辐射AI模型的基础,与传统渲染使用三角形来显示 3D 图形不同,体渲染使用其他方法,例如体积光线投射 (Volume Ray Casting)。本文介绍体渲染的原理并提供Three.js实现代码&#xff…

【Nginx】Nginx网站服务

国外主流还是使用apache;国内现在主流是nginx(并发能力强,相对稳定) nginx:高新能、轻量级的web服务软件 特点: 1.稳定性高(没apache稳); 2.系统资源消耗比较低&#xf…

Windows电脑快速搭建FTP服务教程

FTP介绍 FTP(File Transfer Protocol)是一种用于在计算机网络上进行文件传输的标准协议。它提供了一种可靠的、基于客户端-服务器模型的方式来将文件从一个主机传输到另一个主机。在本文中,我将详细介绍FTP的工作原理、数据传输模式以及常见…

从Spring源码看Spring如何解决循环引用的问题

Spring如何解决循环引用的问题 关于循环引用,首先说一个结论: Spring能够解决的情况为:两个对象都是单实例、且通过set方法进行注入。 两个对象都是单实例,通过构造方法进行注入,Spring不能进行循环引用问题&#x…

分布式问题

1. 分布式系统CAP原理 CAP原理:指在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partitontolerance(分区容忍性),三者不可得兼。 一致性(C…

DVWA暴力破解高级模式宏爆破

先将安全等级调至高级,点击submit提交 浏览器开启bp代理 kali开启bp 工具,开启Proxy 点击Brute Force这个选项卡 bp拦截到请求的数据包 宏设置 如果是有的bp版本比较旧,在旧版本的上面菜单栏有一个Project options点击去选择Session&#xff…

智能优化算法:白鲨优化算法-附代码

智能优化算法:白鲨优化算法 文章目录 智能优化算法:白鲨优化算法1.白鲨优化算法1.1 初始化1.2 速度更新1.3位置更新1.4鱼群行为 2.实验结果3.参考文献4.Matlab5.python 摘要:WSO 算法是 Braik 等于 2022 年提出一种基于白鲨深海觅食策略的新型…

算法与数据结构(二十二)动态规划解题套路框架

动态规划解题套路框架 此文只在个人总结 labuladong 动态规划框架,仅限于学习交流,版权归原作者所有; 动态规划问题(Dynamic Programming)应该是很多读者头疼的,不过这类问题也是最具有技巧性&#xff0c…

计算机网络实验2:网络嗅探

文章目录 1. 主要教学内容2. Wireshark介绍3. Wireshark下载4. 使用Wireshark捕获包4.1 选择网卡4.2 停止抓包4.3 保存数据 5. Wireshark的过滤规则6. Wireshark实例 1. 主要教学内容 实验内容:安装、学习使用网络包分析工具Wireshark。所需学时:1。重难…

基于概率神经网络的变压器故障诊断

1.案例背景 1.1 PNN概述 概率神经网络(probabilistic neural networks. PNN)是 D.F.Specht博士在1989年首先提出的,是一种基于Bayes分类规则与Parzen窗的概率密度函数估计方法发展而来的并行算法。它是一类结构简单、训练简洁,应用广泛的人工神经网络。在实际应用中,尤其是在解…

纯鸿蒙!华为HarmonyOS NEXT不再兼容安卓应用,无法安装Apk文件

8月7日消息,近日,华为举行2023年华为开发者大会(HDC.Together)上,除了发布HarmonyOS 4、全新升级的鸿蒙开发套件外,华为还带来了HarmonyOS NEXT开发者预览版。 据了解,HarmonyOS NEXT开发者预览…

豪越HYDO智能运维助力智慧医院信息化建设

随着国家政策的推动与支持,医疗行业信息化应用不断普及,大数据、AI、医疗物联网等技术的应用,快速推动了电子病历、智慧服务、智慧管理的智慧医院建设和医院信息标准化建设,通过不断探索创新“智慧医院”服务模式,实现…

FLatten Transformer 简化版Transformer

今天在找论文时,看到一篇比较新奇的论文,在这里跟大家分享一下,希望可以给一些人提供一些思路。虽然现在Transformer 比较火,在分割上面也应用的比较多,但是我一直不喜欢用,其中一个原因是结构太复杂了&…