三维家:SaaS的IT规模化降本之道|OceanBase 《DB大咖说》(十一)

news2024/12/23 22:46:04

OceanBase《DB大咖说》第 11 期,我们邀请到了三维家的技术总监庄建超,来分享他对数据库技术的理解,以及典型 SaaS 场景在数据库如何实现规模化降本的经验与体会。

庄建超,身为三维家的技术总监,独挑大梁,负责三维家的所有IT系统运维与开发工作,为公司的成长贡献了关键力量。他不仅是一位卓越的技术专家,而且随着角色的转变,他现今更多地从业务价值的视角审视技术,对技术的热情与专注始终未减。

庄建超认为技术人要想在工作中更上一个台阶,首先需要沉下心来认真钻研技术,同时对行业也要深入研究,两者结合才有可能更进一步。对于 DBA 的成长,他建议要多读源码,多参与到社区,多交流,多分享,多动手实践。


三维家是一家以家居产业为依托、依靠云计算、大数据和 AI 人工智能等多项核心技术打造的大家居产业云工业软件服务商,连续 5 年上榜广州“未来独角兽”创新企业,先后完成多轮融资,融资总额超过 10 亿元人民币。其一体化云设计软件(CAD+CAM)、数控系统以及前后端一体化智能制造解决方案 SaaS 服务支持着众多门店的经营,拥有广泛的企业客户。

三维家的一体化解决方案覆盖门店的营销、设计以及工厂生产计划管理、加工制造全流程,为全屋定制企业提供 C2M 柔性生产全链路工具。在整个过程中,同一套数据贯穿全流程,包括从最早的设计效果图、到后来的工厂机器生产、再到最后的交付,因此对其底层的数据库有很高的要求。

为了更好地支持业务发展,降低运维成本,从 2023 年下半年开始,三维家开始启动数据库的升级工作,从原来的 MySQL+某国产数据库(以下简称“XDB”)统一迁移到 OceanBase。

一、业务进一步增长,对数据库有了新需求

三维家成立于 2013 年,正值中国经济快速发展的黄金时期,经济的蓬勃成长带动了家装行业的蓬勃发展,三维家的业务也随之高速增长,对数据库的要求也不断提高。

三维家刚成立的时候采用的是某传统集中式数据库。该数据库功能强大,开发人员也熟悉,开发和运维都比较简单,很好地支持了业务发展。但随着公司业务的成长,数据量不断增加,时常需要对数据库进行扩容,扩容成本随之越来越高,压力之下,2017 年三维家把该数据库换成了 MySQL+ 某国产数据库 XDB 的组合。

庄建超是三维家的技术总监,也是三维家最早的技术人员,曾经一个人承担了三维家所有的 IT 工作,从开发到运维。

庄建超解释说,之所以选择 MySQL+ XDB 是由于三维家业务的复杂性。三维家有很多大客户,每个大客户就是一个数据库,客户对数据隔离性有较高要求,所以选择了 MySQL 的分库分表来满足。同时,三维家也存在合库的需求,比如对数据进行统一分析和统计,而 MySQL 可扩展性不够,同时也不支持太复杂的分析需求,所以分析工作就由 XDB 来完成。没有都采用 XDB 主要是成本上的考虑,该数据库节点多导致前期成本较高。

MySQL+XDB 的组合稳定运行了几年,MySQL 负责写,XDB 负责读,一直非常顺利。去年新的问题出现了,更准确地说——是三维家对数据库有了新的要求。

庄建超进一步解释了三维家更换数据库的原因:

第一,需要支持多基础设施的数据库。此前不止一家云厂商出现过服务中断事故,让三维家对稳定性更为看重。三维家的服务对客户很关键,如果停服将直接影响客户经营。因此,三维家考虑进行多基础设施部署,避免因某云服务中断而影响客户业务。如果继续使用 MySQL 的话,那就要在其他云上再复制一份数据,成本将直接翻倍。

第二,简化运维。MySQL 是用分库分表+中间件来解决数据量大和数据的隔离问题的,然后用 XDB 进行合库来解决数据分析问题。两个数据库之间要做同步,数据流程长,还要借助中间件,技术栈复杂,运维成本随之变高。

第三,云成本持续增长。三维家的业务增长很快,数据量同步增长,成本自然也水涨船高,考虑到未来的可持续发展,三维家对降本增效有了新需求。

基于上面这些考虑,去年三维家决定进行数据库升级,并同步启动新数据库选型。

“那时 OceanBase 已经开源,我们在对 OceanBase 进行评估和测试后,发现功能完全符合要求,同时,OceanBase 对 MySQL 的兼容性非常高,因此很快就敲定了 OceanBase。”庄建超表示。

庄建超补充说:决策的背后另一个重要原因是对 OceanBase 的信任。因为它经过了支付宝大规模金融场景的打磨,完全自研,多年成长,其稳定性和可靠性经过了很多客户验证,值得信赖。

二、分库分表加大迁移难度

从 2023 年 9 月份开始,三维家正式启动数据库的迁移工作。截至到目前,三维家已经完成 80% 的系统迁移,只有一些合库还没有合并,目前,这部分工作也在顺利推进之中。

庄建超介绍,三维家的官网系统是第一个迁移到 OceanBase 的系统。由于这个系统以静态页面为主,即使出现了故障也不会直接影响客户的业务,所以选择其进行首位升级。在官网迁移完成后,三维家开始真正进行其他关键业务系统数据库的升级。

“我们对数据库的切换很谨慎,采取两个系统并跑,也就是新旧系统都要同时写,一旦出问题,马上切换回去,保障尽量减少对业务的影响。”庄建超说。

迁移过程中最大的困难也恰恰是同步写,因为要保持两个数据库系统的数据一致性,这个难度比较大。尤其是多对一的合并迁移难度较高:迁移前分库分库表,迁移后合库合表,要确保能回退,数据就得回写到旧的数据库。

“OceanBase 的数据迁移工具 OMS 可以满足一部分数据迁移需求,对分库分表部分就得其他方式来回写了。我们选择的是 Flink CDC,同时也做了很多定制化开发和配置工作。”庄建超说。

为了确保数据库系统迁移成功,三维家做了很多准备工作,从功能测试、压力测试、到流量回放、SQL 优化、再到试点迁移等,以确保在 SQL 语法上兼容、SQL 性能没有问题。比如,针对三维家复杂的业务场景,在迁移过程中,也做了大量索引和执行计划的优化工作。

庄建超说,整体数据库迁移过程比较顺利。在迁移过程中,他也提议 OceanBase 可以进一步增强其监控和告警能力。比如,提供更细粒度的性能监控和提供监控的 API,这样他们可以把性能数据接入大屏做展示。

三、降本增效,效果看的见

随着数据库迁移工作的推进,升级效果也开始逐渐显露出来。

首先,成本下降明显。原有的 XDB 数据库被直接替换,服务器进一步节省,成本降低显而易见。而且,升级为 OceanBase 后,其对数据的高压缩比使得存储空间需求也降低了不少,整体存储成本下降了 30%。

庄建超解释说,MySQL 的数据迁移回报目前还没有充分体现出来。因为三维家需要保障业务稳定,所以目前还是双跑,为确保回退机制可行,目前整体成本还相对较高。如果双跑结束,成本会直接减少一半。

其次,运维复杂度降低。换成 OceanBase 后,原来的中间件没有了,数据库架构进一步简化,故障点更少,稳定性更好,灵活性能提升,接口响应更快。而且部署更加灵活,扩容也非常方便。

第三,对多租户架构的支持。SaaS 平台需要支持多租户,OceanBase 的多副本和分布式架构能够有效地隔离租户数据,保证租户间的数据安全和隔离,为不同客户规模的租户灵活实现提供了很大方便。

“过去用 MySQL 的时候,这一点非常头疼,采用分库分表也是出于这个方面的考虑。”庄建超说。

第四,对分析能力的支持。之所以此前使用 XDB 就是为了满足数据分析的需求,现在一个 OceanBase,TP、AP 同时都可以满足,不再需要进行数据同步,成本下降,运维也变得简单。

庄建超表示,接下来三维家将继续优化 OceanBase,同时,还会进行多基础设施部署,进一步实现多活。OceanBase 支持多基础设施部署,这为三维家提供更多便利。

另外,庄建超还透露,他对向量数据库非常感兴趣,因为三维家正在研发自己的知识库。“听说 OceanBase 正在研究这个功能,如果未来 OceanBase 能支持向量,我们搭建知识库的工作就会简单许多,将为我们业务开展带来很大方便。”庄建超说。


特别感谢徐戟(白鳝)对本期《DB 大咖说》的特别支持。徐戟老师是业内资深 Oracle 数据库优化专家,南京基石数据的 CTO,在数据库领域深耕 20 余年。同时,也是知名科技公众号《白鳝的洞穴》主理人,热衷于分享他在数据库方面的多面见解。

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

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

相关文章

IDEA Debug 断点

今天在工作发现有些新入职的小伙伴们,在调试程序时不是很会正确使用IDEA所提供Breakpoints(断点),这里就简单的介绍下比较常用的功能。 快捷键: 切换行断点:Ctrl F8 编辑断点属性:Ctrl Shift F8 断点的类型 行断点&am…

数据质量管理-可访问性管理

前情提要 根据GB/T 36344-2018《信息技术 数据质量评价指标》的标准文档,当前数据质量评价指标框架中包含6评价指标,在实际的数据治理过程中,存在一个关联性指标。7个指标中存在4个定性指标,3个定量指标; 定性指标&am…

文献阅读:逆行病毒示踪剂之间的神经嗜性和神经毒性的差异

文献介绍 文献题目: Differences in neurotropism and neurotoxicity among retrograde viral tracers 研究团队: 曹罡(华中农业大学)、戴金霞(华中农业大学) 发表时间: 2019-02-08 发表期刊&…

cefsharp(winform)默认菜单/自定义菜单/二级菜单定义方法

一、有关cefsharp(winform)菜单定义 接口:IContextMenuHandler 菜单:OnBeforeContextMenu 命令:OnContextMenuCommand void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters,…

智慧公厕系统改变了人们对服务区公厕的看法

在过去,服务区公厕常常给人留下脏乱差的印象,成为人们在长途旅行途中不愿停留的地方。然而,随着智慧科技的不断发展和应用,智慧公厕系统的出现改变了人们对服务区公厕的看法,为公共卫生设施的提升注入了新的活力。 一、…

常见反爬及应对

一,特殊混淆的还原 1.1 还原 AAEncode 与 JJEncode AAEncode是一种JavaScript代码混淆算法,利用它,可以将代码转换成 颜文字 表示的JavaScript代码。 去掉代码最后的 (‘‘),这是函数的自调用,去除后就是函数的声明…

嵌入式存储介质之SD卡基础知识记录

嵌入式存储介质之SD卡 SD卡简介: SD卡(Secure Digital Card,安全数字卡)是一种广泛应用的可移除存储设备,主要用于存储各种数字信息,如照片、视频、音乐和文档等。SD卡由SD协会(Secure Digita…

Golang 开发实战day15 - Input info

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 Golang 开发实战day15 - 用户…

SSM学习3:注解开发定义bean、纯注解开发模式、注解开发依赖注入、注解开发管理第三方bean

注解开发定义bean 使用注解加载bena applicationContext.xml 配置组件扫描 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:context"http://www.springframework.o…

Linux文件管理:文件扩展属性 chattr lsattr 命令详解

目录 chattr命令常用参数属性选项完整的支持的属性选项 使用案例 lsattr命令常用参数使用案例 结合使用chattr和lsattr 在Linux系统中&#xff0c;文件属性决定了文件的可见性、可读性、可写性等特性。chattr和lsattr是两个用于管理文件系统属性的重要工具。 它们可以帮助用户保…

STM32智能家居掌上屏实战:从WiFi连接到MQTT通信,打造你的家庭物联网网关

摘要: 本文深入探讨一种基于STM32的智能家居掌上屏设计方案&#xff0c;详细阐述其硬件架构、软件设计以及通信协议等关键技术细节。该方案利用WiFi构建局域网&#xff0c;实现与各类传感器、执行器的便捷交互&#xff0c;并通过TFT彩屏提供直观的控制和数据展示&#xff0c;旨…

数组-二分查找

二分查找 leetcode704 /*** param {number[]} nums* param {number} target* return {number}*/ var search function(nums, target) {let left 0, right nums.length - 1;while (left < right) {const mid Math.floor((right - left) / 2) left;const num nums[mid]…

深入理解ThreadLocal原理

以下内容首发于我的个人网站&#xff0c;来这里看更舒适&#xff1a;https://riun.xyz/work/9898775 ThreadLocal是一种用于实现线程局部变量的机制&#xff0c;它允许每个线程有自己独立的变量&#xff0c;从而达到了线程数据隔离的目的。 基于JDK8 使用 通常在项目中是这样…

仅1月出刊:计算机科学类知网检索普刊

【欧亚科睿学术】 Journal of Computer Science and Electrical Engineering 《计算机科学与电气工程杂志》是一份同行评审期刊&#xff0c;发表计算机科学和电气工程几个领域的原创研究文章和综述文章。 它由UPUBSCIENCE出版社出版。它支持开放获取政策&#xff0c;即让所有…

后台运行大师:HarmonyOS 3.0中如何轻松设置APP常驻后台

有不少人想要让某些常用的APP直接挂在后台&#xff0c;减少应用程序自动关闭的情况。这种需求&#xff0c;其实就是希望APP能够“保持在后台运行”。 本篇文章用14张图片、7大步骤&#xff0c;讲解手机如何将某个APP保持在后台运行。图片直接使用的是华为手机HarmonyOS 3.0的手…

Verilog开源项目——百兆以太网交换机(五)TCAM单元设计

Verilog开源项目——百兆以太网交换机&#xff08;五&#xff09;TCAM单元设计 &#x1f508;声明&#xff1a;未经作者允许&#xff0c;禁止转载 &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN主页 &#x1f511;全新原创以太网交换机项目&#xff0c;Blog内容将聚焦整体架…

iptables防火墙详解、相关命令示例

目录 Linux包过滤防火墙 包过滤的工作层次 iptables的链结构 规则链 默认包括5中规则链&#xff08;对数据包控制的时机&#xff09; iptables的表结构 规则表 默认包括4个规则表 数据包过滤的匹配流程 规则表之间的顺序 规则链之间的顺序 规则链内的匹配顺序 匹配…

加装德国进口高精度主轴 智能手机壳「高质量高效率」钻孔铣槽

在当前高度智能化的社会背景下&#xff0c;智能手机早已成为人们生活、工作的必备品&#xff0c;智能手机壳作市场需求量巨大。智能手机壳的加工过程涉及多个环节&#xff0c;包括钻孔和铣槽等。钻孔要求精度高、孔位准确&#xff0c;而铣槽则需要保证槽位规整、深度适宜。这些…

stm32学习笔记---USART串口外设(理论部分)

目录 USART简介 USART的框图 串口的引脚 USART的基本结构 数据帧 起始位侦测 数据采样 波特率发生器 USD转串口模块的原理图 声明&#xff1a;本专栏是本人跟着B站江科大的视频的学习过程中记录下来的笔记&#xff0c;我之所以记录下来是为了方便自己日后复习。如果你…

python实现简单的三维建模学习记录

课程来源与蓝桥云课Python 实现三维建模工具_Python - 蓝桥云课和500 Lines or LessA 3D Modeller 说明 个人估计这是一个值得花一个礼拜左右时间去琢磨的一个小项目。上述网址中的代码直接拿来不一定能跑&#xff0c;需要后期自己去修改甚至在上面继续优化&#xff0c;会在其…