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

news2024/11/21 2:27:48

在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 扩大用户数量。

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

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

相关文章

【HarmonyOS - ArkTS - 状态管理】

概述 本文主要是从页面和应用级两个方面介绍了ArkTS中的状态管理的一些概念以及如何使用。可能本文比较粗略,细节化请前往官网(【状态管理】)学习,若有理解错误的地方,欢迎评论指正。 装饰器总览 由于下面会频繁提及到装饰器,所…

将三个字符串通过strcat连接起来并打印输出

将三个字符串通过strcat连接起来并打印输出 #include <stdio.h> #include <string.h> int main () { char a[10]"I", b[10]" am",c[10]" happy"; strcat(a,b); strcat(a,c); printf("%s",a); printf("\n"); re…

win10键盘按乱了,如何恢复?

今天键盘被宝宝给按乱了&#xff0c;好不容易给重新调整回来&#xff0c;记录备忘&#xff1a; 1、win10的asdf和方向键互换了&#xff1a; 使用Fnw键来回切换&#xff0c;OK&#xff01; 2、键盘的win键失效&#xff0c;例如&#xff1a;按winD无法显示桌面。此时&#xf…

Django企业招聘后台管理系统开发实战四

前言 首先我们看一下产品的需求背景&#xff0c;这个产品为了解决招聘面试的过程中&#xff0c;线下面试管理效率低&#xff0c;面试过程和结果不方便跟踪的痛点 招聘管理的系统几乎是每一家中小公司都需要的产品 我们以校园招聘的面试为例子来做 MVP 产品迭代 首先我们来看一下…

【计算机毕设】基于Spring Boot的课程作业管理系统 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 课程作业管理系统旨在为教师和学生提供一个便捷的平台&#xff0c;用于发布、提交和评定课程作业。本系统旨在提高作业管理的效率&#xff0c;促进教…

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

这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r 多表操作&员工列表查询 1. 多表关系 关于单表的操作(单表的设计、单表的增删改查)我们就已经学习完了。接下来我们就要来学习多表的操作&#xff0c;首先来学习多表的设计。 项目开发中&#xff0…

如何使用 Connector API 将数据提取到 Elasticsearch Serverless 中

作者&#xff1a;来自 Elastic Jedr Blaszyk Elasticsearch 支持一系列摄取方法。 其中之一是 Elastic Connectors&#xff0c;它将 SQL 数据库或 SharePoint Online 等外部数据源与 Elasticsearch 索引同步。 连接器对于在现有数据之上构建强大的搜索体验特别有用。 例如&…

618 购物指南:简单点 618 捡便宜,用这个利器就行

直接干货&#xff0c;看效果&#xff0c;安装脚本直接显示商家额外优惠券&#xff1a; 1、安装好脚本后&#xff0c;打开京东、淘宝(天猫) 商品详情页面&#xff0c;脚本会自动获取优惠券进行展示。 2、如果当前商品 处于 30 天最低价&#xff0c;脚本将自动进行标记 提醒&…

基于Python的校园预约打印网站的实现

基于Python的校园预约打印网站的实现 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 注册 新用户首先要进行注册信息填写&#xff0c;填写完成以后进行登录即可使用此网站 打印社 分别有…

对称二叉树(oj题)

一、题目链接https://leetcode-cn.com/problems/symmetric-tree/ 二、题目思路 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称的思路: 1.将该树的左子树和右子树&#xff0c;当做两棵树&#xff0c;调用 判断两棵树是否对称相等的函数 2.判断两颗树是否对称相…

代码随想录算法训练营第36期DAY44

DAY44 闫氏DP 2 01背包问题 用滚动数组来优化空间&#xff0c;从后向前&#xff08;大到小&#xff09;遍历j #include<iostream>using namespace std;const int N1010;int n,m;int v[N],w[N];int f[N][N];//所有只考虑前i个物品&#xff0c;**且总体积不超过j**的选法…

MxA Protein Human ELISA--BioVendor

MxA(1)MX166276-kDaGTPase 蛋白在抗多种病毒的细胞内发挥抗病毒活性重要作用&#xff0c;包括流感、副流感、麻疹、柯萨奇、乙型肝炎病毒和后藤病毒。病毒在其生命周期的早期&#xff0c;即进入宿主细胞后不久和基因组扩增前&#xff0c;被蛋白抑制。小鼠蛋白人蛋白的小鼠类似…

华为 CANN

华为 CANN 1 介绍1.1 概述1.2 CANN 是华为昇腾计算产业的重要一环1.3 昇腾系列处理器1.4 昇腾 AI 产业1.5 从 AI 算法到产品化落地流程1.6 多样性计算架构1.7 人工智能各层级图示1.8 人工智能技术发展历史 2 CANN vs CUDA支持平台优化方向编程接口生态系统与应用性能与功能 3 C…

算法(十二)分治算法

文章目录 算法概念算法例子字符串中小写转大写求X^n问题 算法概念 分治算法&#xff08;divide and conquer&#xff09;算法的核心思想其实就是"分而治之"&#xff0c;将原问题划分成n个规模较小&#xff0c;并且结构与原问题相似的子问题&#xff0c;递归地解决这…

ADB安装教程

1 adb简介 Android 调试桥 (adb) 是一种功能多样的命令行工具&#xff0c;可让您与设备进行通信。 adb命令可用于执行各种设备操作&#xff0c;例如安装和调试应用。 adb 提供对 Unix shell&#xff08;可用来在设备上运行各种命令&#xff09;的访问权限。它是一种客户端-服务…

国外创意二维码营销案例:巴西宠物食品品牌户外活动“救救宠物爪子吧”

2024年5月份&#xff0c;巴西宠物食品品牌Purina Brasil 与广告公司Publicis Brasil合作&#xff0c;推出了一次特别的户外营销活动——Salve as Patinhas(Save the Paws)&#xff08;救救宠物爪子吧&#xff09;&#xff0c;非常有意思&#xff01; 随着全球气候变暖&#xf…

大坝安全监测自动化技术的规范化设计准则

大坝安全监测自动化技术的规范化设计准则 一、施工阶段自动化系统设计要点 在施工阶段&#xff0c;大坝安全监测自动化系统的设计应当涵盖以下几个核心内容&#xff1a; 监测仪器的布局规划及详细的施工图纸设计。 配套土建项目以及防雷设施的施工设计规划。 明确施工过程中的技…

职场中,那些35岁以上的测试猿到底去哪了?

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

电商物流查询解决方案助力提升消费者体验

截至2023年12月&#xff0c;中国网络购物用户规模达9.15亿人&#xff0c;占网民整体的83.8%。这一庞大的数字不仅展现了电子商务的蓬勃发展&#xff0c;也标志着数字零售企业营销战略的转变——从以产品和流量为核心&#xff0c;到用户为王的新阶段。因此&#xff0c;提升消费者…

MySQL--MHA高可用及读写分离

一、什么是高可用 1.企业级高可用标准&#xff1a;全年无故障时间 全年无故障时间全年故障时间具体时间99.9%0.1%525.6 minkeeplive双主 &#xff08;切换需要人为干预&#xff09;99.99%0.01%52.56 minMHA &#xff08;半自动化&#xff09;99.999%0.001%5.256 minPXC、MGR、…