赞
踩
6月24日至25日,由中国开源软件推进联盟(COPU)主办的“第十一届开源中国开源世界高峰论坛”在北京成功召开。本届论坛以“深化开源交流,壮大开源平台,服务万众创新,发展共享经济”为主题。
阿里云资深开发数据库工程师郑涔(花名明俨),受邀参与了这次大会,为大家介绍了阿里云与开源项目MongoDB的故事,他的演讲内容大致可分为三部分:
以下是郑涔发言整理内容。
MongoDB是一个文档型的NoSQL数据库。目前是全世界最受欢迎的文档型数据库之一,仅次于Oracle、MySQL等数据库。
MongoDB结合两者优点。一方面,它在某种程度上像是包含了传统关系型数据库的特性,如具备丰富的查询语句及一些索引功能;另一方面,它也继承了NoSQL的优点,省去了设计字段和表的麻烦,并且拥有较好的性能,可以很方便的进行水平扩展。
MongoDB的主要特性可归纳为如下三点:
在海量数据的支持及可扩展性方面 ,MongoDB同样做得很出色。用户可以对数据进行水平切割,系统可以自动实现负载均衡,对使用者来说则都是透明的。
在适用场景方面,用户所能想到的场景,MongoDB基本上都能可以胜任,除了一些需要复杂的事务处理的场景。
阿里云数据库团队拥有一个中台团队,开发了一系列的系统工具并摸索出一整套的流程,可以方便地把一个开源的数据库做成一个云服务。目前阿里云的MongoDB云数据库服务在高可用方面上做的主要改进就是通过N+1个节点再加上负载均衡的方式来保证用户同时有N个节点可用。用户可以拿到一组包含N个节点的连接地址,这N个地址是会通过一个负载均衡服务动态解析到后端的服务节点。当有节点宕机时,阿里云会根据情况对节点连接地址的指向情况进行动态切换,保证用户始终有N个节点是可用的。
具体来说,当N为2时,用户可以拿到两个连接地址,其中一个连接地址是指向当前主节点的服务,另一个指向当前备节点,那么当主节点发生问题宕机时,这个主节点会自动下线,这时备节点会自动提升为主节点,另外原来的一个隐藏节点会提升为备节点,并且系统会根据情况为用户再新建一个隐藏节点,这样就能始终保持两个节点高可用。隐藏的那个节点平时也可以拿来做一些数据备份等操作,由于用户看不到这个节点,这样不会对用户的访问产生影响。
另外,如果需要为用户提供云服务,系统必须要做一些多租户的安全管理。这里我们是用成熟的cgroup解决方案来做一个多租户的隔离和资源限制,来实现IO、CPU及内存等资源的隔离。同时我们做了一些系统权限的独立,使每个用户的每个实例只能存访自己的一个目录,从而进一步提高安全方面的隔离。另外,我们还将内部使用的管理账号和用户的账号隔离开。因为我们需要让用户的使用更加省心,我们对用户屏蔽了内部的一些细节,包括一些高级的运维命令。此外用户还可以设置白名单来增强安全性。
目前阿里云MongoDB云数据库实现了一些企业版本才有的特性。众所周知,MongoDB除了有一个开源的社区版外,它还有一个收费的企业版,有一些高级特性是企业版才具备的。
阿里云团队也针对社区版本实现了一些企业版才有的特性:
这些都是阿里云团队在实际开发运维中遇到的问题,并针对这些问题做的一些改进。
还有,我们还会不定期做一些最佳实践,并分享一些博客、文档,共同促进MongoDB在中国的普及和发展,让大家知道并解决实际使用中会遇到的问题,把MongoDB用得更好 !
云数据库MongoDB首页:https://www.aliyun.com/product/mongodb/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。