刘强:作业帮给OceanBase提了九条意见

news2024/9/25 11:21:59

3 月 25 日,第一届 OceanBase 开发者大会在北京举行, 作业帮数据库架构师刘强为大家带来了《作业帮基于 OceanBase 的 HTAP 实践》的分享 ,为大家介绍了 OceanBase 上线作业帮半年来的体验与心得。

Image

以下内容由大会演讲整理而成:

在作业帮刚上线 OceanBase 4.0 时,我分享过作业帮的业务架构痛点(移步《作业帮 :探索多云架构下的数据库集群解决方案》可阅读)。目前,作业帮是多云架构(阿里云、百度云、腾讯云),并同时使用 MySQL、Redis-Cluster、MongoDB、Elastisearch、TiDB 、OceanBase 这几款数据库。出于高可用和降本需求,我们决定将更多的 MySQL 业务场景升级为 OceanBase,本文将和大家分享具体原因,以及 OceanBase 4.0 与 MySQL 5.7 的对比数据。

高可用双活架构方案升级需求

由于作业帮业务的多样性和复杂性,我们对于分布式数据库的使用需求主要基于以下几个方面。

Image

第一,在海量数据的情况下,希望减少分库分表的复杂度,并解决单机存储瓶颈。

第二,对 I/O 密集型的 SQL 及 CPU 密集型的 SQL 来说,我们希望能够提高响应速度,减少它在 MySQL 中对线上业务的影响。

第三,每个业务内部都需要业务人员频繁查询、录取线上数据,并有相应的报表服务以供上级 Leader 查看,而且大数据部门也会有报表需求接入线上数据,这对于线上 MySQL 来说难以支撑,在数据归档及汇总的情况下,也缺乏良好方案。

第四,由于 MySQL 的特性限制,我们需要基于一个外部的高可用组件来实现 MySQL 的高可用架构,在多云环境下,网络环境相对复杂,这对高可用的稳定性提出了更高要求。如果部分业务的请求链路长或复杂,跨云访问会使业务相应耗时增加,影响用户体验。

因此,我们需要探索良好的双活架构方案,初步方案是基于 MySQL ,并引入 DTS 来实现双活架构。这种架构的复杂性及引入过程中 DTS 的异常或中断,对于数据的一致性有很大的挑战。同时,在使用公有云的情况下,也希望能够最大程度降低硬件的使用成本。

OceanBase 4.0 对比 MySQL 5.7

出于高可用和降本需求,我们决定将更多 MySQL 的业务场景升级为 OceanBase,并对 OceanBase 和 MySQL 5.7 进行了多方面的对比。

▋ 性能对比

我们使用 32C64GB 的硬件规格分别对 OceanBase 和 MySQL 进行性能、CPU 使用率、磁盘空间占用的测试。

首先,从下图可见,OceanBase 性能明显超过 MySQL。

Image

OceanBase 和 MySQL 的性能对比

其次从下图得知,在相同的并发环境下,OceanBase 的 CPU 使用率比 MySQL 低至少一倍以上。

Image

OceanBase 和 MySQL 的CPU使用率对比

另外,由于 OceanBase 数据压缩及编码的技术相较于 MySQL,能够节约 2/3 以上的磁盘空间,因此,综合上述三方面的对比结果,我们认为 OceanBase 能为作业帮的降本增效提供极大帮助。

在性能方面,我们还测试了 DDL 的执行速度。对于耗时较长的 DDL,MySQL 会有补充延时问题,需要我们引用额外的审核工具来控制它的延迟,而 OceanBase 不存在延时问题。对于执行速度,MySQL 和 OceanBase 相差不大,这让我们更加期待 OceanBase 4.1 的数据旁路导入功能,可以将 DDL 的执行速度大幅提升。不过,我们也发现了一些语法兼容性的问题,例如,OceanBase 对主键的操作语法不支持多个 DDL 合并执行,只能各自单独执行。

▋ 架构对比

除了降本增效的需求,高可用也是我们在探索双活架构中最看重的一方面。相较于 MySQL,OceanBase 的高可用是有延伸的,不需要额外的高可用组件,这有利于解决数据不一致的问题。再加上 OceanBase 的日志具备多副本特性,能够支持在多机房或多城市灵活部署。OceanBase 还帮助作业帮实现了一些单元化的需求,我们可以将业务单元内的 Leader 数据调度在某一个机房内,实现业务访问的流量闭环,减少跨域读写。

▋ 字符集对比

最后,我们测试了字符集的支持程度。作业帮成立十年,我们使用 MySQL 的场景和字符集种类都比较多。OceanBase 4.0 当前支持图 3 中显示的几种字符集,在 4.1 版本中增加了对拉丁字符的支持。后续我们也希望 OceanBase 能够扩展字符集及校验集的支持种类。

Image

以上是作业帮对 OceanBase 和 MySQL 的主要对比数据。在将更多业务场景切换至 OceanBase 的过程中,我们发现,在高可用双活架构方案之外, OceanBase 4.0 的 HTAP 和资源隔离能力也为我们带来许多意外之喜。

低成本与低延时更好地降本增效

OceanBase 是一个具备 HTAP 能力的原生分布式数据库,如何理解 HTAP?引用 OceanBase CTO 的一句话: HTAP 就是在高性能 OLTP 数据库的基础上扩展 OLAP 的能力,能很好支持实时分析。

在作业帮的业务场景中,我们感受到 HTAP 的两大显著优势:低成本和低延时。

低成本:我们希望一套系统能同时支持 OLTP 场景和 OLAP 场景,相比两套系统拥有更高的性价比。

低延时:省去了繁琐费时的 ETL 过程,降低延时,更好支持实时分析。

我们知道,在一套系统同时实现 OLTP 和 OLAP 的能力,其中一项挑战是资源隔离,使业务之间互不影响。这便是 OceanBase 带给我们惊喜的地方。

对于核心业务来说,我们希望能够使用物理资源管理,比如行存副本服务 OLTP,列存副本服务 OLAP,这两种业务是不共享物理资源的,可以做到绝对的隔离。OceanBase 可以增加额外的只读副本,再通过配置 OBProxy 的 proxy_idc_name 实现读写分离。

下图为 OceanBase 的物理资源隔离方案,基于只读副本,再增加逻辑机房的情况下,在 OBProxy 中配置逻辑机房的位置。 所有 OLAP 的只读流量都会录入只读副本中,避免与 OLTP 副争抢资源。

Image

OceanBase 的物理资源隔离方案

对于成本敏感的逻辑资源隔离,OceanBase 在同一租户内就可能实现 OLAP 和 OLTP 的物理资源共享,进而实现资源隔离。

对于逻辑隔离来说,首先 OceanBase 定义了一个大查询,默认将执行时间超过 5 秒的请求判定为大查询,当大查询和短查询同时争抢 CPU 时,大查询会被降低优先级,待 CPU 资源充足时再被挂起,我们可以设置 Large_query_worker_percentage 在同一租户内,大查询最多可以占用 30% 的用户线程数。

在这种情况下,我们可以有效隔离大查询对 OLTP 业务的影响,优先保证了 OLTP 业务的执行。

我们使用了一些线上业务数据和 SQL 来对比 MySQL 和 OceanBase。在作业帮的业务场景中,一个大业务部门的报表需要多级 Leader 甚至上百人频繁查看,因此,即使是 OLAP 类型的业务,QPS 也可以达到几十甚至上百。

我们使用了 60 个并发去压测较复杂的 SQL,通过下图可以看出, OceanBase 比 MySQL 最起码快了一倍以上。OceanBase 的 CPU 使用率也基本控制在 25% 以下。

Image

OceanBase 与 MySQL执行SQL耗时

在 60 个并发执行 OLAP 业务的同时,我们也用 256 个并发(如下图),去运行 Sysbench 任务,在 OLAP SQL 扫描量较大的情况下,我们可以看到它的耗时出现了一些抖动。

Image

并发量256 运行 Sysbench 任务

作业帮想对OceanBase说

以上就是作业帮对 OceanBase 4.0 的探索过程。目前,我们已经使用 OceanBase 半年了,总结出了一些心得及建议,供大家参考。

首先,对于 OceanBase 的 OCP 管理平台有如下几点建议:

  • 建议增加 DDL 任务列表显示。需要在每一个租户下,可以看到有多少任务正在执行。

  • 建议增加 SQL 审核的功能。如果有业务正在从 MySQL 迁移,可以尽快保证业务上线,减少 DBA 工作,聚焦于对业务的落地。

  • 在使用过程中我们发现,每个租户下磁盘的使用量、数据库的大小及表的大小,这一部分数据的监控是缺失的,需要完善。

  • 在集群中测试时,需要实时监控性能数据,比如 QPS 响应时间、CPU 的使用率等,建议在现有能力上再缩短延迟。

其次,对 OceanBase 集群的一些问题,我们也给出反馈,希望得以提升:

  • DDL 无法实时查看任务的进度百分比,希望后续可以增加该功能。

  • 现在集群升级时需要确保每个租户的 leader 都聚集在单个 Zone 下,这样对于每个集群有上百个租户来说,操作会比较繁琐,希望可以优化。

  • 对于大家在使用过程中需要注意大小写敏感的参数设置,一旦创建后业务上线不合理则无法通过 SQL 语句进行修改,希望优化。

  • 建议注意 redo log 磁盘跟内存大小的配比,防止出现当磁盘空间还有富裕的时候,创建 redo log ,显示磁盘空间不够的问题。

最后,还有一些关于 OMS 数据迁移平台的小建议, 目前存在的问题有三个,第一,在数据迁移过程中不支持新增 DB 的同步,对于数据归档或汇总的需求不友好;第二,OpenAPI 开放的太少,不利于我们内部平台的改造;第三,ghc 的临时表忽略写法过于繁琐,需要每一个 DB 都写一个配。

由于 OMS 数据迁移是测试中常用的功能,我们希望后续能有统一的配置,可以将 ghc 临时表统一过滤掉。

今天分享到这里就结束了,如果大家有什么想交流的,欢迎评论区留言与我探讨。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提示工程玩转 ChatGPT

Prompt engineering is the skill of the future. 目录: 1. 简介 (Introduction) 2. 提示指南 (Prompt Guidelines) 2.1 指令要清晰明确 2.2 给模型时间思考 3. 迭代提示 (Iterative Prompt) 3.1 迭代过程 3.2 案例展示 4. 文本概括 (Text Summarization) 4.1 单文本…

五个有用的工具帮助您提高代码质量

前言 对于开发人员而言,代码质量一直是一个非常重要的话题。高质量的代码不仅可以提高应用程序的性能,还可以减少代码错误和维护成本。然而,如何确保代码质量呢?下面介绍五个有用的工具,可以帮助您提高代码质量。 So…

SLAM论文速递:SLAM—— NICER-SLAM: RGB SLAM的神经隐式场景编码—5.04(1)

论文信息 题目: NICER-SLAM:Neural Implicit Scene Encoding for RGB SLAM NICER-SLAM: RGB SLAM的神经隐式场景编码论文地址: https://arxiv.org/pdf/2302.03594.pdf发表期刊: Computer Vision and Pattern Recognition (cs.CV)标签 xxxx…

机器学习:协同过滤推荐算法

目录标题 题目:使用协同过滤(基于用户)构建简单的电影推荐系统1.1.1 实验目的1.1.2 实验内容及步骤1.1.3 程序运行过程、方法和运行结果1.1.4 实验小结 题目:使用协同过滤(基于用户)构建简单的电影推荐系统…

详解Mybatis之参数传递问题

编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 目录 一. Mybatis中参数传递问题1.1 单个普通参数传递1.2 多个普通参数传递1.3 命名参数1.4 POJO(java Bean…

MySQL知识学习02(MySQL索引详解)

1、索引介绍? 索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。 索引的作用就相当于书的目录。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字&…

鸿蒙Hi3861学习四-Huawei LiteOS介绍

一、什么是LitesOS Huawei LiteOS是华为针对物联网领域推出的轻量级物联网操作系统,是华为物联网战略的重要组成部分,具备轻量级、低功耗、互联互通、组件丰富、快速开发等关键能力。基于物联网领域业务特征打造领域性技术栈,为开发者提供“一…

MEET开发者 | 从无代码小白到大神,95后精神小伙的职场初体验

「无代码开发者故事」第一期的嘉宾是一位初入职场的95后,他保留了白羊座直率、热情的孩子天性,即便长期驻场也能“苦中作乐”,发挥自己旅游和摄影的爱好。初入职场的他在项目中主要承担需求分析的角色,2021年初受公司委派学习和评…

VR全景展示--探索无限可能

随着科技的发展,虚拟现实(Virtual Reality,简称VR)技术逐渐成为人们关注的焦点。VR技术使得人们可以在虚拟现实中体验到与现实世界不同的感官体验。在VR全景展示中,观众可以通过虚拟现实技术,沉浸式地感受到…

指针函数和函数指针

本文目录 • 前言 • 一、返回指针的函数 二、指向函数的指针回到顶部 一、返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的。 返回指针的函数的一般形式为:类型名 * 函数名(参数列表) 比如下面这个函数&#…

用手机号码归属地 API 开发的应用推荐

引言 手机号码归属地 API是一种提供手机号码归属地信息的接口,通过该接口,可以获取手机号码所属的省份、城市、运营商等信息。它可以帮助企业更好地了解客户,为个性化推荐和精准广告投放提供数据支持。作为一种数据服务,手机号码…

打造高可用、高效的Nginx反向代理应用 - 实战篇

前言 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人 &#xff0c…

快排代码原理实现

参考博客:快速排序算法详解(原理、实现和时间复杂度) 排序算法的思想非常简单,在待排序的数列中,我们首先要找一个数字作为基准数(这只是个专用名词)。为了方便,我们一般选择第 1 个…

Java每日一练(20230504)

目录 1. 位1的个数 🌟 2. 移除元素 🌟 3. 验证二叉搜索树 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 位1的个数 编写一个…

推荐一个免费GIF动图下载的网站

在开发过程中难免遇到耗时操作,耗时操作往往导致线程阻塞,通常这种情况可以采用开线程的方式解决,即将耗时操作放入新线程中,同时在UI线程中加一个GIF动图即可。可作为后端开发工程师来讲单独设计一个GIF图实在是意义不大(懒+不会)。 好在现在发现了这个GIF免费下载的网站…

存储器(二)

目录 一、RAM 1.RAM特点 2.静态RAM 2.1静态RAM保存原理 2.2静态RAM基本单元电路的构成 2.3静态RAM读写操作 3.动态RAM 3.1动态RAM保存原理 3.2动态RAM基本单元电路的构成 3.3动态RAM对单元电路的读写操作 3.4动态RAM的刷新 4.静态RAM与动态RAM的比较 二、ROM 1.ROM…

WinForm对话框详解:信息框、文件对话框、功能对话框

文章目录 信息框文件对话框功能对话框 对话框是开发中经常用到的控件,甚至在上古的MFC编程中,默认就是把一个对话框编辑成窗口。winForm提供了多种不同的对话框,包括信息框、文件对话框、功能对话框等,下面逐个演示这些消息框。 …

欧姆龙PLC仿真环境搭建及通信测试

前言 欧姆龙PLC是工控领域市场率较高的品牌之一,有低端CP/CH系列,中端CJ系列,高端NX/NJ系列。对于上位机开发来说,主要的协议有Hostlink协议、FinsTCP/UDP协议、EtherNetIP协议,今天主要跟大家分享一下,我…

《互联网安全产品漏洞管理规定》

《网络产品安全漏洞管理规定》由工业和信息化部、国家互联网信息办公室、公安部联合印发,自2021年9月1日起施行。 该《规定》明确,任何组织或者个人不得利用网络产品安全漏洞从事危害网络安全的活动,不得非法收集、出售、发布网络产品安全漏洞…

图片png怎么转成pdf格式?

图片png怎么转成pdf格式?相信很多上班的小伙伴们都会遇到类似的问题,需要将公司的图片宣传册等资料发送给客户,但是公司宣传册本身是一页一页的图片文件,如果这样发送了就显得很不专业或者说比较杂乱!所以,…