暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

百词斩CTO敬宓:5个月实现核心学习数据库云端迁移,存储空间优化达80% | DB大咖说

原创 OceanBase数据库 2024-10-10
392

百词斩是一款针对英语学习开发的“图背单词”APP,覆盖全年龄段英语水平和学习需求,致力于让记单词成为一种乐趣。《DB 大咖说》第 14 期邀请到了百词斩 CTO 敬宓。


他是一名非常资深的技术专家,先后在百度、迅雷等公司工作过,对于分布式架构、数据库等领域有着非常深入的研究。长期从事复杂软件系统开发和设计,培养了他非常重视测试和验证的工作习惯。这一工作习惯到他担任百词斩 CTO 也一直坚持,也体现在百词斩从 MySQL 数据库迁移到 OB Cloud 云数据库(以下简称 OB Cloud)替换升级过程当中。


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


百词斩,由成都终身成长科技有限公司匠心打造,是一款专为英语单词学习设计的APP。它巧妙运用图片记忆法,将英语单词学习变得生动有趣,有效解决了英语单词记忆难题,并在外语学习类APP中持续领跑,用户活跃度稳居榜首多年。自2012年面世以来,百词斩已累积超过2亿用户。


对于这样一款拥有庞大用户基础的热门互联网APP,确保卓越的用户体验是一项艰巨挑战。百词斩不仅需确保用户能随时随地接入英语学习之旅,还需精准记录每位用户的每一次学习足迹,涵盖所选词书、学习词汇及待复习词汇等关键信息,这些信息均存储在一个核心数据库中,即学习记录库。


随着用户规模的不断膨胀,学习记录数据库持续扩容,现已累积了2亿多用户的学习数据,涵盖30个节点。步入2024年,百词斩决定对这一核心数据库进行革新升级,从MySQL系统迁移到OB Cloud平台,并成功将节点数量精简至3个。此举不仅实现了20%-30%的成本节约,还摒弃了以往高度依赖人工进行扩缩容的传统方式,显著提升了运维效率,为百词斩深化成本控制、提升运营效率及推动业务创新奠定了坚实基础。

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

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


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


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


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


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


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


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


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


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


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

二、充分测试,稳定迁移

去年 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 年以上历史的程序代码进行了一次梳理,部分进行精简和重构。”敬宓说。

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

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


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


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


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


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


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

四、写在最后

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


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

最后修改时间:2024-10-19 14:28:22
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论