快手:数据库升级实践,实现PB级数据的高效管理|OceanBase案例
本文作者:胡玉龙,快手技术专家
快手在较初期采用了OceanBase 3.1版本成功替换了多个核心业务、数百套的MySQL集群。至2023年,快手的数据量已突破800TB大关,其中最大集群的数据量更是达到了数百TB级别。为此,快手将数据库系统升级至OceanBase 4.x版本,从而显著提升了业务的稳定性和运行效率。
本文将分享快手在OceanBase版本升级后的实际应用情况,期待与大家共同探讨和交流版本升级过程中的宝贵经验。
快手应用OceanBase 4.x版本现状
当前,快手的数据量已经增长到了PB级,从原来近200节点增长到了近300个节点。线上共部署9套OceanBase集群,其中数据量较大(20T以上)的集群已经升级4.2或4.3版本,还有一半数据量较小的集群(10T以下)仍在3.x版本。
从下图来看,4.x版本的数据似乎没有增长。但如果在3.x版本不升级的情况下,近一年随着业务的发展,数据量会增长1.5TB左右,数据节点也会提高一倍。这就体现了版本升级的妙处,OceanBase 4.x 版本相较于 3.x 版本能够更极致地压缩数据,节省存储空间,从而节约存储成本和机器成本。

版本升级经验交流
俗话说没有一款产品是万金油,在使用OceanBase 3.x版本时,业务人员希望将不完美的功能进行优化。例如非分区表,当业务量小时,单表很小也无需分区,随着业务量的增长,单分区表可能会把单机CPU打满,或者磁盘占用较满导致单副本变得庞大。此时OceanBase老版本不支持从单分区变为多分区,而4.x版本能够做到。同时,业务人员希望数据库的查询速度可以更快。OceanBase 4.3版本的行列混存特性,可以极大提升复杂查询的性能。
除解决业务需求外,我们升级OceanBase版本的重要因素就是跟随版本迭代,积累运维经验。
- 版本在快速迭代中,需要保持业务版本不落后太多。当我们决定升级时,距离OceanBase 4.2.1 LTS 版本推出已经过去 7 个多月,内核足够稳定,周边生态工具也在不断适配,我们可以放心升级。
- 从3.x版本升级到4.1版本再升级到4.2/4.3版本,我们都是提前在非核心业务场景验证新版本的稳定性和功能,为后续在核心场景使用积累经验。
下面以交易核对场景和支付场景介绍快手在升级OceanBase版本的过程和效果。
核心业务场景1:交易核对
电商业务作为快手最重要的一部分,其交易核对场景是我们的核心场景,要求数据库快、稳、抗压。
首先,目前交易核对场景的主库读写仍在MySQL中,为保证全局数据的一致性,避免MySQL落库失败导致的数据遗漏问题,我们在底层使用OceanBase进行全局核对。根据业务特性,要求我们在MySQL的binlog写入数据后,立即在OceanBase的全局查询中出现。也就是说业务要求返回延迟为毫秒级,否则会影响核对结果。
其次,业务对数据库有着强稳定性要求,例如,在大型直播时,流量迅速上涨百倍,如果数据库抖动,会导致大量的核对失败。因此,在交易核对场景下,数据库不仅需要再日常流量峰值时保持长期稳定,还需要在流量高峰时没有抖动。
再次,当数据量超百TB,单集群数据的单副本达到20TB左右时,随着单表数据的增大,对系统资源消耗会越来越多,进而影响数据库的响应时间。因此,读写请求峰值达到 QPS 百万级要求数据库足够平稳,响应时间不受影响。
下图是OCP监控的OceanBase在交易核对场景的表现,可以看到曲线比较平稳,几乎没有抖动,完全满足业务需求。

核心业务场景2:支付业务
在快手电商场景时常有查询数据的需求,比如商家、客服查订单收益,再比如支付网关聚合查询。目前业务数据量在 OceanBase 单集群达到百 TB 级别,同时单表数据在 10 TB 以上,聚合查询时还需要频繁加索引,如果单表DDL时间太久就会影响业务。
我们的支付业务特点是大量写入(10w/tps),伴随少量复杂查询。此前我们使用分布式数据库某DB来支撑支付业务,它使用range 分区,每个表自动分裂,在写数据量较大时,无法利用所有机器的性能,导致在流量较大的情况下性能较差,如果遇到流量高峰,就需要业务限流才能保证底层查询的稳定性。
在引入OceanBase 3.1版本后,使用 hash 分区,写入性能大幅提升;DDL 速度更快,至少能保证业务流量高峰时不再限流。升级到OceanBase 4.3版本后,成本收益进一步提升;复杂查询速度更快,基本在 10ms 内完成。我们支付业务中还有一些AP查询需求,在使用OceanBase 3.1版本时,只有行存,业务需要忍耐一定的查询延迟,OceanBase 4.3版本的行列混存特性使查询更实时,写入延迟在1ms 以内。
下图是支付业务在升级到OceanBase 4.x版本后的线上表现。

版本升级总结
总的来说,快手在升级OceanBase版本后成本变得更低,查询变得更快。以支付网关为例,在 3.1.x 版本,该集群规模为 65 节点,是线上环境规模最大的集群,升级前数据量 450TB。升级后机器规模缩减为 45 台,数据量压缩至 330TB。机器成本降低了31%,数据量比之前压缩了约27%。
在一些 TP + AP 场景下,最初我们使用OceanBase 3.1版本替换 MySQL,满足业务的HTAP 需求。升级为OceanBase 4.3版本后,更加稳定,性能更高,分析耗时更快。另外,在OceanBase 3.x 版本里面,我们需要将OceanBase数据同步到下游对接大数据生态,但受限于 Binlog 不支持所以操作起来不太方便。在OceanBase 4.2 版本, Binlog 兼容 了MySQL Binlog ,这个问题也得到了解决。
此外,我们也感受到了OceanBase生态工具侧的迭代升级。例如OCP、ODC等在2022年之前容易出现升级、扩容方面的问题,现在我们用OCP集群12台机器运维管理9套集群都没有出现扩缩容或监控告警相关的问题了。当OCP诊断到问题时能够自动解决,无需人工干预。不过有一个问题,对于业务来说,有时候排查问题就需要观察 p99、p999 监控信息,而当前 OCP 的监控看不到 p99、p999 监控线。从官方了解到,预计 11 月支持该功能。
整体来说我们使用 OceanBase 很顺畅,也积累了非常多的使用经验,有机会给大家分享更多 OceanBase使用姿势。
OceanBase 云数据库现已支持免费试用,现在申请,体验分布式数据库带来全新体验吧 ~
相关文章:
快手:数据库升级实践,实现PB级数据的高效管理|OceanBase案例
本文作者:胡玉龙,快手技术专家 快手在较初期采用了OceanBase 3.1版本成功替换了多个核心业务、数百套的MySQL集群。至2023年,快手的数据量已突破800TB大关,其中最大集群的数据量更是达到了数百TB级别。为此,快手将数据…...
基于Node.js+Express+MySQL+VUE实现的计算机毕业设计共享单车管理网站
单车信息选择骑行 骑行状态留言公告/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序 目录 功能图 界面展示 开发目标 开发背景意义 开发意义 开发目的 项目概述 技术选型与理由 系统设计与功能实现 项目可执行性分析 系统架构需求 性能需…...
人工智能辅助的神经康复
人工智能辅助的神经康复是通过应用人工智能(AI)技术来改善神经系统损伤患者的康复过程。此领域结合了深度学习、数据分析和机器人技术,旨在提升康复效果、个性化治疗方案和监测进展。以下是该领域的关键组成部分和应用: 1. 康复评…...
KKT实际运用 -MATLAB
FMINCON函数可以很方便的求出:fun:目标函数,即需要最小化的函数,输入参数为向量x,输出为标量f(x)。x0:初始点,即求解过程的起始点,可以是标量、向量或矩阵。A和b:线性不等…...
php在线相册
1、将静态页面效果完成 解压到www里 整个数据 暂时是错误的 建立连接密码为root 运行sql文件 右键根目录刷新 刷新后成功 开始 测试 如果需要上传照片,点击创建相册,选择上传文件,选择文件后退出 导入alumbenew2 2.提交表单方式 3.利用ph…...
Xcode手动安装SDK模拟器
1.下载SDK模拟器&Xcode SDK和Xcode官方下载地址 2.下载好后使用命令将SDK导入到Xcode中如下命令 注:我是在/Applications 目录下执行的命令,模拟其地址直接拖拽过来 sudo xcode-select -s Xcode.app xcodebuild -runFirstLaunch xcodebuild -imp…...
Docker安装consul + go使用consul + consul知识
1. 什么是服务注册和发现 假如这个产品已经在线上运行,有一天运营想搞一场促销活动,那么我们相对应的【用户服务】可能就要新开启三个微服务实例来支撑这场促销活动。而与此同时,作为苦逼程序员的你就只有手动去 API gateway 中添加新增的这…...
JWT 漏洞 - 学习手册
0x01:JWT 前导知识 0x0101:JWT 详解 0x02:JWT 漏洞介绍 0x0201:JWT 漏洞介绍 0x03:JWT 挖掘思路 JWT 漏洞挖掘思路 - JWT Payload 敏感信息泄露 备注:通过泄露的 JWT Payload 获取用户的敏感信息&#…...
HTML【知识改变命运】03font 字体标签
题目:在页面上显示"北京"两个字,字体为微软雅黑,颜色为红色,大小为40xp; font标签可以修饰字体的大小,颜色,和字体 属性:color颜色,face字体,size大…...
集师专属知识付费小程序搭建 心理咨询小程序搭建
一、产品简介 集师SaaS知识付费软件,为知识创业者或商家提供一站式内容交付解决方案,助力商家搭建集品牌传播、商业变现和用户运营于一体的线上知识服务系统,覆盖全渠道经营场景,占据每个流量入口,使流量变现快速高效…...
https://www.aitoolpath.com/ 一个工具数据库,目前储存了有2000+各种工具。每日更新
AI 工具爆炸?别怕,这个网站帮你整理好了! 哇塞,兄弟们!AI 时代真的来了!现在各种 AI 工具跟雨后春笋似的,噌噌噌地往外冒。AI 写作、AI 绘画、AI 代码生成……简直是要逆天啊! 可是…...
科技的成就(六十三)
583、八小时工作制 最先提出这种理念的人竟然也是一名企业家,而且还是一名空想社会主义者。这名叫做罗伯特欧文的英国人,也凭借先进的人本管理理念成为了现代人事管理之父。 584、SDN(软件定义网络) "SDN(软件定…...
浅谈抗量子密码学:保护未来的数字安全
一、引言 随着量子计算机技术的发展,传统的加密算法面临前所未有的挑战。量子计算机利用量子位(qubits)的特性,能够在理论上比经典计算机更快地破解现有的加密系统。为了应对这一威胁,研究者们正在开发所谓的“抗量子…...
10款物联网开源嵌入式操作系统对比分析
摘要 本文对目前市场上广受欢迎的10款物联网开源嵌入式操作系统进行了深度对比分析,包括Huawei LiteOS、RT-Thread、AliOS Things等。通过探讨这些操作系统的实时性、可扩展性、特点、运行要求、开发社区活跃度和应用领域等方面,帮助开发者更好地理解它…...
Elasticsearch深度攻略:核心概念与实践应用
目录 一、Elasticsearch简介1、Elasticsearch是什么2、Elasticsearch的应用场景3、Elasticsearch的核心概念 二、Elasticsearch安装与配置1、安装Elasticsearch(1)系统要求(2)下载Elasticsearch(3)解压安装…...
TLS详解
什么是TLS TLS(Transport Layer Security)传输层安全性协议 ,它的前身是SSL(Secure Sockets Layer)安全套接层,是一个被应用程序用来在网络中安全的通讯协议, 防止电子邮件、网页、消息以及其他协议被篡改或是窃听。是用来替代SSL的…...
正则表达式中的特殊字符
正则表达式中的特殊字符 字符类预定义字符类量词锚点分组和捕获选择、分支和条件反义和否定转义字符示例 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 在正则表达式中,有许…...
EP42 公告详情页
文件路径: E:/homework/uniappv3tswallpaper/api/apis.js 先添加相应的api。 import {request } from "/utils/requset.js"export function apiGetBanner() {return request({url: "/homeBanner"}) } export function apiGetDayRandom() {ret…...
游戏找不到xinput1_3.dll的原因及解决方法
1. xinput1_3.dll 基本信息 1.1 文件名 xinput1_3.dll 是一个动态链接库(DLL)文件,它属于 Microsoft DirectX for Windows 的一部分。这个文件主要负责处理与 Xbox 360 控制器和其他兼容 XInput 标准的游戏手柄相关的输入信号,确…...
防反接电路设计
方案1 串联二极管, 优点:成本低、设计简单 缺点:损耗大,P ui 方案2 串联自恢复保险丝 当电源反接的时候,D4导通,F2超过跳闸带你留,就会断开,从而保护了后级电路 方案3 H桥电路…...
终极指南:在Windows上使用BiliBili-UWP第三方客户端获得流畅的B站观影体验
终极指南:在Windows上使用BiliBili-UWP第三方客户端获得流畅的B站观影体验 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端,当然,是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP 你是否厌倦了网页版B站的…...
从NLP基础到LLM实战:手把手构建大模型全栈能力
1. 从NLP到LLM:为什么你需要一个坚实的“地基” 最近几年,大语言模型(LLM)的火爆程度有目共睹,ChatGPT、Claude、文心一言这些名字几乎成了日常谈资。很多开发者,尤其是刚入行的朋友,可能一上来…...
STM32CubeMX外部中断实战:从按键消抖到LED状态切换
1. STM32CubeMX外部中断基础配置 第一次用STM32CubeMX配置外部中断时,我盯着那一堆选项有点懵。后来发现其实只要抓住几个关键点,整个过程就像搭积木一样简单。这里以最常见的按键控制LED为例,带你一步步实现这个功能。 首先打开CubeMX新建…...
航空摇篮长岛:从早期飞行到现代航空工业的技术演进与创新集群
1. 项目概述:从长岛的天空回望航空摇篮如果你对航空史感兴趣,或者像我一样,是个对机械、工程和人类如何突破物理极限着迷的工程师,那么“长岛”这个名字绝对绕不开。它不仅仅是纽约市旁边的一个地理名词,在航空史上&am…...
MetaGPT多智能体协作框架:从原理到实战的AI自动化软件开发指南
1. 项目概述:当AI学会“开会”,一个智能体协作框架的诞生 如果你关注AI领域,最近可能被一个叫“MetaGPT”的项目刷屏了。它不是一个单一的模型,而是一个雄心勃勃的框架,其核心目标直指一个激动人心的未来:…...
Lua RTOS在ESP32上的应用:从架构解析到物联网项目实战
1. 项目概述:当Lua遇上RTOS,为ESP32注入灵魂 如果你玩过ESP32,大概率用过Arduino框架或者乐鑫官方的ESP-IDF。前者简单易上手,但深度定制和实时性有限;后者功能强大专业,但C语言开发门槛不低,调…...
刘教链|百万美刀的比特币:VanEck的预言与微策略的进化困境
BTC在8万刀附近磨了一周。就在市场踟蹰不前的时候,VanEck抛出一个大胆的预测[1]。一、VanEck的百万预言5月9日,VanEck的投资主管Matthew Sigel说了一番话。他认为比特币会在下一届美国总统任期结束前达到100万美刀[1],算下来大概是2031年前后…...
Kubernetes多租户架构设计与实践
Kubernetes多租户架构设计与实践 一、引言 多租户是指在同一个Kubernetes集群中为多个用户或团队提供隔离的资源和环境。本文将深入探讨Kubernetes多租户架构的核心概念、实现方法和最佳实践。 二、多租户架构设计 2.1 多租户参考架构 ┌────────────────…...
从零构建高频无线传输系统:调幅技术实战解析
1. 调幅无线传输系统入门指南 第一次接触调幅无线传输系统时,我也被各种专业术语搞得一头雾水。简单来说,调幅(AM)就是通过改变载波信号的幅度来传递信息的技术。想象一下快递员送包裹:载波就像快递车,而我们要发送的信息就是包裹…...
思考的快与慢:模型的“即时回答”与“深思熟虑”
上一篇文章我们学会了如何“使唤”模型:同步、异步、批量、流式,一通操作下来,你已经是调接口的好手了。但很快你可能会发现一个有意思的现象——同样是回答问题,有时候模型快到几乎零秒响应,有时候却要停顿好几秒甚至…...
