当前位置: 首页 > news >正文

极米科技:走出舒适圈,推动数据架构现代化升级 | 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 云数据库现已支持“”免费试用,现在申请,体验分布式数据库带来全新体验吧 ~

相关文章:

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

《DB 大咖说》第 13 期,邀请到了极米科技软件与创新产品线高级架构师施刘凡来进行分享。 在小红书平台上,“是否应将家里的电视升级为投影仪?”这一话题激发了上百万篇笔记的分享与推荐,反映出年轻群体对投影仪的偏好。随着手机、…...

IP学习——Fiveday

设备排错 [R1]display ip interface brief 查看路由器接口的IP地址信息 [R1]display current-configuration int g0/0/1.10 查看路由器接口的IP地址信息 TG---> trunk查看vlan指令:displayvan其中UT--->accessc.vlan确认完成后 即链路层配置完成排查网络层错误 排查终端主…...

格式化的硬盘能恢复数据吗?拯救数据的可能性

在信息技术高速发展的今天,硬盘作为计算机的核心存储部件,承载着大量的数据和文件。然而,有时因为误操作或其他原因,我们可能需要对硬盘进行格式化,这往往导致重要数据的丢失。 那么,格式化后的硬盘数据是否…...

亚信安全出席第五届国际反病毒大会 探究AI现代网络勒索治理

近日,第二届网络空间安全(天津)论坛正式开幕。本届论坛由天津市政府主办,国家计算机病毒应急处理中心、天津市公安局、天津市滨海新区政府承办,国家网络与信息安全信息通报中心协办,围绕“共建网络安全 共治…...

C语言从头学58——学习头文件math.h(一)

math.h 头文件提供了很多数学计算方面的函数。 一、使用数学函数前需要了解的两个类型、两个宏 1、float_t:当前系统能够有效执行float运算的类型,宽度不少于float。 2、double_t:当前系统能够有效执行double运算的类型,宽度不…...

前端JS常见面试题

数据双向绑定 Bug解决 集成工作涉及 版本node 依赖包报错 版本问题!!!ElementUI、Cesium、ant-design 配置、代码和其他 混入 在Vue中,混入(Mixins)是一种非常有用的功能,它允许你创建可复…...

利用深度学习实现验证码识别-4-ResNet18+imagecaptcha

在当今的数字化世界中,验证码(CAPTCHA)是保护网站免受自动化攻击的重要工具。然而,对于用户来说,验证码有时可能会成为一种烦恼。为了解决这个问题,我们可以利用深度学习技术来自动识别验证码,从…...

IDC基础学习笔记

一、数据中心介绍 1、数据中心级别划分: 2、数据中心结构: 3、IT系统组成 二、数据中心硬件知识 1、服务器组件 服务器的正面接口: 服务器的反面接口: (1)CPU CPU定义:中央处理器&#xff08…...

Mysql基础练习题 1527.患某种疾病的患者 (力扣)

查询患有 I 类糖尿病的患者 ID (patient_id)、患者姓名(patient_name)以及其患有的所有疾病代码(conditions)。I 类糖尿病的代码总是包含前缀 DIAB1 。 题目链接: https://leetcode.cn/proble…...

Mysql链接异常 | [08001] Public Key Retrieval is not allowed

Datagrid报错 [08001] Public Key Retrieval is not allowed 这个错误通常是由于 MySQL 8.0 中的新特性导致的。默认情况下,MySQL 8.0 使用 caching_sha2_password 作为认证插件,而你需要在连接 URL 中明确允许公钥检索或者使用老版本的认证方式 mysql…...

vue3项目中如何动态循环设置ref并获取使用

前言:vue2可通过ref来获取当前的dom,但是vue3有个问题,就是必须定义ref的变量名,才能使用;倘若有多个ref,一个个去定义未免过于繁琐,还有一种情况就是dom是使用v-for循环出来的,那么…...

stm32之SPI通信协议

文章目录 前言一、SPI通信协议1.1 SPI简介1.2 SPI通信特点1.3 SPI与I2C对比 二、SPI硬件电路三、SPI通信原理四、SPI时序单元4.1 起始和终止条件4.2 交换一个字节(模式1)4.3 交换一个字节(模式0)4.4 交换一个字节(模式2和3) 五、SPI时序5.1 发送指令5.2 指定地址写5.3 指定地址…...

Unity 摄像机(Camera)详解

文章目录 0.前言1.相机属性介绍2.Unity 中多个相机画面堆叠显示2.1 3D 摄像机2.2 UI 摄像机2.3 摄像机的Culling Mask设置 0.前言 本文介绍的是使用Unity默认的内置渲染管线下的Camera组件,使用URP或HDRP则不同。 1.相机属性介绍 Clear Flags: 清除标记…...

数学基础 -- 线性代数之LU分解

LU分解 LU分解(LU Decomposition)是线性代数中非常重要的一种矩阵分解方法。它将一个方阵分解为一个下三角矩阵(L矩阵)和一个上三角矩阵(U矩阵)的乘积。在数值线性代数中,LU分解广泛用于求解线…...

高职人工智能训练师边缘计算实训室解决方案

一、引言 随着物联网(IoT)、大数据、人工智能(AI)等技术的飞速发展,计算需求日益复杂和多样化。传统的云计算模式虽在一定程度上满足了这些需求,但在处理海量数据、保障实时性与安全性、提升计算效率等方面…...

【Java】SpringCloud中使用set方法报错空指针

前言:今天在交流群中看见了一个空指针报错,想着哪里为空点过去看看为什么赋不上值就行,没想到啪啪打脸了,今天总结一下。 以下是他的RedisTempate注入和方法 可以看到,89行报错空指针。先分析一下, ①赋值…...

芯片杂谈 -- 常聊的内核包含哪些模块

目录 1. R52内核速览 2. 处理器模块详解 3.内核的功能安全测什么? 4.小结 最开始接触到汽车MCU大都来自NXP、Infineon、Renesas,例如MPC5748、TC275、RH850 P1X等等; 而各大OEM、供应商等等发布的JD通常都会要求熟悉AURIX、PowerPC、G3K…...

运维问题0002:SAP多模块问题-SAP系统程序在执行时,跳出“加急快件”窗口,提示:快件文档“更新已终止”从作者***收到

1、问题描述 近期收到2起业务报障,均反馈在SAP执行程序时,弹出“加急快件”窗口,导致操作的业务实际没有更新完成。 1)业务场景一:设备管理部门在操作事务代码:AS02进行资产信息变更时,保存正常…...

深度解析RAG:你必须要了解的RAG优化方法

RAG(Retrieval-Augmented Generation)是一种结合检索和生成能力的技术框架,旨在通过从外部知识库中检索相关信息来增强生成模型的输出。其基本思想是利用大型语言模型(LLM)的生成能力,同时通过检索机制获取…...

深度学习驱动下的字符识别:挑战与创新

一、引言 1.1 研究背景 深度学习在字符识别领域具有至关重要的地位。随着信息技术的飞速发展,对字符识别的准确性和效率要求越来越高。字符识别作为计算机视觉领域的一个重要研究方向,其主要目的是将各种形式的字符转换成计算机可识别的文本信息。近年…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层&#xf…...

反射获取方法和属性

Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: ​onCreate()​​ ​调用时机​:Activity 首次创建时调用。​…...

腾讯云V3签名

想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...