横向扩容 ,我们不做数据的搬运工
随着企业的发展,数据也随之在不断增长。这就对数据库系统提出了很高的要求:既要在性能上满足业务的需要,还要在存储容量上满足数据的日益增长。
作为文档数据库一哥,MongoDB一直以来被开发者和企业所青睐,以具有强可扩展性和优秀的读写性能著称。但是,在长时间的使用过程中,MongoDB 扩容时性能欠缺的缺点逐渐显现出来,成为企业的一块心病。
2017年的 MongoDB 年终大会上,来自云之家的 DBA 分享了一段个人经历:在一次对存储有 150T 数据的 MongoDB 数据库扩容中,耗时接近一个月。
市场千变万化,历时一月的数据库扩容,不知中途是否赶上业务高峰期,但在眼下互联网业务盛行、机遇说来就来的当口,一月时间发生的变化,可能性太多。在各种小时级甚至分钟级概念层次不穷的今天,为什么 MongoDB 的扩容,会耗时那么久呢?
真相是什么?
究其原因,MongoDB 扩容之所以需要较长时间,与其采用三副本架构有很大关系。该数据库存储数据使用的本地文件系统,每一个 shard 节点之间的数据是相对独立的。当扩容时,需将已有节点的数据同步均衡;由于数据独立存在,所以要对数据进行网络拷贝。
MongoDB 三副本架构
也因此,MongoDB 扩容后的性能并不能立即得到提升,这在很大程度上限制了MongoDB 的使用场景范围。
你可能会提出一个问题,网络拷贝也不至于速度如此之慢吧?事实是,数据拷贝对节点资源消耗很大,出于对整体性能的考虑,MongoDB 限制了数据迁移的速度。
MongoDB 扩容示意图
世界总是如此,任何事物都不完美,但办法总比问题多。因此要想从根本上解决 MongoDB 数据库数据迁移慢的问题,就需要从架构上做调整。
正本清源:从根本上解决问题
上面提到,MongoDB 各 shard 节点之间数据是相对独立的。那么,如果现在数据相对于计算节点来说并非私有,而是共享,节点扩容是否就可以省去数据迁移步骤,进而大大缩短扩容时间呢?
答案是肯定的。华为云 MongoDB 社区增强版正是这一假设的践行者。
华为云 MongoDB 社区增强版是华为云文档数据库 DDS 推出的 Cloud Native 文档数据库服务。完全兼容 MongoDB 协议,使用计算储存分离架构,在读写、扩容能力、备份恢复性能、故障容忍等方面对比 MongoDB 社区版有质的突破。
华为云 MongoDB 社区增强版打破现有架构约束,将 MongoDB 数据库节点无状态化,去掉数据强归属于某一计算节点的限制,将计算和存储相分离,数据可靠性 交由底层共享存储系统来保证,从根本上解决了数据迁移慢的问题。
传统 MongoDB 架构 & 华为云 MongoDB 社区增强版架构
计算节点无状态化
由于计算和存储的分离,副本集不再需要,华为云 MongoDB 社区增强版将 Shard 副本集替换为单节点 Shard,单节点 Shard 在运行中并不保存和命令请求相关的信息,每次命令请求都和以前没有任何关系,命令执行完成,返回结果后,没有任何痕迹。这样以来,可以很方便的被替换掉(或集群、横向扩展)而不用状态重建(或同步)。
节点扩容
华为云 MongoDB 社区增强版在扩容时,将拉起一个新的单节点 Shard 添加到集群,由于数据是共享的,只需要在逻辑层面设置被接管数据的路径即可,新节点在指定的路径下加载完对应数据后,就能对外提供服务,整个过程可以在分钟级完成,同等条件下扩容性能提升了百倍以上,可以轻松应对业务突增带来的负载性能问题。
华为云 MongoDB 社区增强版扩容示意图
Cloud Native 文档数据库,极高性价比
华为云 MongoDB 社区增强版的架构升级,包括了计算(分片)、存储(分布式存储池)分离、每个计算节点(分片)互为主备关系、允许 N-1 个计算节点(分片)故障、集群高效平缓的横向扩展、更有利磁盘扩容的分布式存储池等特点,在同等成本下,数据库整体性能和可用性都得到大幅提升。
在该架构下,华为云 MongoDB 社区增强版相较社区版的弹性扩容能力提升了 100 倍故障重构能力和备份恢复性能提升10倍、读写性能提升 300%!
华为云 MongoDB 社区增强版盛大公测中
计算、存储分离黑科技, 30% 成本节省
立即体验
- 点赞
- 收藏
- 关注作者
评论(0)