vivo鄢楠:基于OceanBase 的降本增效实践

在3 月 20 日的2024 OceanBase 数据库城市行中,vivo的 体系与流程 IT 部 DBA 组总监鄢楠就“vivo 基于 OceanBase 的降本增效实践”进行了主题演讲。本文为该演讲的精彩回顾。


vivo 在1995年于中国东莞成立,作为一家全球领先的移动互联网智能终端公司,其年生产能力已接近2亿台,服务于全球超过5亿用户。vivo最初从电话机业务起家,如今业务范围已广泛拓展至智能手机、AI等多个领域。随着业务的蓬勃发展,vivo的IT技术架构也经历了巨大的变革。从最初的单体架构,到现今基于5G的容器化微服务模式,vivo在二十多年的时间里不断探索并成功应用了行业主流的IT技术。

1712027654

一、使用MySQL面临诸多挑战

vivo 的数据库迭代伴随着整个数据库行业的变迁。vivo 的现有业务系统有的采用了传统的商业数据库,有的采用了新型的开源数据库,最多时有几千个数据库,目前数据库技术栈包括 Oracle、MySQL、Redis、OceanBase 等近 10 种数据库。随着数据库越用越多,vivo 开始围绕数据库的运维和使用场景,探索工作效率的提升。

1712027681

当前,vivo 使用的主要数据库是 MySQL,通过 MySQL 的集群加一套 proxysql 分离的模式支撑业务运行。MySQL 的生态非常庞大,周边组件非常多,但是并没有统一的集成解决方案,每个问题都需要单独调研或者引入第三方组件。

而多个组件搭配的方案也存在明显的缺陷。这些组件来自不同的社区和厂商,给运维 DBA 带来了高昂的学习成本,同时也给业务带来隐藏的风险。vivo 现存的关系型数据库在日常运维中,常见的问题主要有以下几个方面:

第一,性能和可扩展性

在使用 MySQL 数据库时,如果进行复杂查询或大数据库的查询,会导致 MySQL 性能下降。在高并发场景下,写入操作会导致性能瓶颈。此外,不恰当的索引设计或管理也会影响查询效率。MySQL 的水平扩展能力有限,对于需要分布式数据库解决方案的场景不够理想。

第二,备份和恢复

MySQL 对增量备份的支持相对有限,大型数据库备份耗时较长,在线备份会影响数据库性能,在数据丢失或损坏情况下,恢复过程复杂且耗时。

第三,可用性和灾难恢复

现存关系型数据库在设置和维护高可用性架构(如主从复制、集群)时,复杂且成本较高。在主数据库发生故障时,自动故障切换到备份数据库时,存在延迟或不一致性问题。为了确保数据安全性和业务连续性,制定和测试灾难恢复计划也需要额外的资源和时间。为了提供灾难恢复能力,在多个数据中心间同步数据会面临网络延迟和数据一致性挑战。

近些年,降本增效成为企业数字化转型过程中的重要议题。企业不再满足传统的数据架构,期望通过高可用、高性能的数据库,提升运营效率,适应市场需求。大型企业在核心系统升级或全面升级时,主要关注以下几点:

○  数据模型优化:随着业务发展,数据模型可能需要调整以适应新的需求,这可能导致数据库重构和迁移的挑战。

○  数据库分片:为了提高性能和可扩展性,数据库分片(sharding)的实施可能增加架构的复杂性。

○  多租户支持:在多租户应用中管理数据隔离和资源分配可能需要额外的设计和管理工作。

○  数据迁移:将现有数据迁移到新的数据模型或数据库架构可能涉及复杂的转换和同步过程。

此过程中,相比降本,vivo 更看中增效。在使用 MySQL 时:

在效率层面,偏分析类的复杂 SQL 在 MySQL 执行耗时较长。当 MySQL 单表数据量大时,采用分库/分表方案,会给开发设计、SQL 编写、维护带来复杂度。通过第三方工具配置高可用切换方式,也会增加运维复杂度。

在成本层面,MySQL 一主多从的架构下,实例数量多,存储成本高,从库资源不能高效利用。假如要做读写分离,需要借助第三方组件,增加额外的硬件资源成本。

基于 MySQL 的使用痛点,vivo 开始数据库选型之路。在对行业的头部产品进行了性能测试、兼容性测试、功能点测试等对比后,最终 vivo 选择了 OceanBase。

二、OceanBase 上线15个生产业务

vivo 选型落地 OceanBase 的过程中,经历了内部分享——OceanBase 专家培训——测试环境——IDC 生产上线——公有云生产上线——规模化陆续上线几个阶段。

vivo 在产品选型之后,紧接着在内部做了一次围绕 OceanBase 的特性、收益等方面的技术分享,提升了运维开发人员对 OceanBase 的接受度。在此期间,OceanBase 的专家也对 vivo 的运维开发人员做了相关的产品技术宣导。vivo 的业务范围广,因此选择了一个契合 OceanBase 功能特性的业务优先试点。运行良好之后,从 IDC 到云上,持续拓展集群规模。

vivo 的业务遍布全球,2024 年年初,vivo 在阿里云海外版上线了一个 OB Cloud 集群。目前 vivo 已有 4 个测试集群、1 个阿里云集群、5 个生产集群、15 个生产业务模块上线 OceanBase,包括日志系统,并陆续审计平台、技术中台、用户中心等多个业务系统。

接下来,vivo 的规划是先保证试点业务的平稳运行,将其运行效果转化为其他业务对 OceanBase 的信心,持续地迭代升级。当业务在 MySQL 上有运行痛点,并且业务有意愿做调整,且调整成本不高的情况下,我们会做 OceanBase 的替换。现阶段,MySQL 和 OceanBase 在 vivo 会同时存在。

三、使用 OceanBase 相当于增强版“MySQL”

OceanBase 是一款自主研发的分布式数据库,具备数据强一致、高扩展、高可用、高性价比、稳定可靠等特征,因其高度兼容 Oracle/MySQL,也大大降低了数据库的迁移成本和运维开发的难度。其周边生态系统也比较完善,社区很活跃,对相关问题能够及时响应,团队的支持力度也很大。总体使用下来,相当于“增强版 MySQL”。

第一,兼容性。vivo 在引入新产品时,需要保证不会因此降低原有的效率。OceanBase 的兼容性极大保证了业务效率。

○  语法与 MySQL 兼容,对开发友好,代码改动小

○  云上与云下同一个技术栈,OB Cloud 支持多云部署  

○  兼容 MySQL Binlog 模式,对下游消费 Binlog 友好;MySQL 生态的 Binlog 统计、flashback 工具(例如 my2sql/mysqlbinlog)等可兼容 

○  可将监控指标采集到 Prometheus,兼容现有的监控、告警体系 

第二,稳定性。稳定性是 vivo 引入新产品时第二考虑因素,只有系统稳定运行,才能为效率提供保证。vivo 选择了一些业务上线 OceanBase 进行试点,稳定运行大半年后, vivo 对 OceanBase 在快速扩缩容、副本调整、读写分离方面的优势深有体会。

○  平稳支持业务流量  

○  快速弹性扩容

○  多场景原生支持 Online DDL,降低变更对业务的影响

第三,服务。在试点 OceanBase 的过程中,OceanBase 团队 7*24 小时响应,提供了专家技术支持、多次专项培训、内部方案设计等技术服务和专业建议,遇到特殊问题时,研发人员也能快速介入,快速解决问题。

第四,增效。OceanBase 灵活的表分区方式,消除了分库分表的复杂性。开发人员不需要再对分库分表进行特殊的代码设计。且 OceanBase 可支撑部分 AP 类查询,在遇到这类问题时,不需要再接入下一个大数据平台完成。同时,跨集群的主备租户模式,可以高效创建灾备或只读节点,从而保证数据库的一致性,提高资源利用率。

第五,降本。OceanBase 的多租户管理模式和资源隔离,规格和副本可以灵活调整,解决了 vivo 之前的主从副本资源无法有效利用问题。并且 OceanBase 的数据压缩比非常高,可进一步降低存储成本。高可用架构+ OBproxy,无需搭配第三方工具进行切换和读写分离。

第六,工具生态。OceanBase 的工具生态非常丰富,从数据库的全生命周期,几乎覆盖了 90% 的运维场景。因为有些历史业务要兼容,所以 vivo 需要考虑和以往数据库的兼容性,假如上线新的业务系统,选择 OceanBase 可以做到开箱即用,几乎无需在平台建设方面投入人力。vivo 在使用 OceanBase 的过程中,感受最深的工具有两个,分别是 OCP 和 OMS:

○  OCP 管理平台提供了便利的部署、升级、监控、备份恢复等运维手段;

○  OMS 迁移平台提供了便利的数据迁移方法,支持全量、增量、反向同步等多种模式。

1712028023

四、对 OceanBase 的三点期望

目前,vivo 使用的是 OceanBase 4.2.0 版本,期间也遇到了一些补丁修复等问题。而在 4.2.1 等更高版本中,这些问题基本都已经规避。基于 OceanBase 的使用体验,以下方面期待在后面的版本中能得到优化。

1712028052

○  希望深化功能细节

vivo 之前使用的商业数据库,功能或许没有 OceanBase 完善,但在细节方面详尽周全。希望 OceanBase 能将现有功能持续优化和打磨,完善用户的常规使用场景的细节体验,给新客户更好的信心。

○  优化日志和报错系统

OceanBase 的日志和报错形式,与常规数据库有一些差别,而在实际运维过程中,对这些日志的分析和排查,需要一定的学习成本。希望 OceanBase 能够明确和统一的日志级别和格式,便于用户迅速识别问题详尽的错误报告和排错指南,提供直接的解决步骤,减少用户的困惑和不确定性。

○  扩展 OMS 支持范围

OMS 工具现在只支持目标,希望能够将 OMS 打造成为一个更通用的工具,同时支持源和目标,降低产品使用门槛,吸引更多的社区用户接触 OceanBase 生态,助推 OceanBase 扩大用户数量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7基础操作01_安装CentOS 7操作系统

1、实验环境 因为 Windows图形界面占用系统资源较高,所以公司准备将面向互联网的网站,数据库等重要应用基于Linux平台部署,并计划于近期将服务器安装开源免费的 CentOS 系统。进行前期准备工作时,需要公司的系统管理员尽快掌握 CentOS 系统的安装过程 2、需要描述 …

CSS 空间转换 动画

目录 1. 空间转换1.1 视距 - perspective1.2 空间转换 - 旋转1.3 立体呈现 - transform-style1.4 空间转换 - 缩放 2. 动画 - animation2.1 动画的基本用法2.1 animation 复合属性2.2 animation 拆分属性2.3 多组动画 正文开始 1. 空间转换 空间:是从坐标轴角度定义…

在AutoDL上部署Yi-34B大模型

在AutoDL上部署Yi-34B大模型 Yi介绍 Yi 系列模型是 01.AI 从零训练的下一代开源大语言模型。Yi 系列模型是一个双语语言模型,在 3T 多语言语料库上训练而成,是全球最强大的大语言模型之一。Yi 系列模型在语言认知、常识推理、阅读理解等方面表现优异。 …

【JavaEE】多线程(1)

🎆🎆🎆个人主页🎆🎆🎆 🎆🎆🎆JavaEE专栏🎆🎆🎆 🎆🎆🎆计算机是怎么工作的🎆&#x1f3…

第七在线惊艳亮相第11届奥莱峰会,AI驱动零售供应链升级

2024年5月22-24日,第11届奥莱领秀峰会暨2024奥莱产业经济论坛在南京盛大举行。论坛上,智能商品计划管理系统服务商第七在线凭借富有前瞻性的AI技术,引领零售供应链迈入全新升级阶段,赢得了与会嘉宾的广泛关注与赞誉。 峰会由中国奥…

【一百】【算法分析与设计】N皇后问题常规解法+位运算解法

N皇后问题 链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 给出一个nnn\times nnn的国际象棋棋盘,你需要在棋盘中摆放nnn个皇后,使得任意两个皇后之间不能互相攻击。具体来说,不能存在两个皇后位于同…

BUUCTF Crypto RSA详解《1~32》刷题记录

文章目录 一、Crypto1、 一眼就解密2、MD53、Url编码4、看我回旋踢5、摩丝6、password7、变异凯撒8、Quoted-printable9、篱笆墙的影子10、Rabbit11、RSA12、丢失的MD513、Alice与Bob14、大帝的密码武器15、rsarsa16、Windows系统密码17、信息化时代的步伐18、凯撒?…

springboot基本使用十一(自定义全局异常处理器)

例如:我们都知道在java中被除数不能为0,为0就会报by zero错误 RestController public class TestController {GetMapping("/ex")public Integer ex(){int a 10 / 0;return a;}} 打印结果: 如何将这个异常进行处理? 创…

java——网络原理初识

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 目录 1.网络通信概念初识1.1 IP地址1.2端口号1.3协议1.3.1协议分层协议分层带来的好处主要有两个方面 1.3.2 TCP/IP五层 (或四层模型)1.3.3 协议的层和层之间是怎么配合工作的 1.网络通信概念初识…

RLC防孤岛保护装置如何工作的?

什么是RLC防孤岛保护装置? 孤岛保护装置是电力系统中一道强大的守护利器,它以敏锐的感知和迅速的反应,守护着电网的平稳运行。当电网遭遇故障或意外脱离主网时,孤岛保护装置如同一位机警的守门人,立刻做出决断&#xf…

算法(七)插入排序

文章目录 插入排序简介代码实现 插入排序简介 插入排序(insertion sort)是从第一个元素开始,该元素就认为已经被排序过了。然后取出下一个元素,从该元素的前一个索引下标开始往前扫描,比该值大的元素往后移动。直到遇到比它小的元…

MySQL 索引的使用

本篇主要介绍MySQL中索引使用的相关内容。 目录 一、最左前缀法则 二、索引失效的场景 索引列运算 字符串无引号 模糊查询 or连接条件 数据分布 一、最左前缀法则 当我们在使用多个字段构成的索引时(联合索引),需要考虑最左前缀法则…

【VTKExamples::Utilities】第十七期 ZBuffer

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例ZBuffer,并解析接口vtkWindowToImageFilter,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ…

【面试八股总结】MySQL事务:事务特性、事务并行、事务的隔离级别

参考资料:小林coding 一、事务的特性ACID 原子性(Atomicity) 一个事务是一个不可分割的工作单位,事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。原子性是通过 undo …

Arm发布Cortex X925、A725、A520,Armv9.2架构

随着半导体行业的不断发展,Arm 通过突破技术界限,为终端用户提供尖端解决方案,在核心和 IP 架构创新方面处于领先地位,尤其是在移动领域。2024 年,Arm 的年度战略进步重点是增强去年的 Armv9.2 架构,并带来…

Windows系统安装openvino(2024.1.0)

一、openvino下载: 下载地址:下载英特尔发行版 OpenVINO 工具套件 (intel.cn) 下载完之后将压缩包解压,然后重命名文件夹为openvino_2024.1.0。 二、环境配置 以python环境为例:(建议使用moniconda虚拟环境来安装&am…

鸿蒙ArkTS声明式开发:跨平台支持列表【背景设置】 通用属性

背景设置 设置组件的背景样式。 说明: 开发前请熟悉鸿蒙开发指导文档: gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版…

【免费Web系列】JavaWeb实战项目案例五

这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r 新增员工 前面我们已经实现了员工信息的条件分页查询。 那今天我们要实现的是新增员工的功能实现,页面原型如下: ​ 首先我们先完成"新增员工"的功能开发&#xff0…

ODBC访问达梦数据库Ubuntu18.04 x86-x64(亲测有效)

ODBC访问达梦数据库Ubuntu18.04 x86-x64 第1步:安装unixodbc驱动,使用下面命令。第2步:拷贝已经安装好的达梦数据库驱动程序第3步:配置ODBC必要的参数文件,如下图第4步:设置环境变量第5步:连接测试 说明&am…

Github单个文件或者单个文件夹下载插件

有时候我们在github上备份了一些资料,比如pdf,ppt,md之类的,需要用到的时候只要某个文件即可,又不要把整个仓库的zip包下载下来,毕竟有时文件太多,下载慢,我们也不需要所有资料,那么就可以使用到…