快手:数据库升级实践,实现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 版本能够更极致地压缩数据,节省存储空间,从而节约存储成本和机器成本。

1727340483

版本升级经验交流

俗话说没有一款产品是万金油,在使用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在交易核对场景的表现,可以看到曲线比较平稳,几乎没有抖动,完全满足业务需求。

1727340501

核心业务场景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版本后的线上表现。

1727340540

版本升级总结

总的来说,快手在升级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 云数据库现已支持免费试用,现在申请,体验分布式数据库带来全新体验吧 ~

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

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

相关文章

关于视频监控介入的部分内容,使用的是海康H5web播放的模式

这是原发直接能在系统中使用。里面的样式自己修改&#xff0c;主要是在引入时出现黑色的框就是引入成功&#xff0c;需要在public文件夹中引入h5player.min.js文件就可以。 <template><div class"Shiping"><el-container><el-header><di…

【数据分享】2001-2023年我国省市县镇四级的逐月平均气温数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月平均气温栅格数据&#xff0c;该数据来源于国家青藏高原科学数据中心。为方便大家使用&#xff0c;我们还基于上述平均气温栅格数据将数据处理为Shp和Excel格式的省市县三级逐月平均气温数据&#xff08;可查看之前的文章获悉详情&#…

ubuntu 18.04 cuda 11.01 gpgpu-sim 裸机编译

1&#xff0c;环境 ubuntu 18.04 x86_64 cuda 11.01 gpgpu-sim master commit 90ec3399763d7c8512cfe7dc193473086c38ca38 2&#xff0c;预备环境 一个比较新的 ubuntu 18.04&#xff0c;为了迎合 cuda 11.01 的版本需求 安装如下软件&#xff1a; sudo apt-get instal…

【Linux】几种常见配置文件介绍

配置文件目录 linux 系统中有很多配置文件目录 /etc/systemd/system /lib/systemd/system /usr/lib/systemd/system 【结果就是这个目录配置文件是源头】 这三者有什么样的关系呢&#xff1f; 以下是网络上找的资料汇总&#xff0c;并加了一些操作验证。方便后期使用 介…

VMware中Ubuntu系统Docker正常运行但网络不通(已解决)

问题描述&#xff1a;在VMware中的Ubuntu系统下部署了Docker&#xff0c;当在docker容器中运行Eureka微服务时&#xff0c;发现Eureka启动正常&#xff0c;但无法通过网页访问该容器中Eureka。 解决办法如下&#xff1a; 1、创建桥接网络&#xff1a;test-net sudo docker n…

ARM 架构、cpu

一、ARM的架构 ARM是一种基于精简指令集&#xff08;RISC&#xff09;的处理器架构. 1、ARM芯片特点 ARM芯片的主要特点有以下几点&#xff1a; 精简指令集&#xff1a;ARM芯片使用精简指令集&#xff0c;即每条指令只完成一项简单的操作&#xff0c;从而提高指令的执行效率…

进程的创建、多任务及退出

一、创建进程 1、并发与并行 为了提高计算机执行任务的效率&#xff0c;一般采用的解决方案就是能够让多个任务同时进行&#xff0c;可以使用 并发 与 并行两种方式 并行 : 在 cpu 多核的支持下&#xff0c;实现物理上的同时执行 并发 : 在有限的 cpu 核芯的情况下 , …

60 序列到序列学习(seq2seq)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录一、理论知识比喻机器翻译Seq2seq编码器-解码器细节训练衡量生成序列的好坏的BLEU(值越大越好)总结 二、代码编码器解码器损失函数训练预测预测序列的评估小结练习 一、理论知识 比喻 seq2seq就像RNN的转录工作一样&#xff0c;非常形象的比…

Percona Monitoring and Management

Percona Monitoring and Management (PMM)是一款开源的专用于管理和监控MySQL、MongoDB、PostgreSQL

netty之NettyClient半包粘包处理、编码解码处理、收发数据方式

前言 Netty开发中&#xff0c;客户端与服务端需要保持同样的&#xff1b;半包粘包处理&#xff0c;编码解码处理、收发数据方式&#xff0c;这样才能保证数据通信正常。在前面NettyServer的章节中我们也同样处理了&#xff1b;半包粘包、编码解码等&#xff0c;为此在本章节我们…

C++和OpenGL实现3D游戏编程【连载12】——游戏中音效的使用

1、游戏中音效的使用 前面我们实现了图片纹理的显示功能,是不是感觉到非常的简单。那么今天我们就继续说下游戏声音的实现。音效也是游戏的灵魂,只有搭配了美妙动听的音效以后,游戏才能令人耳目一新,与玩家产生良好的效果。 音效文件最常用的可分为两种,分别为.wav和.mp3…

SQL Server中关于个性化需求批量删除表的做法

在实际开发中&#xff0c;我们常常会遇到需要批量删除表&#xff0c;且具有共同特征的情况&#xff0c;例如&#xff1a;找出表名中数字结尾的表之类的&#xff0c;本文我将以3中类似情况为例&#xff0c;来示范并解说此类需求如何完成&#xff1a; 第一种&#xff0c;批量删除…

Mysql 学习——项目实战

MySQL 学习——项目实战 项目出处 博主&#xff1a;Asmywishi Linux-Ubuntu启动Mysql sudo mysqlData preparation Create Database and Table Create database : create database mysql_example1;Start database : use mysql_example1;Create Student table : # 学生表…

使用VBA快速将文本转换为Word表格

Word提供了一个强调的文本转表格的功能&#xff0c;结合VBA可以实现文本快速转换表格。 示例文档如下所示。 现在需要将上述文档内容转换为如下格式的表格&#xff0c;表格内容的起始标志为。 示例代码如下。 Sub SearchTab()Application.DefaultTableSeparator "*&quo…

828华为云征文 | 基于华为云Flexus云服务器X搭建部署——AI知识库问答系统(使用1panel面板安装)

&#x1f680;对于企业来讲为什么需要华为云Flexus X来搭建自己的知识库问答系统&#xff1f;&#xff1f;&#xff1f; 【重塑知识边界&#xff0c;华为云Flexus云服务器X引领开源问答新纪元&#xff01;】 &#x1f31f; 解锁知识新动力&#xff0c;华为云Flexus云服务器X携…

【算法】DFS 系列之 穷举/暴搜/深搜/回溯/剪枝(上篇)

【ps】本篇有 9 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1&#xff09;全排列 .1- 题目解析 .2- 代码编写 2&#xff09;子集 .1- 题目解析 .2- 代码编写 3&#xff09;找出所有子集的异或总和再求和 .1- 题目解析 .2- 代码编写 4&#xff09;全排列 II…

C语言语句、语句分类及注释

文章目录 一、语句和语句分类二、注释&#x1f355;注释是什么&#xff1f;为什么写注释&#xff1f;1. /**/的形式2. //的形式3. 注释会被替换 三、随机数的生成1.rand函数2.srand函数3.time函数4.设置随机数的范围 四、C99中的变长数组五、问题表达式解析表达式1表达式2表达式…

手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告)

手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告) 前言 在去年的差不多这个时候&#xff0c;我们做了一遍外置配件的选型&#xff0c;筛选过滤了一批USB蓝牙配件和type-c转usb的模块。详情可参考《外置配件的电商价格和下载链接的选型.docx》一文&#xff1a;蓝牙电话…

FireRedTTS - 小红书最新开源AI语音克隆合成系统 免训练一键音频克隆 本地一键整合包下载

小红书技术团队FireRed最近推出了一款名为FireRedTTS的先进语音合成系统&#xff0c;该系统能够基于少量参考音频快速模仿任意音色和说话风格&#xff0c;实现独特的音频内容创造。 FireRedTTS 只需要给定文本和几秒钟参考音频&#xff0c;无需训练&#xff0c;就可模仿任意音色…

Python基础语句教学

Python是一种高级的编程语言&#xff0c;由Guido van Rossum于1991年创建。它以简单易读的语法和强大的功能而闻名&#xff0c;被广泛用于科学计算、Web开发、数据分析等领域。 Python的应用领域广泛&#xff0c;可以用于开发桌面应用程序、Web应用、游戏、数据分析、人工智能等…