映宇宙:多基础设施下,如何进行数据库选型升级|OceanBase 《DB大咖说》(五)

本文主要是介绍映宇宙:多基础设施下,如何进行数据库选型升级|OceanBase 《DB大咖说》(五),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随着多基础设施成为行业发展的主流趋势,数据库选型时需要考虑哪些关键因素?对于云数据库的升级策略,又该如何制定?OceanBase《DB 大咖说》第五期特别邀请了映宇宙(原映客)的数据库负责人赵智博先生,做为一位资深的DBA专家,在数据库运维方面有超过 10 年的经验,他将分享他在此领域的丰富经验。

2022 年 6 月,映客宣布更名为「映宇宙」,英文名 Inkeverse 是 Inke 与Metaverse的结合,体现了集团全新战略方向:进一步走向海外,将现有产品矩阵和元宇宙相结合,进行社交升级打造覆盖更多场景的多维互动社交体系。在全新的业务规划下,23年 4 月份,映宇宙开始对国内、国外所使用的数据库进行全面升级,赵智博是该项目主要的技术负责人之一。

1702026181

赵智博在 2023 OceanBase 产品发布会进行分享

随着映宇宙业务种类的多元化和经营范围的不断扩展,业务对后台系统提出了更高的要求。数据库作为后台系统的核心软件,面临越来越大的挑战,对数据库进行升级和替换由此进入了映宇宙管理者的议事日程。

一、成本不断攀升,数据库面临升级需求

作为一家互联网企业,映宇宙的系统基本都搭建在云上。由于不同业务有着不同的需求,映宇宙与多个云服务商开展合作。比如,在国内市场有阿里云、腾讯云、火山引擎云,在国外则有 AWS 和谷歌云等。

映宇宙在数据库的部署上也非常多样化,包括 MySQL、MongoDB、Redis、ClickHouse 数据仓库等等。多样化的选择使得技术栈变得复杂,成本攀升的同时,也给映宇宙的数据库运维带来了巨大挑战。

映宇宙国内业务系统的 MySQL 有数十套之多,先后部署了 10 多个集群,有 2000 多个实例。由于业务种类多,选择的 MySQL 服务的模式也有各有不同,有购买云服务器实例后自建的,也有选择云服务商的 RDS 版本。随着业务的增长,成本上升很快。特别是,一些业务(如直播业务)涉及资金的交易,需要高可用、高稳定,因而选择的是金融级 MySQL 的 RDS,其成本也就比普通 RDS 贵得多。

“直播业务是我们的核心业务,所使用的 MySQL 数据库集群规模比较大,对服务的稳定要求比较高,因此选了金融级的数据库云服务。”映宇宙数据库负责人赵智博说。

而社交类产品数据库面临的挑战又有不同。社交类业务对可用性、稳定性容忍度要高一些,普通 MySQL RDS 也可以满足需求,但这类业务数据量非常大,存储成本很高。同时,数据量太大还导致数据搜索和读取变慢,影响到了用户体验,集团只得单独购买了数据库实例用作只读节点,成本也相应地增加了。

在海外市场,映宇宙还面临着数据库的技术支持问题。由于映宇宙研发团队在国内,与国外的数据库技术支持团队之间的沟通不太方便。如果有问题,只能通过邮件或者电话来解决,响应的及时性和国内有不小的区别。同时,还有扩缩容的延迟问题,映宇宙的业务流量变化很快,扩缩容很频繁,而国外的数据库每次扩缩容会有 10 秒以上的延迟,而且成本也明显更高。

另外,映宇宙同时面对多个云服务商,不同的数据库分散了运维、升级精力。搭建统一的数据库,简化软件栈,实现统一的监控和运维,这也是映宇宙希望实现的目标。

二、稳定、低TCO、不挑基础设施,敲定 OceanBase

“既要满足海量数据的管理需求,并且成本降低,还要能满足高稳定、高可靠、统一运维,这是映宇宙对数据库的总体要求。”赵智博说。基于这样的要求公司从去年开始考察和评估各种数据库,并为此做了大量调研和测试,直到今年4月份才最后敲定 OceanBase。 

赵智博介绍说,选择 OceanBase 首先一个原因是 OceanBase 有很厚的技术积淀,已经有很多的成功案例,要比其他数据库更让人放心。因此,一直在关注它。早在 OceanBase 宣布开源时,映宇宙就在内部开始试用,还专门进行过压测,并和同类产品进行过对比,OceanBase 的表现都令他们很满意。

当然,真正决定要选 OceanBase 的原因还是在于 OceanBase 稳定性更好,同时能明显降低使用成本。

OceanBase 是分布式数据库,其分布式架构、多副本的特性使其可靠性和可用性都能得到很好的保证,不需额外支付费用就具备金融级 MySQL 的高可靠和高可用性,从而在成本上可以得到节约。同时,OceanBase 的分布式架构中可以很简单地增加节点,而无需单独购买只读节点,简化了运维,成本上也降低了40%-50%。

存储空间上的节省也是映宇宙非常认可的。集团的社交类业务面对海量的用户,数据量非常惊人,成本压力很大,而 OceanBase 在数据存储上采用了专门的压缩技术,最多能节约 2/3 的存储空间,成本优势非常明显。

另外,OceanBase 的云服务——OB Cloud 云数据库在阿里云、腾讯云和国外的 AWS 等主流云上都有部署。这就意味着,可以获得更简便、直接、统一的运维、管理、升级体验。“选择 OceanBase 可以在多基础设施架构下实现统一的技术栈,这也是我们最后选 OceanBase 的一个很重要的因素。”赵智博表示。

三、精心规划,顺利迁移

要真正使用上 OceanBase,还需要获得公司业务线的支持。要做到这一步并不容易,因为业务部门与运维部门视角有些不一样。赵智博介绍,虽然尽快降低成本、提高稳定性对业务部门也有吸引力,但业务部门其实更关心稳定性,这是进行一切操作的前提。

“毕竟,OceanBase 是一个新生事物,虽然我们对它比较熟悉,但业务线不一定熟悉,因而会有担心、会不信任,不同意也是可以理解的。”赵智博表示。

赵智博说,需要尽可能做好准备工作,包括充分验证和测试,然后从相对边缘的业务开始,逐步让业务线建立起对新的数据库的信心。

比如,映宇宙早在去年 9 月的时候就开始试用 OceanBase,当时 OceanBase 还是 3.2 版本。例如有一个实例上的单表超过 60 万行,采用 OceanBase 后对内存的需求甚至超过了原来的 MySQL。一直等到今年 4 月份,OceanBase出新版,经过验证对一个实例上的单表支持能力超过 100 万,才准备真正迁移。后来,在迁移时和业务部门商量,对大表进行了归档,将表规模控制在 12 万行。

经过确认OceanBase在功能和性能方面都符合映宇宙的需求之后,下一步就是制订迁移规划。

赵智博介绍,在迁移前他们会进行仔细地调研和规划。因为 OB Cloud 是按节点来申请的,价格根据核心数量、内存和存储大小而有不同。比如,OceanBase 最常用的节点规格为 8c,而很少有一个数据库就能跑满一个实例,因此需要规划哪几个数据库共用这一个实例。

为了充分利用资源,同时确保稳定性,在规划中还要尽量让业务量大的和业务量小搭配,以避免资源的争抢。另外,迁移之后,还需要进行两个数据库双跑一段时间,只有确认数据没有问题才算正式完成迁移。所有这些都需要提前规划。

不过,对于常见的因数据库的更换需要对应用程序改造这个挑战,在映宇宙没有成为太大的问题。映宇宙的核心业务所使用的 MySQL 5.6 版本,而 OceanBase 在这个 MySQL 版本的兼容上做得非常好,映宇宙绝大部分应用程序只需要更改下SQL Model 就可以非常平滑地迁移过来。

赵智博说,这与映宇宙在研发上有着相对规范的开发要求和发布流程有一定关系。在公司内部,对与数据库有关的 SQL 语句编写有明确的规范,避免采用数据库专有的特色能力和函数,否则无法上线发布,目的就是尽量减少后期因数据库变更要改写程序。

当然,对于数据库更换这么重大的一个工程,麻烦总还是会有的。赵智博介绍说,麻烦主要是在后期的运营中。比如,曾发生过由于数据库中的某些逻辑判断不合理,引发读放大,从而导致只读节点响应延迟,但后来 OceanBase 做了紧急修复很快解决了,还有系统参数的调优以及多版本的验证等问题也都在 OceanBase 技术人员的帮助下迅速得到解决。

由于前期准备充分,整个项目进展得很顺利,从今年 4 月份映宇宙开始真正开始着手进行多个系统数据库的迁移,借助 OceanBase 的数据迁移工具 OMS 和运维管理工具 OCP,今年 5 月份,映宇宙国内的数据库系统已经基本完成,国外由于产品线相对复杂,还在稳步推进之中。迁移后,目前所有业务系统运行稳定,成本和性能相比之前均有明显提升。

随着数据库迁移工作的顺利推进,赵智博开始把关注点落到 OceanBase 数据库功能的利用上。赵智博表示,Serverless 是他很感兴趣的方面之一。由于映宇宙的业务具有明显的波峰波谷特性,尤其是直播业务,时常因某个明星或者某个热点而爆火,从而形成很大的瞬时压力。这种业务特征非常适合采用 Serverless,因此,他也正在评估和学习,希望为映宇宙引入Serverless 做好准备。

写在最后:

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

这篇关于映宇宙:多基础设施下,如何进行数据库选型升级|OceanBase 《DB大咖说》(五)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039624

相关文章

mysql索引四(组合索引)

单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引;组合索引,即一个索引包含多个列。 因为有事,下面内容全部转自:https://www.cnblogs.com/farmer-cabbage/p/5793589.html 为了形象地对比单列索引和组合索引,为表添加多个字段:    CREATE TABLE mytable( ID INT NOT NULL, use

mysql索引三(全文索引)

前面分别介绍了mysql索引一(普通索引)、mysql索引二(唯一索引)。 本文学习mysql全文索引。 全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用【分词技术】等多种算法智能分析出文本文字中关键词的频率和重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。 在MySql中,创建全文索引相对比较简单。例如:我们有一个文章表(article),其中有主键ID(

mysql索引二(唯一索引)

前文中介绍了MySQL中普通索引用法,和没有索引的区别。mysql索引一(普通索引) 下面学习一下唯一索引。 创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复。唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该使用关键字UNIQUE,把它定义为一个唯一索引。 添加数据库唯一索引的几种

mysql索引一(普通索引)

mysql的索引分为两大类,聚簇索引、非聚簇索引。聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引则不同。聚簇索引能够提高多行检索的速度、非聚簇索引则对单行检索的速度很快。         在这两大类的索引类型下,还可以降索引分为4个小类型:         1,普通索引:最基本的索引,没有任何限制,是我们经常使用到的索引。         2,唯一索引:与普通索引

持久层 技术选型如何决策?JPA,Hibernate,ibatis(mybatis)

转自:http://t.51jdy.cn/thread-259-1-1.html 持久层 是一个项目 后台 最重要的部分。他直接 决定了 数据读写的性能,业务编写的复杂度,数据结构(对象结构)等问题。 因此 架构师在考虑 使用那个持久层框架的时候 要考虑清楚。 选择的 标准: 1,项目的场景。 2,团队的技能掌握情况。 3,开发周期(开发效率)。 传统的 业务系统,通常业

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

关于如何更好管理好数据库的一点思考

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈

数据库期末复习知识点

A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

给数据库的表添加字段

周五有一个需求是这样的: 原来数据库有一个表B,现在需要添加一个字段C,我把代码中增删改查部分进行了修改, 比如insert中也添入了字段C。 但没有考虑到一个问题,数据库的兼容性。因为之前的版本已经投入使用了,再升级的话,需要进行兼容处理,当时脑子都蒙了,转不过来,后来同事解决了这个问题。 现在想想,思路就是,把数据库的表结构存入文件中,如xxx.sql 实时更新该文件: CREAT