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

《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.ppmy.cn/news/1522758.html

相关文章

【Linux】理解Linux中的软链接与硬链接

文章目录 理解Linux中的软链接与硬链接1. 什么是硬链接?示例: 2. 什么是软链接?示例: 3. 软链接与硬链接的对比4. 何时使用软链接与硬链接? 理解Linux中的软链接与硬链接 在Linux文件系统中,软链接&#x…

Android UI绘制流程

UI绘制流程,Activity、Dialog、PopupWindow等 -- android系统的事件分发流程分为很多部分: Native层 –> ViewRootImpl层 –> DecorView层 –> Activity层 –> ViewGroup层 –> View层。 其实Toast窗口和Activity、Dialog、PopupWindow有…

Java 中 `==` 和 `equals()` 的区别详解

在 Java 编程中, 和 equals() 是两种常用于比较变量和对象的方法。尽管它们都可以用来比较,但它们的作用和使用场景是不同的。本文将深入探讨它们之间的区别,并通过示例解释如何正确使用它们。 1. 操作符 什么是 ? 是 Java 中的…

24并发设计模式——线程池模式

一、线程池模式介绍 线程池模式(Thread Pool Pattern)是一种并发设计模式,用于管理和循环使用线程资源以处理大量任务。它旨在提高系统性能和资源利用率,特别是在需要频繁创建和销毁线程的环境中。 1、线程池模式结构图 线程池管…

wmv怎么转换成视频mp4?简单的几种视频格式转换方法

wmv怎么转换成视频mp4?在数字媒体日益普及的今天,我们经常会遇到需要转换视频格式的情况。wmv格式,由微软开发,广泛用于Windows平台上播放视频。尽管wmv格式在Windows系统中表现优异,但其兼容性在其他操作系统或设备上…

为什么我选择这款PR剪辑软件?打工人亲测好用!

现在大家都爱看短视频和Vlog,要是你会剪辑视频,那可就牛了。不管是出去玩拍的视频,还是工作需要,都能派上用场。我就是个爱旅行、爱剪辑的发烧友,今天给你们推荐三款特别好用的视频剪辑软件,尤其是PR剪辑&a…

Android 串口数据分包处理

/* class PacketHandler { private static final byte PACKET_START 0x79; // 假设包的开始标记为0x79 private static final byte PACKET_END 0x0D; // 假设包的结束标记为0x0D private static ByteArrayOutputStream buffer new ByteArrayOutputStream();public static v…

【前端】中断请求的方式

一 使用 Axios 和取消令牌 1.步骤: 初始化取消源,创建CancelToken const source axios.CancelToken.source();传递cancelToken, 发起请求 axios.get(/api/data, {cancelToken: source.token });触发取消请求 source.cancel(操作被取消);判断错误是否由于取消请求操作引起…

Vue.js 组件化开发:父子组件通信与组件注册详解

Vue.js 组件化开发:父子组件通信与组件注册详解 简介: 在 Vue.js 的开发中,组件是构建应用的重要基础。掌握组件的创建与使用,尤其是父子组件的通信和组件的注册与命名,是开发中不可或缺的技能。本文将详细探讨这些内容…

【前端】CSS控制style样式失效

在CSS中,可以通过几种方式控制或禁用特定的style样式。 使用all: unset来重置所有可继承的属性,并清除所有的样式: .element {all: unset;} 使用inherit值来使属性获取其父元素的值: .element {color: inherit;font-size: inh…

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class M…

Vue 使用接口返回的背景图片和拼图图片进行滑动拼图验证

一、背景 前两天发了一篇 vue-monoplasty-slide-verify 滑动验证码插件使用及踩坑_vue-monoplasty-slide-verify 引用后不显示-CSDN博客 这两天项目又需要通过接口校验,接口返回了背景图片和拼图图片,于是在网上找了一篇帖子,vue 图片滑动…

Apache Ignite 在处理大规模数据时有哪些优势和局限性?

Apache Ignite 在处理大规模数据时的优势和局限性可以从以下几个方面进行分析: 优势 高性能:Ignite 利用内存计算的优势,实现了极高的读写性能,通过分布式架构,它可以将数据分散到多个节点上,从而实现了并…

JavaEE-HTTPHTTPS

目录 HTTP协议 一、概念 二、http协议格式 http请求报文 http响应报文 URL格式 三、认识方法 四、认识报头 HTTP响应中的信息 HTTPS协议 对称加密 非对称加密 中间人攻击 解决中间人攻击 HTTP协议 一、概念 HTTP (全称为 "超⽂本传输协议") 是⼀种应⽤…

2024华为OD机试真题-反射计数Python-C卷D卷-200分

2024华为OD机试最新E卷题库-(C卷+D卷+E卷)-(JAVA、Python、C++) 目录 题目描述 输入描述 输出描述 用例1 题目解析 代码 题目描述 给定一个包含 0 和 1 的二维矩阵。 给定一个初始位置和速度,一个物体从给定的初始位置出发,在给定的速度下进行移动,遇到矩阵的边缘则…

分布式部署①

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 1. 需要部署的服务 Nacos 理论上,应…

仕考网:事业编面试全流程介绍

1.进入考场 工作人员会检查考生的身份证、准考证以及随身携带物品,可以带食物和水 2.进入候考室 进入候考室,工作人员会再次确认考生信息 3.抽签 考生到齐后,工作人员会组织考生抽签,登记抽签序号、信息确认、发放号码牌 4.…

【Android】使用和风天气API获取天气数据吧!(天气预报系列之一)

【Android】使用和风天气API获取天气数据吧!(天气预报系列之一) 古话说得好,要有天气预报,首先需要有天气,和预报。 今天给大家介绍一个好用的天气预报API:和风天气。以及webAPI的使用方法~&a…

React 应用中集成 Ace Editor

安装 React-Ace 首先,你需要安装 react-ace 和 ace-builds(它包含 Ace Editor 的核心文件): pnpm install react-ace ace-builds用法: import React from react; import AceEditor from react-ace;// 引入你需要的 …

从“游戏科学”到玄机科技:《黑神话:悟空》的视角打开动漫宇宙

近日,中国游戏界迎来了一场前所未有的盛事——由游戏科学公司开发的《黑神话:悟空》正式上线,并迅速成为全球玩家热议的焦点。在居高不下的讨论热度中,有人说他的成功在于对《西游记》为背景进行改编,对原著进行了分析…