首页 > 其他分享 >百词斩CTO:核心学习记录库上云,存储空间节省80%,运维效率提升|OceanBase DB大咖说 (十四)

百词斩CTO:核心学习记录库上云,存储空间节省80%,运维效率提升|OceanBase DB大咖说 (十四)

时间:2024-10-15 16:20:27浏览次数:3  
标签:运维 OceanBase 数据库 DB OB 百词 节点 Cloud 敬宓

图片

OceanBase《DB大咖说》第 14 期,我们邀请到了百词斩的首席技术官敬宓作为嘉宾。

百词斩是一款专为英语学习设计的“图背单词”应用,满足不同年龄段和英语水平的用户需求,旨在让单词记忆变得有趣。

敬宓是一位资深的技术专家,曾在百度、迅雷等公司任职,对分布式架构、数据库等领域拥有深厚的研究背景。他长期致力于复杂软件系统的开发与设计,养成了重视测试与验证的工作习惯。这一习惯在他担任百词斩CTO期间仍然持之以恒,并在百词斩从MySQL数据库迁移到OB Cloud云数据库(简称OB Cloud)的升级过程中得到了体现。

谨慎的选型、全面的测试和周密的准备为迁移工作的顺利完成提供了充分保障,本期访谈敬宓分享了百词斩如何将拥有 30 个节点的 MySQL 数据库迁移到 OB Cloud 云数据库(以下简称 OB Cloud)的完整成长过程。

2012 年,百词斩正式上线,至今用户累计已超过 2 亿。对于这样一款用户过亿的互联网流行 APP,要保证用户的使用体验并非易事。百词斩不仅要保证用户随时随地能上线开始英语学习,同时,还要记录用户的每一次上线学习过程,包括选择了哪本词书、学习了哪些词汇、有哪些词汇需要复习等。而这些数据就保存在一个名为学习记录的核心数据库中。

随着用户的增长,学习记录数据库一直在不断扩容,如今已经保存了 2 亿多用户的学习数据,节点数达到了 30 个。2024 年初,百词斩决定对该数据库进行替换升级——从 MySQL 迁移到 OB Cloud,将节点数从 30 个减少为 3 个,最终实现成本节省 20%-30%,同时还改变了此前高度依赖人工扩缩容的方式,大大提升了运维效率,为百词斩进一步降本提效和业务创新提供了充分的保障。

1、业务持续增长,扩容压力不堪重负

在百词斩的众多数据库中,学习记录的数据库是最为核心的业务数据库之一,也是百词斩数据量最大的一个数据库,它需要记录所有用户的全部学习过程。伴随着用户持续上线学习和新用户的不断增加,百词斩的数据库数据量和节点数的持续剧增。

“百词斩诞生在 2011 年,作为一个互联网 APP,我们选择的也都是当时主流的技术栈。MySQL 当时在互联网公司非常流行,所以学习记录系统的数据库选的也是 MySQL。”百词斩 CTO 敬宓表示。

敬宓是一位技术大咖,曾在百度、迅雷等多家公司从事软件开发和架构设计工作。2021 年进入百词斩,全面负责公司的技术工作,包括基础架构的搭建、云服务的改进和优化以及 AI、多基础设施等新技术的探索。

“因为数据量一直在增长,我们的数据库节点数一直在增加。前两年因为线上学习业务的兴起,百词斩学习记录等核心业务增长很快,每年需要新增 3-4 个节点。”敬宓说。

百词斩的系统部署在公有云上,数据库采用的也是云服务商的 MySQL RDS 服务,其最大数据存储量为 3TB 左右,当数据量增加到超过节点最大承载能力时就要扩容。对于新增用户,扩容比较容易,直接路由到新的节点就可以了。但对于老用户的数据,扩容相对就比较麻烦,此时需要对旧数据重新进行分片,过去完全靠 DBA 的经验人工来完成。随着业务的发展,到目前为止这个数据库的节点数已经扩展到 30 个。这个办法越来越难以继续了。

第一,要保证如此多的节点都正常运行、不宕机,非常不容易。尽管当今云服务商的基础设施已经非常好了,但仍然有可能因为软硬件等各方面的原因,让设备宕机,一旦一个节点宕机会直接影响业务的正常进行,这个系统的维护和容灾、备份都带来相当大的压力。

第二,人工拆库拆表需要付出很高的人力成本。比如,需要去监控哪些节点快要达到上限了,然后在快要达到上限之前赶紧把这个节点上的数据分开,运维成本很高。同时,开发成本也很高,因为开发人员需要知道到哪个节点去读取数据。

第三,从技术上的角度上来说,这种单纯靠手工做数据的分布式部署不是真正的分布式解决方案。

“因为通过人工去进行数据的分布经常会出现这样的问题:虽然拆分出来的节点满足了数据的分布式部署需求,但是各个节点它的冷热是不均匀的。比如,因新增节点上通常是新用户或者是最近很活跃的用户在使用,压力会很大,即使人为地做些优化,也不能做到动态的平衡,很容易会出现压力不均的情况,很难解决。”敬宓说。

另外,大量的独立 RDS 导致与大数据平台的数据进行同步时需要创建大量的 DTS 同步链路,同步链路的运维复杂度和成本随着 RDS 实例数的日渐增多变得居高不下。

2、充分测试,稳定迁移

去年 7 月,不堪数据运维压力的百词斩决定做出改变。在敬宓看来,要改变这种纯手工进行数据分布式部署的被动局面,采用分布式数据库进行升级是一个不错的选择。在百度工作期间,敬宓曾参加了一个分布式数据库的研发,这就是后来的开源项目 Apache Doris 的前身,可以说他本人对于分布式数据库技术非常了解。因此,百词斩很快就明确了要选一款可靠的分布式数据库。

敬宓透露,百词斩其实早在前两年线上教育爆发期间就有了更换数据库的想法,只是当时业务发展太快、有太多更紧迫的工作要做,直到去年 7 月才腾出精力来着手进行数据库的升级。

不过,市场上分布式数据库厂商很多,要从中选出一款合适自己的也不是一个很容易做出的决策。从去年 7 月份开始,针对公司业务的需求特点,百词斩进行了近两个月的市场调研和验证,还和一些厂商做了沟通,最后初步选定了 OB Cloud。

“选择 OB Cloud 的根本原因是它非常适配我们的需求,比如,OB Cloud 的高数据压缩比、其计算能力等比较适应我们的应用场景。而且它有很多成功的应用案例,这些案例的最终实施效果都非常好。”敬宓介绍。

另外,在与 OceanBase 沟通、进行产品验证期间,OceanBase 团队的配合度和支持度很高,双方的沟通非常顺畅,这也成为百词斩最终决定选择 OceanBase 的一个重要因素。

初步敲定了 OB Cloud 以后,百词斩并没有立马启动数据库的迁移工作,而是进行了长达近 3 个月的测试,最后才最终敲定选择 OB Cloud。敬宓说,在这 3 个月期间,百词斩做了充分的测试。为了尽可能准备适配实际应用场景,百词斩要求测试数据量要达到总数据量的 1/10。

“我们搭建起来 3 个节点的一个集群,测试数据达到 TB 级。我们几乎测试了各种场景的数据库性能,如大批量写入、大批量读出,以及故障恢复能力。比如,我们测试了突然关掉一个节点和网络突然中断等各种极端的情形下数据库的表现。”敬宓说。

测试内容还包括数据库的计算能力、数据库的接口和易用性等。正是因为百词斩的测试非常充分,所以后来真正开始进行数据库的升级替换时就非常顺利。从今年 1 月份百词斩正式开始进行数据库的迁移,通常是每两周迁移一次,一次 2 个节点,到后期节点数逐渐增加,到今年 6 月底基本完成全部节点迁移。

“在迁移之前我们做了充分的准备,针对正常的使用情况进行模拟,所以后面的工作很顺利。而且,趁这个机会,我们还把这个已经有 10 年以上历史的程序代码进行了一次梳理,部分进行精简和重构。”敬宓说。

3、降本提效,收益立竿见影

随着学习记录数据库逐步完成向 OB Cloud 的迁移,新数据库的好处也逐渐体现出来。

首先是大大简化了数据库的管理工作。比如,数据库节点数得到大幅减少,从原来的 30 个节点减少到现在的 3 个节点。同时,数据的存储空间也得到大幅节约。“OB Cloud 的压缩比很高,迁移后,OB Cloud 的数据占用的存储空间不到原来的 1/5。”敬宓介绍。

随着节点数的减少,百词斩的数据库成本也得到明显降低。敬宓介绍,数据库的成本大约降低了 20-30%。而且这种成本的节省还是留有充分余地的情况下。比如,现在 3 个节点的算力和存储空间都预留了不少的增长空间。

除此外,DBA 工作压力也得到很大程度缓解。DBA 不再需要时刻盯着数据库,一旦发现临近阈值,就要马上要准备扩容。在此前人工进行扩容时,需要 DBA 去安排数据如何在不同节点之间的分配,这个工作不仅要了解业务,还对 DBA 的以往经验要求非常高。如今,数据的分片工作都由 OB Cloud 自动完成,运维效率大幅提升。

数据库的替换升级还带来另一个好处是,系统的可扩展性得到改善。存储不再与计算资源规格强绑定,30C 集群规格可存储对等 RDS 200T 的数据容量。

敬宓介绍,此次学习记录数据库顺利完成迁移,让百词斩对 OceanBase 有了更为全面和深入的了解,也为将来其他数据库的迁移积累了宝贵的经验。现在,百词斩正在评估其他一些业务的数据库是否要迁移。一些新业务在设计时,OceanBase 数据库也成为首选。

4、写在最后

当前,百词斩还在探索 OceanBase 的更多能力,如 AI 和 HTAP 等能力如何在未来为百词斩的业务赋能。从很多常规的数据库运维工作中解脱出来的 DBA,也有了更多精力可以来做这些探索。

“今天,业务对数据库的诉求越来越多,作为 DBA 应该将更多精力向业务倾斜,参与到数据架构的设计和数据的治理当中,参与到系统的架构设计当中。在理解工作发展方向和战略的前提下,帮助公司进行数据方面的规划,也能让 DBA 的职业边界大幅拓宽,在职场发展中更有竞争力。”敬宓说。


惊 喜 预 告!

10 月 23 日,2024 OceanBase 年度发布会将在北京望京凯悦酒店举办,届时百词斩 CTO 敬宓将来到现场分享 OB Cloud 在百词斩的最佳实践,欢迎感兴趣的小伙伴报名参会~

标签:运维,OceanBase,数据库,DB,OB,百词,节点,Cloud,敬宓
From: https://blog.csdn.net/OceanBaseGFBK/article/details/142863046

相关文章

  • Docker镜像仓库关闭:运维的无奈与吐槽
    近期,国内外多个Docker镜像仓库陆续发布停止服务的公告,这对于广大依赖Docker进行开发、部署的运维人员来说,无疑是一场突如其来的噩梦。原本顺畅的镜像拉取流程,如今却变得异常艰难,让人不禁要问:这究竟是怎么了?事情的起因似乎可以追溯到一段时间前,中国科学技术大学(中科大)的Docker......
  • 运维技巧(9):删除和恢复已删除的邮箱
    运维技巧(9):删除和恢复已删除的邮箱恢复的邮箱已经不再是之前原用户邮箱。因为在删除邮箱时,原有AD用户已经被删除,即使新建同名用户再将之前的邮箱恢复给新用户,那也是不同的用户。最佳实践:建议使用禁用邮箱的功能。能否恢复已经删除掉的邮箱,取决于组织对已删除邮箱的保留期的设置,默......
  • 运维技巧(4):管理邮箱收发附件限制(精华)
    运维技巧(4):管理邮箱收发附件限制(精华)进行收发邮件大小的限制是很有必要的,因为邮件服务器不能当作文件服务器来使用,不符合最佳实践的要求,也不合理。太大的附件可以通过网盘或者大附件共享的方式进行发送。exchange使用的是ESE的数据库,在不进行脱机整理的情况下,很难自动减小空间,如......
  • Wildberries(野莓)俄罗斯知名电商平台介绍,卖家获取,获客经验大放送(插件版)
    Wildberries(野莓)是俄罗斯的一个知名电商平台,以下是对其的详细介绍:一、公司概况成立时间与地点:Wildberries成立于2004年,总部位于俄罗斯莫斯科。创始人:由正在休产假的教师TatianaBakalchuck(塔季扬娜·巴卡尔丘克)创立,她现已成为俄罗斯第一位白手起家的女性亿万富翁。二、......
  • 收下这份Docker命令备忘录,Linux运维早下班!
    本文给大家分享Docker的命令备忘录,希望对做运维的小伙伴有所帮助!1.Docker简介Docker是一个开源平台,旨在帮助开发人员和运维人员通过容器技术加速应用的开发、测试和部署。它提供了轻量级的隔离环境,使应用程序及其依赖能够快速打包并运行在任何环境中。Docker的核心组......
  • GCC 编译器 与 GDB 调试器的基本操作
    一、GCC编译器1.什么是GCCGCC是GNUCompilerCollection(GNU编译器套装)的简称,目前GCC可以支持C,C++,ADA,JAVA,Fortran,PASCAL等多种高级语言。支持主流的CPU平台,完成从源程序向特定CPU硬件平台上自标代码的转换。2.GCC编译流程2.1方法一:四步完成编译1)预处理对......
  • 运维工程师的出路在哪里,尤其是 35 岁以后?零基础入门到精通,收藏这篇就够了
    很多人都在提35岁职场危机,但我想分享的是,对于运维人员来说,35岁以后仍然有很多出路和发展机会。结合目前市场发展情况,35+的运维出路真的还是有几大方向选择的。第一个是,云原生和DevOps:随着云计算和云原生技术的普及,运维人员可以转向云原生和DevOps领域。这些领域注重自动......
  • IT圈大实话!卷运维不如卷网络安全
    前言在刚刚过去的金九银十,我进行了多场网络安全的技术面试,我发现最近很多从事运维的选择了辞职,转行到了网络安全这个发展路线。说实话,运维工程师这个岗位在IT行业里面确实是处于最底层的,不管什么环节出现问题,基本都是运维背锅。,薪资水平也比不上别的岗位。一般运维的薪资......
  • Ribbon-Loadbalancer自定义负载均衡策略:本地优先+偏向服务器优先
    Ribbon核心顶层抽象packagecom.netflix.loadbalancer;publicinterfaceIRule{Serverchoose(Objectvar1);voidsetLoadBalancer(ILoadBalancervar1);ILoadBalancergetLoadBalancer();}继承IRule实现choose方法默认实现我们这里说明现有的集......
  • DBPM: 增强时间序列对比学习:一种动态坏对挖掘方法《Towards Enhancing Time Series Co
    今天是2024年10月12日,思路枯竭,还是论文看的太少了,继续看论文.论文:TowardsEnhancingTimeSeriesContrastiveLearning:ADynamicBadPairMiningApproach或者是:TowardsEnhancingTimeSeriesContrastiveLearning:ADynamicBadPairMiningApproachGitHub:https://git......