极米科技:走出舒适圈,推动数据架构现代化升级 | OceanBase 《DB大咖说》

news2024/9/23 15:27:53

《DB 大咖说》第 13 期,邀请到了极米科技软件与创新产品线高级架构师施刘凡来进行分享。

在小红书平台上,“是否应将家里的电视升级为投影仪?”'这一话题激发了上百万篇笔记的分享与推荐,反映出年轻群体对投影仪的偏好。随着手机、电视等电子产品智能化浪潮的推进,投影仪已从昔日教室与会议室的沉重设备,华丽转身为年轻人追求极致观影体验的首选“大屏电视”。

成立于 2013 年的极米科技股份有限公司(以下简称“极米科技”),作为投影仪行业的佼佼者,是一家专注于智能投影和光学技术的科创板上市企业,集设计、研发、制造、销售和服务于一身,位列全球家用投影市场出货量第一名,并连续六年位居中国投影机市场第一。其产品远销美国、日本、德国、英国、法国等 100 多个国家和地区,为全区超过 500 万终端用户提供产品和服务。

施刘凡,是一位年轻但对数据架构升级有着独特理解的开发工程师,伴随了极米科技多个关键业务系统从传统 MySQL 升级至 OB Cloud 云数据库(以下简称 OB Cloud)的完整成长过程。

1723174509

近年来,随着极米科技业务的迅猛发展,其数据库面临前所未有的挑战,原有数据库无法为业务运行继续提供可靠支持。从去年 7 月份开始,极米科技启动了数据库的升级,开始用 OB Cloud 云数据库替换了原来的 MySQL。此举极大简化了数据库运维流程,显著降低了总体成本,为极米科技正在进行的数据架构现代化升级和业务创新打下坚实的基础。

一、选型三要素:成本、性能、兼容性

极米科技的核心业务部署在公有云上,数据库以 MySQL 为主,拥有 100 多个 MySQL 的 RDS。随着业务的增长,单 RDS 节点的存储容量逼近数据库的上限,不得不扩容,同时,RDS 的成本也持续增长。极米科技决定对 MySQL 数据库进行升级替换。

“替换 MySQL 对极米科技而言,是一次勇敢的尝试,要突破极米科技的舒适圈,同时也是对未来发展的深思熟虑。”极米科技软件与创新产品线高级架构师施刘凡如是说。

施刘凡在极米科技工作多年,从最基础的系统安装做起,逐步成长,从事核心业务系统的开发,到今天参与到极米科技的 IT 系统顶层设计。在施刘凡看来,这个成长的过程就是自己不断突破舒适圈的过程,正如今天的极米科技在数据库的升级上一样。

随后极米科技开始了新数据库的选型工作。施刘凡介绍,在数据库的选型过程中,极米科技主要有三个方面的考量:

○  成本。要降低总体拥有成本,这是极米科技在这次新数据库选型工作的一个大前提。

○  性能。性能满足业务需求是一个基本要求。特别是考虑到此前极米科技的数据库已经出现了上亿记录的单表,后来不得不通过分库分表来满足查询性能的需求。

○  兼容性。鉴于原来的业务系统都是面向 MySQL 开发的。如果新数据库的语法和 MySQL 有很大差异,必然会带来大量的软件开发和测试成本。

施刘凡表示,在迁移过程中,极米科技秉持技术中立原则,力求减少对特定数据库中间件的依赖,同时控制成本。“我们要做的,不仅是跳出 MySQL 的舒适区,还要实现成本效益的最大化。”

基于这三个要求,极米科技进行了广泛的数据库选型和多方面的测试,最后选定了 OB Cloud。

施刘凡介绍,极米科技的测试表明,OB Cloud 的 SQL 与 MySQL 兼容性非常好,应用系统基本做到了无修改。而且,OB Cloud 能兼容 PL 对象和绝大多数 SQL 对象。在性能方面,OB Cloud 也有明显优势,以单表索引扫描为例,在相同实例规格下 OB Cloud 几乎是 MySQL 吞吐量的 10 倍。

二、充分测试,稳健前行

在明确了用 OB Cloud 取代 MySQL 之后,极米科技开始为迁移准备,并为此制订了详尽的数据库迁移方案。

施刘凡表示,迁移前一方面是要做充分的 POC 验证,对各种可能应用场景进行充分的测试验证,确认没有问题后再实施迁移。

其次是运维层面的基础能力的准备。比如,HTTP 和 RPC 都要能支持基于灰度的调用。这样,在数据库迁移时可以先让小部分用户使用新版本,如果遇到问题修复后再重新灰度,可以降低迁移风险。

尽管 OB Cloud 在语法上能与 MySQL 充分兼容,但迁移中还是遭遇到一些挑战。比如夏令时制度的一些特殊时间的处理以及代码不规范引起的问题。比如,在系统中曾采用主键 ID 去做业务逻辑判断,而分布式数据库只保证 ID 的连续性而不保证递增,有些 ID 会跳跃,无法实现原来的逻辑,后来只好重写代码。

“过去有些代码写得不太规范,这次进行数据库的替换正好也是一次重新梳理的机会。”施刘凡说。

施刘凡介绍,在具体的迁移方案上极米科技有两个选择:停写切换和双向同步防循环。前一个方案是通过 OMS 将数据单向地从源端的 RDS 同步到 OB Cloud,包括数据增量同步,但业务需要停机,直接影响业务,其好处是避免了数据一致性问题;后一个方案是 MySQL 和 OB Cloud 同时进行实时写入,由 OMS 进行数据同步并防止数据循环复制,其好处是业务不停机,但实现复杂。

极米科技最终选择了相对比较简单可靠的前一个方案,由于当时做的是灰度发布,所以对业务没有产生大的影响,最终保证了数据库迁移的成功。

三、运维简化,性能飞跃

截至目前,极米科技已经成功完成了 40 多个 MySQL RDS 数据库的迁移,覆盖了采购、媒资等多个关键业务领域。随着数据逐步迁移到 OB Cloud,新数据库运维的便利性、性能优势以及成本优势开始逐步显现。

施刘凡介绍,原来的多个 RDS 数据库迁移到 OB Cloud 后实现了整合,从原来的 40 多个 RDS 实例整合为两个集群,共 Purchase、UCenter、Media、Launcher 4 个租户,数据库的运维管理变得简洁高效。

1723173797

同时,原 MySQL 数据库中记录数过亿的大表需要借助 sharding sphere 通过拆表来保证性能,而现在迁移到 OB Cloud 后不再需要拆表,极大地减轻了运维团队的压力。

而且,数据库的可用性也得到了保证,现在 RPO 为 0,RTO 小于 8 秒,为极米科技业务提供了充分的可用性保障。

另外,OB Cloud 对 MySQL 的良好兼容性也给这次迁移带了很多便利。“这次数据库的替换对开发没有任何侵入性,研发几乎感觉不到数据的变化,对他们来说只是换了一个数据源。”施刘凡说。

当然,最让施刘凡感觉惊喜还是 OB Cloud 的高性能。“最初我们规划是准备用 32 核的集群承载 20 个 RDS 数据库,而在实践中最终迁移了近 30 个,帮助我们节省了不少算力成本。”施刘凡说。

施刘凡透露,极米科技数据库的迁移还会继续,接下来还会有业务中台相关的数据库会迁移到 OB Cloud,助力更多用户的关键业务系统升级,构建现代数据架构。相信随着 OB Cloud 的深入应用与持续优化,极米科技将在智能化升级的道路上迈出更加坚实的步伐持续引领行业创新与发展,加速迈向高质量的发展之路。


特别感谢尹海文对本期《DB 大咖说》的支持。尹海文目前担任某科技公司 DBA 总监,在数据库领域深耕 10 余年,Oracle ACE,科技公众号《胖头鱼的鱼缸》主理人,热衷于分享他在数据库方面的技术与非技术见解。

写在最后:

《DB大咖说》是一档立足数据库领域,关注职业成长与前沿趋势,主要面向架构师、CTO/CIO、DBA、业务负责人、CEO 等推出的集「文音视频」于一体的原创栏目。我们初衷是围绕数据库领域的职业发展、趋势洞察、选型实践等话题,邀请领先企业的实干者、数据库领域的资深专家,从自身的职场积淀出发,结合所见所闻所思所感,输出一些对行业有价值的优质内容和职场方法论。


OceanBase 云数据库现已支持“”免费试用,现在申请,体验分布式数据库带来全新体验吧 ~

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

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

相关文章

Java MVC

1. MVC模式 1.1. JavaBean JavaBean:符合特定规范的Java类,是一种可重用的组件 特定规范: public, class, 提供无参数构造方法属性private提供public的getter和setter方法 功能分类: 封装数据:数据Bean&#xff0c…

【gtokentool】什么是数字货币?怎么使用?

一、什么是数字货币 数字货币是一种基于密码学原理,独立于传统银行体系运行的电子货币形式。数字货币具有以下特点: 去中心化:数字货币采用去中心化的交易验证方式,不依赖于任何中央机构或政府。安全性高:通过加密算法…

STM32G474之DAC

STM32G474分别使用CORDIC硬件和“math.h”的正弦值,从DAC1和DAC2输出。 1、DAC特点 PA4的附加功能为DAC1_OUT1,无需映射,直接将它配置为模拟功能,就可以使用了。 PA6的附加功能为DAC2_OUT1,无需映射,直接将…

数据结构-栈、队列-详解

数据结构-栈、队列-详解 1.前言2.栈2.1是什么2.2函数实现struct StackStackInitStackDestroyStackPushStackSizeStackEmptyStackTopStackPop 2.3小结 3.队列3.1是什么3.2函数实现struct QueueQueueInitQueueDestroyQueueEmptyQueuePushQueuePopQueueFrontQueueBackQueueSize 3.…

Verilog基础,原码,反码与补码的概念

Verilog模块初认识 1、Verilog模块(Module) Verilog中的module可以看成一个具有输入输出端口的黑盒子,该黑盒子有输入和输出接口(信号),通过把输入在盒子中执行某些操作来实现某项功能。(类似于C语言中的函数) 图1 模块示意图 1.1 模块描述 图1 所示的…

【408DS算法题】035进阶-17年真题_二叉树转中缀表达式

Index 真题题目分析实现总结 真题题目 请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。 例如, 当下列两棵表达式树作为算法的输入时, …

vivado 定义约束设置和文件

步骤2:定义约束集和文件 首先创建一个新的约束集,并向其中添加一个空的XDC约束文件 示例设计已经包含两个约束集,但您没有在本实验室中使用它们。 1.在“流导航器”中,单击“项目管理器”部分中的“添加源”。 2.从“添加源”对话…

【自考zt】【软件工程】【21.10】

关键字: 软件需求基本性质、软件系统需求挑战、耦合(高内容,低无直接)、内聚(初始化时间)、uml包、rup边界类、测试首要目标、单元测试最后工作、性能需求 软件开发本质、软件需求规约三种风格、提炼、用…

windows C++ 并行编程-并发和UWP(二)

下面例程用于演示在UWP中进行并发编程。 示例: 创建 C Windows 运行时组件并从 C# 中使用它 假设有一个使用 XAML 和 C# 的应用,可用它来定义 UI 和 C Windows 运行时组件以执行计算密集型操作。 在此示例中,C 组件会计算给定范围中的哪些数字是质数。…

Sqoop 数据迁移

Sqoop 数据迁移 一、Sqoop 概述二、Sqoop 优势三、Sqoop 的架构与工作机制四、Sqoop Import 流程五、Sqoop Export 流程六、Sqoop 安装部署6.1 下载解压6.2 修改 Sqoop 配置文件6.3 配置 Sqoop 环境变量6.4 添加 MySQL 驱动包6.5 测试运行 Sqoop6.5.1 查看Sqoop命令语法6.5.2 测…

Maven与Gradle差异

作为Java 开发者,你平时用 Maven 还是 Gradle? 我一直用的都是 Maven,但是前几天做了一个小项目,用的是 Gradle,因工作需要就去了解了Gradle的相关信息。 直到看到 Spring 和 Spring Boot 都从 Maven 切换到 Gradle了…

鸿蒙界面开发——组件(4):图标小符号 (SymbolGlyph/SymbolSpan) 气泡提示Popup

SymbolGlyph 创建图标 SymbolGlyph通过引用Resource资源来创建,资源引用类型可以通过$r创建Resource类型对象。不支持子组件。 SymbolGlyph(value?: Resource)SymbolGlyph($r(sys.symbol.ohos_folder_badge_plus)).fontSize(96).renderingStrategy(SymbolRenderi…

【GD32】---- 使用GD32调试串口并实现printf打印输出

1 复制工程模板 直接复制工程模板里的系统文件和固件库文件到新的工程文件01_USART_Printf 2 新建keil工程 参考上一篇博文:【GD32】---- 移植工程模板及点灯测试 3 编写代码 3.1 创建USART文件 创建一个USART.c文件,放于05_UserDriver文件夹中 …

macOS安装Maven

安装Java Java Downloads | Oracle 官网下载默认说最新的Java22版本,注意这里我们要下载的是Java8,对应的JDK1.8 需要登陆Oracle,没有账号的可以百度下。账号:908344069qq.com 密码:Java_2024 Java8 jdk1.8配置环境变量 open -e ~/.bash_p…

关于edge浏览器登陆CSDN安全验证不跳出验证码

前言 也就是最近这几天才出现这个问题,以前用edge浏览器登陆csdn时即使需要安全验证也能正常弹出验证码,现在根本没反应。 正文 我用edge浏览器登陆时,显示如下界面,就卡住不动了。 起初我以为是我浏览器可能设置了拦截的问题…

数据分析利器:Java与MySQL构建强大的数据挖掘系统

数据分析在当今信息时代具有重要的作用,它可以帮助企业和组织深入理解数据,发现隐藏在数据中的模式和规律,并基于这些洞察进行决策和优化。Java与MySQL作为两个强大的工具,结合起来可以构建出一个高效、可靠且功能丰富的数据挖掘系…

《中文Python穿云箭量化平台二次开发技术09》设计一个可视化股票池量化平台项目用于实现选股和自动交易

《中文Python穿云箭量化平台》是纯Python开发的量化平台,因此其中很多Python模块,我们可以自己设计新的量化工具,例如自己新的行情软件、新的量化平台、以及各种量化研究工具。 穿云箭自带指标公式源码运行模块,可以为其他量化平台…

ROS/ROS2版本和Gazebo版本

简洁版本: ROS Noetic Gazebo 11 (ubuntu 20.04)ROS Jazzy Gazebo Harmonic (ubuntu 24.04) 其他版本搭配也可以学习和研究但是成本过高。 如何贯穿从ROS kinetic到ROS Jazzy的教程。 如何实现旧新的平滑过度。 …

python常用库学习-Matplotlib使用

文章目录 安装 Matplotlib导入库基本示例1. 绘制简单的线图2. 散点图3. 柱状图4. 直方图5. 子图 更多高级功能1. 自定义样式2. 文本和注释3. 保存图形 示例:使用 Matplotlib 绘制多个图表示例 1: 绘制多个线图示例 2: 绘制散点图和直方图 参考文献 Matplotlib 是 Py…

【QT】VS2020+QT插件 CMake项目开发踩坑记录

背景 我使用的是VS2022, 安装了QT的两个插件,并且使用CMake进行工程管理。 当然如果你想通过VS开发qt,第一步是安装QT(我目前安装了最新的6.7版本) 然后才是安装VS中的QT插件。 这篇文章,主要记录&#x…