MongoDB云原生化:为企业开发注入高效动力,主要分为三部分:
第一部分:介绍阿里云和MongoDB的服务。
第二部分:阿里云MongoDB为解决自建模型的一些痛点所做的功能。
第三部分:介绍客户案例。
一、MongoDB云原生化
MongoDB是一款非常受开发者欢迎的数据库产品,不管是从下载量还是开发者社区的评测,还是从DB边界上的排名或是从foreign的一些评估中都是非常受欢迎的。
1.MongoDB受欢迎的主要原因
(1)MongoDB模型非常易用
它使用文档模型,所以用户无需因增删某些字段而做一些非常复杂的运维操作。在文档数据库领域,MongoDB的优势非常明显。
(2)MongoDB变更非常灵活
MongoDB从很早的时候就开始放弃主编模式,而支持副本级模式。用户单个节点变更无需担心数据一致性的问题。MongoDB能够支持分片集群做横向扩展。在企业业务增长时,可以很快应对。并且生命周期到达某一个阶段需要缩容时,也可方便做缩容。
(3)MongoDB性能优异
灵活性在软件上带来的挑战,可能对性能会有损耗。MongoDB在性能上采取YTAGER作为存储引擎,不管是稳定性还是性能上都有很大的增强,特别是8.0在性能上有极大提升。
(4)MongoDB功能丰富
除了文档模型之外,MongoDB在5.0开始支持时序数据结构、全文检索和下载检索,让产品能够覆盖的场景更多。
2. 阿里云和MongoDB的合作
(1)版本合作
阿里云是国内唯一一个可以提供最新版本的云厂商,先前提供的5.0、6.0,去年提供了7.0,马上8.0做适配,估计会在明年一月份和大家见面。
(2)阿里云和MongoDB研发上的合作
4.4支持Hidden Index解决什么场景问题?创建索引可以提升查询性能,但同时会带来写入的成本。随着业务的发展,所接的数据越来越多,想删除一些索引来提高写入的性能,由于人员不太确定某个索引能否被删除,删除后的索引被之前未用到的query索引应用到,再重建索引可能会耗时较多,Hidden Index相当于把索引做一些元素的标记,只是让其不会再去用这个索引,但如果发现有的query用了这个索引,可以很快的把该索引重新用回来,这样的功能解决了非常实际的业务问题。
(3)使用数据库的问题
在规模和应用场景下会面临使用数据库的问题,这些问题很多时候需要非常有经验的研发工程师和服务支持人员解决。阿里云和MongoDB原厂每周会针对云服务商遇到的一些问题进行讨论,给用户非常确切的可实施方案。
(4)阿里云MongoDB的发展历史
在2019年和MongoDB进行官方战略合作之前,阿里云MongoDB就开始推出MongoDB的pass服务。从16年开始,开始支持3.0和3.2,和官方进行合作之后,开始推出4.2和4.4,今年年初推出了7.0,包括即将会上的8.0。
二、云原生MongoDB企业开发的高效驱动力
这一部分是介绍阿里云MongoDB解决自己MongoDB痛点而做出的功能。
1.自建MongoDB的四个痛点
(1)隔离性问题
一般自建MongoDB会在物理机上布置多个实例,多个实例之间的CPU和memory是通过CPU来进行隔离的。但这个部署方式有个明显的弊端是它的磁盘I/O和网络是没法做较好的隔离,很多时候会带来业务之间的干扰。
(2)海量数据
7T/8T的一个物理机,如果宕机后会涉及大量的数据迁移,如果以平时50gb/秒的搬迁速度,差不多1T的数据大概要搬二十多个小时,对服务可能性和数据可靠性都有较大风险。
(3)弹性能力
若通过物理机的存储计算是耦合,一台机器上的CPU或磁盘不足,没法解耦的进行扩容,这时会涉及整机的搬迁。
(4)运维操作
运维操作包括备份、回档这样的操作,自建比较难操作,难以应对一些较特殊场景。比如回档是一个非常低频的操作,但它依赖的是较为高频的备份操作。这些备份怎么存储,怎么保证它的高可用是需要做很多工作的。
2.云原生MongoDB架构
2.1.实例管理
所有的pass服务需具备管理实例的生命周期,然后做变配、版本升级。
2.2高频优化
MongoDB可以提供集群内的选举,如果你资金不够低,会考虑怎么把对应的供应链的暴露给用户,然后节点重单。这些都是云原生的MongoDB可以整体做的解决方案。
2.3.管控能力
(1)全链路数据安全
全链路数据安全包括传输安全、存储安全。
(2)备份恢复
备份恢复对应用来说是一个非常关键场景,包括如果遇到问题想回滚到两天前的数据,想按时间点恢复需要用到的哪些技术。
(3)全方位可观性
监控数据有异常时怎么通过监控数据做快速诊断从而解决问题。
(4)全链路数据迁移方案
全链路数据迁移方案可以支持从AIS的MDB或从多个MDB, 包括其他自建的/其他云厂商的MongoDB迁移到阿里云。
2.4.内核管理
版本覆盖非常全,从目前官方来说4.4及之前都已经优惠了。但在阿里云仍然提供了从3.0到7.0,但版本是在逐步的往前推进的。其次,国产化的资源能够提供更高的性价比。SQL限流是内核访问精细控制。比如典型场景,今天上有一个新业务,针对某一个集合做了非常大的query,如全集合的扫描,这时想把这个集合的query全部限制掉,不影响其他集合访问,SQL限流主要是做这样的功能。
2.5.数据结构支持
MongoDB支持持续的索引结构、文本检索和向量检索。文本检索、向量检索这两种功能现在是在逐步向社区沉淀,发布之后会很快适配从而在阿里云MongoDB上支持这些功能。
2.6.数据归档
应用使用数据量上来后,会涉及到很多数据存在MongoDB实例上,但很少或非常低频的查询到,需要涉及把这些数据方式归档到更低的存储里,但需要提供一些查询方式进行查询。云原生MongoDB主要基于两个比较核心的阿里云技术,一个是1400,一个是块存储,也就是计算存储解耦,主要讲了这两部分。
3.细分云原生的功能
(1)弹性
弹性,即测试存储计算分离是通过ECS+EBS组合提供服务。这两部分资源可以分开扩容。如从48G扩大到86G的存储,这时云盘不用动,即不移动数据只移动计算就可以了,再逐个节点替换,这样对业务的感知非常少。实际基本上业务感知在毫秒级就可完成实例的升级因为升级速度较快,正常一个独享的实例在20分钟内就可完成升级,和数据量无关。应用可以更灵活的规划自己的容量,无需一直长时间保留较大的容量。
(2)备份
备份恢复需要提供较多功能。备份的频率、备份的一些选择,物理备份、逻辑备份、还是快照备份都有区别。现在云原生MongoDB提供快照备份,它的全量数据备份时间和增量产生的时间相关。比如今天的数据是500G,备份用了1个小时,但今天只产生了50G的增量,而快照备份只用十分钟就可备完。
但若使用物理备份,每天都需要备份500G,即每天都需要用1个小时。这就是快照备份能够得到的备份时间的提升。快照恢复也一样,比如500G的数据去重新再下载下来需要30分钟,但如果用云盘快照/快照备份,恢复只需一分钟之内的时间。因为云盘的快照恢复难加载,云盘只要是挂载到PC上,它就是可用的。
(3)回档能力
通过备份后,怎么把用户需要回档时提供方便的回档能力。除了做整实例的回档,还支持库表恢复和按key闪回档。库表恢复原理一样,只是库表恢复涉及到增量。数据回放只需回放到某一个cache数据,这对增量恢复的速度非常友好,它还支持扩展恢复到原实例,用户后续的操作会更方便。按key闪回档是比较新的备份流程和恢复流程,借助MongoDB从新版本sacshow window能力,可以根据用户的文档更改马上拉取之前的镜像,然后存储到数据存储。当用户需要回档时,可以秒级的把这一时间的文档镜像取出。这对游戏场景来说是非常高频且友好的产品功能。刚才也提到过MongoDB自身的分析支持选举,但如果自建,会涉及到VIP的更改以及备库的重建,以上都是云原生MongoDB整体做好的。另外还提供了AZ-3能力,机房故障时,如果使用的是AZ-3能力可以容忍AZ级别故障,不会对业务有任何影响。
(4)运维复杂
再和大家合作时,支持审计制、慢日志、SQL限流、规划管理等功能。对于一些典型业务场景,比如绘画,某个应用写的不对导致该应用连接非常多,则可以通过规划管理迅速识别出哪些节点导致异常。通过这个界面,可以直接把PALY DB界面链接给kill掉。而SQL限流能力,针对一些场景有异常的用户流量,把整个实例打爆了,还可以通过集合维度的限流把影响降低。
(5)迁移链路
MongoDB、多个命令或是自建数据库都可以通过对应工具迁移。迁移有额外的辅助功能,相当于自己用一些shake之类的迁移工具,可做全量和增量一致性的校验。如果有迁移场景,可以和MongoDB云原生厂商合作,使迁移顺利进展。
这是云原生MongoDB的发展历程。19年达成战略合作后做了云原生架构的升级,现在全网有相当大部分比例都是云原生实例。MongoDB后面会计划做共享存储,我们会紧跟MongoDB方向做共享存储serveless的一些扩展。
三、云原生MongoDB企业上云实践
1.常见的客户案例
比如常见的游戏,怎么针对游戏上的这些痛点解决,这其实和之前讲的MongoDB优势相关,一是字段会不断的变更,随游戏的反馈,会引入新字段。其次,因为游戏的生命周期非常明显,在商量期间需要较快的支持用户变更,以满足其增长的业务流量。在游戏场景中,如果某次版更有问题,需要马上回档到版更之前,这就依赖资源恢复的能力,单点故障时不会对游戏产生较大的影响。这时也有对应产品功能支持单点故障,不会影响,能够平滑切换。
2.业务收益
业务收益,可以缩短业务的迭代周期,在流量增长的时候可以支持用户扩容,这时应用无需改变。备份恢复的时间都可缩短到分钟级别。
3.典型客户
典型客户,如游戏客户吉比特、莉莉丝;一些内容相关的客户,如掌阅、南瓜;还有AI机器人相关的客户,如小冰。