客户说|知乎核心业务MongoDB集群的平滑上云迁移实践

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 全程业务0故障平滑迁移

01.知乎安全反作弊业务数据特点

知乎作为中文互联网上以高质量内容著称的头部社区,其持续健康发展离不开一套严格的安全反作弊审核机制。为了确保内容的质量和提升用户体验,知乎的安全反作弊系统能够高效检测出自动生成的内容、无意义的评论以及异常账号活动等可疑行为,从而有效保护社区免受垃圾信息和恶意行为的侵害。


面对每天海量且结构复杂多变的数据,知乎安全反作弊系统需要进行实时深入分析。为此,知乎选择了MongoDB数据库来存储这些数据。MongoDB以其灵活的JSON数据结构和强大的分布式扩展能力,能够很好地应对数据结构的变化和存储容量的增长需求。


此外,根据数据的时效性和处理场景的不同,知乎将数据分为“热数据”和“温数据”,并分别存储在不同的MongoDB数据库集群中。通过ETL(提取、转换、加载)流程,实现数据与下游系统的无缝对接。MongoDB集群的稳定性对于整个安全反作弊系统至关重要,是保障知乎社区健康发展的坚实基础。

image.png

02.自运维MongoDB集群面临的挑战

随着知乎社区的蓬勃发展,帖子、评论和用户行为等数据量急剧增加,现有的基于服务器自建MongoDB集群的支持能力逐渐遇到瓶颈,给业务发展带来了隐患,其中主要面临以下四个问题:


▶︎ 存储空间快速上涨带来的持续节点扩容问题:业务的持续增长导致安全反作弊系统的存储需求不断增加,单台服务器的磁盘容量很快达到上限。为了应对这一挑战,需要频繁地手动增加集群节点,以扩展存储容量。


▶︎ 数据规则设置不合理导致的热点分片问题:当前集群通过人工打标签的方式,将不同操作类型和时间段的数据分配至相应的集群节点。然而,由于集群性能瓶颈,数据平衡速度较慢,导致实际数据分布与预期严重不均衡。大部分业务请求集中在少数几个分片上,形成了“热点分片”,进一步恶化了集群性能。


▶︎ 备份间隔越来越长,数据丢失风险大:为保障数据安全,知乎定期进行数据备份,以便在出现问题时能够迅速恢复。但随着数据量的增加,备份所需时间也随之延长,迫使知乎不得不减少备份频率,从最初的几天一次延长至几周一次,这大大增加了数据丢失的风险。


▶︎ 运维操作频繁,稳定性风险大:为解决上述数据存储和管理问题,知乎的运维团队每天需执行大量复杂的运维任务,如扩展集群、数据备份和恢复,以及手动调整数据分布等。这些工作不仅耗费了大量的时间和人力资源,还可能对系统的稳定性造成影响。


这些问题不仅制约了知乎安全反作弊系统的稳定,也对整个社区的健康运行构成了威胁。因此,优化现有的数据管理和存储方案,提升系统的稳定性和效率,已成为当务之急。

image.png

03.云上MongoDB服务最佳解决方案

为了解决自建MongoDB集群的各种技术痛点,知乎技术团队与阿里云技术专家进行了深入讨论,并提出了以下合理的解决方案:


▶︎ 解耦存储和计算资源,优化数据分布策略:为了更好地适应业务发展中存储和计算需求的不均衡增长,我们需要将存储和计算资源解耦。这样可以独立扩展存储和计算能力,避免因资源不匹配而导致的分片过度增长。针对当前数据分布不均衡的问题,建议从依赖标签规则的被动调度模式转变为高版本基于Chunk的主动预分片模式。在集群数据迁移过程中重新调整规则,以实现更优的数据分布。


▶︎ 快速灵活应对业务请求负载波动,确保实例性能稳定:通过对集群性能瓶颈的分析发现,关键性能指标主要集中在存储的IOPS(每秒输入/输出操作数)上。为了在业务高峰期间保持性能稳定,同时避免集群资源的闲置浪费,建议采用支持存储性能弹性伸缩的方案。这种方案允许我们在业务需求增加时快速提升存储的IOPS上限,而在业务低谷时则可以缩减,从而实现成本效益最大化。


▶︎ 基于快照备份保证备份恢复效率和数据的可靠性:目前自建集群采用的传统物理备份方法由于数据量和增量数据恢复速度的限制,已经无法满足知乎大规模数据体量的快速备份和恢复需求。建议转向基于云盘架构的快照备份模式来解决这个问题。此外,阿里云MongoDB数据库提供的高频备份能力,可以将备份频率从每日一次提升至每15分钟一次。结合实例、库、表、行等更细粒度的恢复能力,最大限度地保障了数据的安全性和备份恢复的性能。


综合上述讨论的升级方向,最终选择阿里云瑶池旗下的云数据库MongoDB的云盘版本(ESSD云盘+AutoPL弹性性能)和快照备份方案,替换现有的自建MongoDB集群。这一方案能够有效解决当前集群面临的各类技术痛点和风险问题,确保系统的稳定性和高效运行。

04.MongoDB迁移方案技术挑战

方案看起来很美,但如此大规模的集群平滑迁移并非易事。本次MongoDB集群上云的数据总容量达数百TB,并且支撑的安全反作弊业务对社区平台至关重要。在割接迁移环节,我们仅有分钟级的时间窗口,不容有失。针对这些挑战,项目团队基于以下几大迁移原则,制定了详细的迁移计划,确保迁移过程平稳可控:


迁移过程减少外部变量:安全反作弊数据库架构现有的上下游数据链路非常复杂。在迁移过程中引入新MongoDB集群和数据传输服务DTS时,如果割接顺序稍有不慎,可能会导致上下游数据不一致。因此,在迁移方案设计中,项目组将MongoDB集群迁移和ETL上下游链路切换分开到不同的割接窗口期,避免集中割接带来的复杂性和风险。


迁移同步速率灵活可控:由于集群数据规模庞大,对迁移速率的要求非常高。同时,需要时刻关注迁移速率对源库引入的额外负载压力,以避免生产问题。因此,迁移过程中的速率动态可调显得尤为重要。阿里云DTS数据同步工具支持无感升降配,实现了在保障源库不受影响的情况下最高数据同步速率。


迁移执行流程脚本化:割接操作不仅流程多,而且需要批量启停DTS数据同步任务。为了确保在分钟级的时间窗口内完成割接,项目组将关键操作全部脚本化。这样不仅大幅缩短了割接操作时间,将原本需要10~20分钟的人工操作提升到秒级自动操作,还能确保割接演练的所有动作可以在正式割接中1:1复现,避免人为事故的发生。


提前预演并做好紧急预案:稳定割接的前提是提前识别可预见的问题,并为不可预见的问题准备预案。我们在割接前对割接脚本进行了多次预演,事实证明预演是有效的。通过预演,我们识别了诸如MongoDB Driver连接串更新不生效等诸多潜在问题,避免了正式割接中的意外发生。此外,还准备了完善的回滚计划,以应对无法预知的突发事件。

05.迁移上云后的收益

整体迁移工作从启动到全部集群迁移完成耗时一个半月,历经四次关键割接,最终实现了全程业务0故障的平滑迁移。特别值得一提的是,对于这个拥有数十个分片、数据总量达数十TB、单表最大行数超过百亿的超大规模MongoDB集群,借助阿里云DTS数据传输服务仅用2天时间就完成了全量数据的同步任务。这一成就离不开知乎和阿里云双方技术团队的紧密配合,严谨地做好每一次方案设计和迁移验证工作。

image.png

资源成本节省:采用基于云原生架构搭建的阿里云MongoDB数据库分片集群架构,相比本地盘可以更灵活地进行计算资源和存储空间的配比,实现投入产出显著提升。


运维工作提效:通过一站式的云数据库管理平台,大大减少了运维人员的工作量。运维人员不再需要关注底层操作系统、基础软件等部署和基础维护工作,从而能够更加专注于核心业务。


技术难题解决:使用阿里云MongoDB数据库服务获得了阿里云数据库团队和MongoDB原厂联合的技术支持。不仅通过本次迁移解决了数据分布不均等历史难题,还为快速应对未来业务变化可能带来的新问题提供了新的技术保障能力。


高可用性提升:从自建单机房迁移到阿里云MongoDB数据库三可用区部署架构上,大幅提升了集群的容灾能力。同时,利用云数据库MongoDB的数据备份和恢复功能,进一步保障了数据的可靠性。

06.客户原声

知乎技术团队作为互联网行业内顶尖的技术团队,一直以来在开源技术圈内享有很高的技术口碑。本次项目是知乎多年来第一次将自己的核心业务系统,构建在公共云的云原生技术产品之上。


在MongoDB上云项目结束后,知乎数据库负责人代晓磊有感而发本次迁移上云的是公司最核心的业务之一,从第一次接触阿里云团队开始,整个项目过程中阿里云所展现的专业能力和负责态度,让我们非常放心。”这是对以稳定、高效、性能为核心指标的阿里云数据库产品,给予高度的肯定和鼓励。


👉点击了解 云数据库MongoDB 更多内容

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
2月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
2月前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。
|
2月前
|
NoSQL MongoDB 数据库
使用NimoShake将数据从AWS DynamoDB迁移至阿里云MongoDB
使用NimoShake将数据从AWS DynamoDB迁移至阿里云MongoDB
|
4月前
|
存储 NoSQL 算法
MongoDB保姆级指南(中):从副本集群、分片集群起航,探索分布式存储的趋势!
本文一起来聊聊MongoDB集群,顺带以MongoDB集群为起点,共同探讨一下分布式存储的发展趋势~
450 15
|
4月前
|
JSON NoSQL Ubuntu
在Ubuntu 14.04上如何备份、恢复和迁移MongoDB数据库
在Ubuntu 14.04上如何备份、恢复和迁移MongoDB数据库
103 1
|
4月前
|
NoSQL MongoDB 数据库
DTS 的惊天挑战:迁移海量 MongoDB 数据时,捍卫数据准确完整的生死之战!
【8月更文挑战第7天】在数字化时代,大数据量的MongoDB迁移至关重要。DTS(数据传输服务)通过全面的数据评估、可靠的传输机制(如事务保证一致性)、异常处理(如回滚或重试),以及迁移后的数据校验来确保数据准确无损。DTS还处理数据转换与映射,即使面对不同数据库结构也能保持数据完整性,为企业提供可靠的数据迁移解决方案。
73 2
|
5月前
|
DataWorks NoSQL fastjson
DataWorks操作报错合集之DataX进行MongoDB全量迁移的过程中,DataX的MongoDB Reader插件在初始化阶段找不到Fastjson 2.x版本的类库,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
自然语言处理 运维 NoSQL
MongoDB集群同步
实现 MongoDB Cluster-to-Cluster 即集群同步的工具是:mongosync 详情可参考如下官方文档: https://www.mongodb.com/zh-cn/docs/cluster-to-cluster-sync/current/quickstart/ 以上这个地址的文档一看就是机器翻译的,可能有不恰当的地方,但基本可参考使用。 以下是本次在某项目地配置集群同步的简要步骤,可参考使用。
95 6
|
4月前
|
存储 运维 NoSQL
轻松上手:逐步搭建你的高可用MongoDB集群(分片)
【8月更文挑战第13天】在数据激增的背景下,传统单机数据库难以胜任。MongoDB作为流行NoSQL数据库,采用分片技术实现水平扩展,有效处理海量数据。分片将数据分散存储,提高并发处理能力和容错性,是高可用架构基石。构建MongoDB集群需理解shard、config server和router三组件协同工作原理。通过具体实例演示集群搭建流程,包括各组件的启动及配置,确保数据高可用性和系统稳定性。合理规划与实践可构建高效稳定的MongoDB集群,满足业务需求并支持未来扩展。
136 0