OB Cloud助力泡泡玛特打造新一代分布式抽盒机系统

news2025/1/17 5:54:45

作为中国潮玩行业的领先者,泡泡玛特凭借 MOLLY、DIMOO、SKULLPANDA 等爆款 IP,以及线上线下全渠道营销收获了千万年轻人的喜爱,会员数达到 2600 多万。2022 年,泡泡玛特实现 46.2 亿元营收,其中线上渠道营收占比 41.8%,而抽盒机小程序是线上营收的重要来源。

为了让全国的潮玩爱好者能够随时随地在线抽盒,2018 年 9 月 2 日,泡泡玛特抽盒机小程序诞生。这款小程序模拟线下消费者的抽盒场景,将现实的抽盒乐趣搬到线上,同时增加了多种多样的玩法,收获了大量粉丝。

图片

泡泡玛特主要销售潮流玩具,推陈出新速度快,基本每周都会发售新产品。每当新品发售时,近百万名消费者会在同一时间涌入抽盒机小程序,这种类似电商“秒杀”的场景往往会带来流量突增,容易造成线上抽盲盒体验的卡顿或延迟。

所以对泡泡玛特而言,流量的剧烈波动属于常态,要更好地应对流量急速变化,泡泡玛特业务数据库的规模也需要进行灵活调整:

  • 在业务低峰时期,以较小规格稳定运行,减少浪费;

  • 在业务高峰时期,快速扩容,保障新产品发售的稳定。

而 MySQL 等传统单机数据库扩缩容能力有限,MySQL 的主备架构扩缩容只能通过更换服务器规格来实现。具体而言,MySQL 的扩缩容需要先挂载一台更大规格的服务器,作为一个备节点从主节点同步数据;待数据同步基本完成后,再进行一次主备切换,才能完成升配过程。

整个 MySQL 扩缩容的过程一定会涉及服务器层面的物理调整,必然带来较大的额外开销。由于 MySQL 的主备切换会带来一定时间的业务闪断,为不影响用户体验,泡泡玛特的运维团队在进行 MySQL 的主备切换时,通常都会在业务低峰期如凌晨进行操作。

在之前很长一段时间,泡泡玛特运维团队都要提前评估新品发售流量,按照最极端的场景预估数据库所需的规格,然后在发售日前一天凌晨业务低峰期进行扩容。在发售结束后,也要进行同样流程的缩配操作。这就衍生出两个问题:

  • 容量预估异常困难。为了保证每周新品发售的全过程安全,往往要按照最大可能的流量来扩容,通常会带来比较大的浪费。

  • 运维人员压力过大。为了最大程度地降低对业务的影响,通常都需要挑在凌晨的时间进行升降配。 

此外,泡泡玛特有多个不同业务,需要部署大量的数据库实例,导致数据库实例较多,管理复杂度高。这给数据库成本控制、有效运维,以及关键业务的流量波动都带来了挑战。

那么,如何更灵活、更安全、更低成本地实现数据库灵活扩缩容,完美支持每次新品发售的流量洪峰,让每一位潮玩爱好者都能够享受更丝滑的抽盒体验,成为泡泡玛特最关心的问题。经过严苛选型测试,泡泡玛特最终选择携手已连续 10 年稳定支撑“双 11”的 OceanBase,搭载 OB Cloud 打造新一代分布式抽盒机系统。

图片

多级弹性伸缩,是让泡泡玛特抽盒机能轻松应对抽盒流量高峰的秘诀。OceanBase 的弹性伸缩能力包括租户级弹性和集群级弹性,后者涵盖机器规格和机器数量两个维度。泡泡玛特运维团队通过这三个层次的灵活搭配策略,轻松且低成本的解决了应对流量洪峰的难题。

第一级弹性伸缩:租户规格的调整

OceanBase 作为分布式数据库,内部把多台机器统一规划为一个资源池,资源池中又可以进一步划分一个个隔离的资源组,每个资源组就形成了一个租户的概念。

租户的存在,带来多级弹性伸缩的第一级。因为租户是 OceanBase 内部资源的划分,对租户规格的调整不涉及物理层面的资源调整,完全由 OceanBase 内核完成。这就使得 OceanBase 租户规格的调整,可以秒级生效,整个过程对应用完全无感知。

图片

泡泡玛特运维人员在数据库操作中,可以在任意时间(比如白天正常业务进行时),调整租户的 CPU 核数和内存大小,整个租户的极限 TPS 就可以得到平滑提升。

此外,泡泡玛特借助 OceanBase 提供的原生多租户能力,将原有的几十套数据库实例,整合为 3 套 OceanBase 集群,原有的一个实例,对应 OceanBase 集群中的一个租户。当然,也可以全部集中在 1 套,考虑到业务线运维的区分,最终选择兼顾综合成本和资源分配的 3 套集群方案。

通过多租户的改造,运维团队的压力显著减少。通过租户规格的调整,泡泡玛特大部分的小业务流量波峰,通过核心业务租户规格的扩大,即可随时随地无额外花费完成。 

第二级弹性伸缩:机器规格的调整(即垂直扩缩容)

面对相对较大的业务流量,简单调整租户规格可能还无法满足业务需要,这时候就需要扩大机器规格。比如,把集群从 30C 的规格扩容至 62C,来应对如 MOLLY 这样的超级 IP 新产品发售的流量。

前文提到,MySQL 的扩容过程就是一个主备切换的过程,会对业务有闪断的影响。而 OceanBase 是通过 Paxos 协议进行节点间的数据同步,Paxos 协议核心点是自选举,一份数据的三个副本投票表决出谁来当选 Leader,以及该日志是否提交。

图片

相比于 MySQL 主从复制,这带来了两点优势:

第一,OceanBase 的数据同步单位更小,带来更高的性能和灵活性。OceanBase 的 Paxos 组以分区为单位,相比于 MySQL 节点级日志同步,分区粒度更小,避免了 MySQL 为保证全局顺序带来的性能影响。并且 OceanBase 支持分布式事务的能力,还允许不同分区的 Leader 不在同一个节点上,比如上图中深蓝色的 Leader 节点就分布在三副本中,实现多点写入的能力,可以充分利用多机性能,并支持下面增加节点的扩展方式。

第二,OceanBase 的同步日志更轻量,代价更小。OceanBase 的 Paxos 协议同步的日志为 OceanBase 内部的物理日志 clog。而 MySQL 的流程是主生产逻辑日志 binlog,binlog 同步给备机后转化成 relay log,再执行的过程。OceanBase 的 clog 更轻量,更高效,配合Paxos分区级的同步粒度,OceanBase 不会有 MySQL 令人头疼的主备时延问题。

体现在扩缩容操作中,更换机器规格时,OceanBase 也需要先挂载一台机器同步数据,但切换时 OceanBase 只需要进行一次 Paxos 的有主选举,也就是 Leader 完成自己最后一个日志提交后,主动放弃 Leader 身份,然后主动投票给另一个节点,完成平滑切换。相比于需要闪断的 MySQL 主备切换,OceanBase 升配的整个过程对应用基本透明无感知。

图片

第三级弹性伸缩:机器数量的调整(即水平扩缩容)

这是 MySQL 主备架构做不到的一点,因为 OceanBase 是原生的分布式数据库,支持分布式事务,所以可以做到无感知的横向扩展。

更直观的说,就是 OceanBase 集群增加机器,业务流量就会自动迁移到新增的机器中。并且在这个过程中,应用是没有感知的,可以像使用一个单机 MySQL 那样继续使用这个有多台机器的集群。 

图片

这一点在很多工程实践中,被证实了是分库分表方案的更优解。同样,经过泡泡玛特的实践,考虑到可能出现超级爆款的新产品,增加机器数量的扩容方案,给泡泡玛特面对超大流量提供了经得住考验的解决方案。

图片

目前,泡泡玛特的核心抽盒机系统已经搭载 OB Cloud 全新出发,通过 OceanBase 的租户级弹性降低了 90% 的扩缩容时间,集群级弹性可轻松应对秒杀期间的百倍流量,新品发售等高并发场景的系统连续性达到 99.999%,让在线“摇一摇”的抽盒体验更加流畅。

泡泡玛特和 OceanBase 都创立于 2010 年,分别在文创和科技领域深耕 13 年。如今,泡泡玛特核心抽盒机系统已登录 OB Cloud,未来还将推动供应链、IP 商品运营等系统逐步上线。国潮文创与国产科技共舞,让泡泡玛特的每一笔「抽盒」都算数。

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

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

相关文章

java 浅谈ThreadLocal底层源码(通俗易懂)

目录 一、ThreadLocal类基本介绍 1.概述 : 2.作用及特定 : 二、ThreadLocal类源码解读 1.代码准备 : 1.1 图示 1.2 数据对象 1.3 测试类 1.4 运行测试 2.源码分析 : 2.1 set方法解读 2.2 get方法解读 一、ThreadLocal类基本介绍 1.概述 : (1) ThreadLocal,本…

YOLO数据集划分(训练集、验证集、测试集)

1.将训练集、验证集、测试集按照7:2:1随机划分 1.项目准备 1.在项目下新建一个py文件,名字就叫做splitDataset1.py 2.将自己需要划分的原数据集就放在项目文件夹下面 以我的为例,我的原数据集名字叫做hatDataXml 里面的JPEGImages装的是图片 Annota…

安达发|APS软件排程规则及异常处理方案详解

随着科技的发展,工业生产逐渐向智能化、自动化方向发展。APS(高级计划与排程)软件作为一种集成了先进技术和理念的工业软件,可以帮助企业实现生产过程的优化和控制。其中,排程规则是APS软件的核心功能之一,它可以帮助企业合理安排…

港联证券|什么是北上资金?北上资金连续流入的股票好不好?

一般在股市收盘之后,公司会对当日的股市资金变化做一个资金总结,比如说北上资金的流入或许流出。那么什么是北上资金?北上资金连续流入的股票好不好?下面就由港联证券为大家剖析: 什么是北上资金? 北上资金…

Java on VS Code 8月更新|反编译器用户体验优化、新 Maven 项目工作流、代码高亮稳定性提升

作者:Nick Zhu 排版:Alan Wang 大家好,欢迎来到 Visual Studio Code for Java 的 8 月更新!在这篇博客中,我们将为您提供有关反编译器支持的更多改进。此外,我们将展示如何创建没有原型的 Maven 项目以及一…

LabVIEW计算测量路径输出端随机变量的概率分布密度

LabVIEW计算测量路径输出端随机变量的概率分布密度 今天,开发算法和软件来解决计量综合的问题,即为特定问题寻找最佳测量算法。提出了算法支持,以便从计量上综合测量路径并确定所开发测量仪器的测量误差。测量路径由串联的几个块组成&#x…

用于设计和分析具有恒定近心点半径的低推力螺旋轨迹研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

ShardingJDBC——基于JPA的读写分离实战

摘要 本博文主要介绍基于JPA的读写分离实战,帮助大家更好的学会使用读写分离。透明化读写分离所带来的影响,让使用方尽量像使用一个数据库一样使用主从数据库集群,是ShardingSphere读写分离模块的主要设计目标。 一、读写分离库的场景和设计…

一文了解tcp/ip协议的运行原理

接触代理ip的人都了解https/sock5等ip协议,那么TCP/IP 协议又是什么? 一、什么是TCP/IP 协议? TCP/IP 协议实际上是一系列网络通信协议的一个统称,他负责具体的数据传输工作,核心的两个协议包括TCP以及IP&#xff0c…

启动服务报错:Command line is too long Shorten command line for xxx or also for Spri

ommand line is too long. Shorten command line for ProjectApprovalApplication or also for Spring Boot default configuration. 启动springboot 项目的时候报错 解决方案: 点击提示中的:default:然后在弹出窗口中选择:JAR xx…

Apache Struts2漏洞复现之s2-005漏洞复现

0x01 声明: 仅供学习参考使用,请勿用作违法用途,否则后果自负。 0x02 简介: Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java ServletAPI,鼓励开发者采用MVC架构…

LNMT架构

所谓的LNMT架构 指的就是Linux操作系统上部署Nginx web服务器、MySQL数据库服务器、Tomcat中间件服务器 L linux N nginx M mysql T tomcat 单机部署 1,安装 apache-tomcat 2,移动目录 3,复制第二个tomcat 4,…

Annual Inspection

机动车年检流程【交警12123】APP 到【检查地方】门口墙上贴着 然后上缴钥匙,等待,本次等待不到半小时搞定,速度很满意, 发现检测人员把你的里程数纠正了。 给你的行驶证,打印这些字样:检验有效期至XXXX 再给…

代码仓库必知:git忽略文件规则。问题解决: gitignore文件没有忽略某个文件,就是提交不了

文章目录 问题背景一、Git种的忽略文件有哪些?二、设置忽略文件的方法 问题背景 假设我的文件叫a.tsx,在 git status 时检测不到它的改动记录,并且 git commit 不了! 强制推才可以。这样会影响开发进度,因为我们经常需…

nomachine连接无显示器的Ubuntu/Debian时黑屏

nomachine连接无显示器的Ubuntu/Debian时黑屏 原因:无外接显示器时,Linux不会启动桌面GUI,或者说显卡就根本没有启动,这就是所谓的headless mode。 解决方法:官方给出了一些解决方案,见NoMachine - Conne…

Java String类(1)

String类的重要性 我们之前在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据的方法分离开的方式不符合面向对象的思想&…

Cannal监听binlog

文章目录 一、canal概念二、canal使用场景四、Canal工作原理Mysql主从复制原理 binlog中的二进制日志binlog格式选择 Canal消费方式应用实践总结 一、canal概念 canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,ca…

【位运算】leetcode面试题:消失的两个数字

一.题目描述 消失的两个数字 二.思路分析 本题难度标签是困难,但实际上有了只出现一次的数字iii这道题的铺垫,本题的思路还是很容易想到的。 温馨提示:阅读本文前可以先查看我的【位运算】专栏的第一篇文章,其中包含位运算这类…

算法通关村14关 | 堆在数组中找第k大的元素应用

1. 在数组中找第k大元素 题目 LeetCode215:给定整数数组nums和整数k,请返回数组中第k个最大的元素, 思路 解题思路用三个,选择法,堆查找和快速排序。 我们选择用大堆小堆解决问题,“找最大用小堆&#xff…

查看GPU占用率

如何监控NVIDIA GPU 的运行状态和使用情况_nvidia 85c_LiBiGo的博客-CSDN博客设备跟踪和管理正成为机器学习工程的中心焦点。这个任务的核心是在模型训练过程中跟踪和报告gpu的使用效率。有效的GPU监控可以帮助我们配置一些非常重要的超参数,例如批大小,…