日前,华为云自研文档数据库 DDS 增强版正式商用。作为华为云在数据库产品矩阵上的重要布局,它不但兼容最流行的 NoSQL 数据库 MongoDB,而且基于华为自研核心技术存储计算分离架构,在读写性能、扩容能力、备份恢复性能、故障容忍能力等方面全面提升。
云计算服务已经发展很多年,随着越来越多的企业选择上云,各家云厂商之间的 PK,不再是停留在云服务的有无上,而是逐步转向云服务的体验和性价比。
传统架构限制下的 MongoDB
资源浪费
传统架构下的 MongoDB 副本集基于 Raft 分布式一致性协议,包含节点主备间选举、数据同步、Log 追加等技术细节。该架构优势明显:自动故障接管、数据三副本冗余,在稳定和可靠性方面可以说是根正苗红。但缺陷也一目了然:提供三副本存储的同时,只有单节点可写,浪费了两个节点的计算能力。
扩容受限
在 2017 年 MongoDB 年终大会上,来自云之家的 DBA 分享了一段他的经历,对存储有 150T 数据的 MongoDB 数据库扩容,耗时接近一个月。
事实上,传统三节点架构下的 MongoDB 副本集,每一个 shard 节点之间的数据是相对独立。当用户对数据库进行扩容时,需要将已有节点的数据同步均衡。但由于数据是独立存在、需要进行网络拷贝,因此,社区版 MongoDB 扩容不但耗时久,而且扩容后性能并不能立即得到提升,很大程度上限制了 MongoDB 的使用场景范围。
故障容忍能力差
MongoDB 三副本虽然在大多数情况下可靠,但也不排除有两个节点故障,导致业务中断的可能。由于各节点间数据的独立、同步需要一定时间,这就导致新选出的主节点数据太老,需要人工干预各节点数据,从而增加系统的不可用时间。
弹性伸缩能力差
弹性伸缩能力,是指系统根据用户购买的计算资源负载情况,来决定是否增加或者减少计算资源,以满足客户实际业务需求的功能。传统架构下的 MongoDB 副本集,由于受架构限制,弹性伸缩能力差,往往出现控制成本和满足业务高峰期要求不能兼顾的问题。
华为云存储计算分离架构优势
针对 MongoDB 传统架构的局限性,华为云 DDS 增强版采用存储计算分离架构,通过多项技术改进,实现了 MongoDB 的弹性按需伸缩、分钟级计算资源扩容、秒级存储资源扩容、容忍N-1个节点故障等能力。
华为云 MongoDB 增强版关键技术改进:
1. 将 MongoDB 多副本复制功能卸载到分布式存储,使得 Secondary 节点也可以为读写服务,相同成本下获得 3 倍的计算能力,进而获得3倍的读写性能提升。
2. 华为云 DDS 增强版将 MongoDB 数据库节点无状态化,将数据和计算节点分离,去掉数据强归宿某个计算节点的限制,使得横向弹性伸缩性能提升 100倍 以上。
3. 打破 MongoDB 只在单个 Shard 副本集内支持 HA 高可用的限制,集群内所有Shard 的所有节点都互为 HA 备份关系,使得可以支持任意 N-1 个节点故障。
4. 打破 MongoDB 只在单个 Shard 副本集内节点间复制3副本的限制,分布式存储采用分片复制能力,磁盘故障后可以由更多磁盘参与数据重构,10 倍缩短数据重构时间。
5. 使用分布式存储的快照备份技术,替代MongoDB的逻辑备份,10倍提升备份恢复性能。
华为云技术加持下的 MongoDB,不但实现性能和体验的双重提升,而且价格仅为市场同类产品的1/3,对用户而言可谓福音!
近期,华为云DDS增强版还会开放自动弹性伸缩能力,根据业务性能要求弹性增加、减少集群分片,动态匹配业务需求,完美应对电商秒杀、微博热点、高峰打车等有明显高峰、低谷的业务场景。