剖析云计算平台中的“共享性数据库”
- +1 你赞过了
什么是共享性数据库
谈及“共享性数据库”,最让我们困惑的是“共享性”三个字。 “共享性”让我们会想到其反义词 “独享性”。 没错,共享型数据库是对比独享性数据库的一种针对用户资源所有权的数据库称谓, 它是伴随着云计算出来之后的一种数据库创新,以节约资源为目的,而一般情况下,自己的服务器或机上安装的不与人共享的数据称为“独享性数据库”。很多人不明白共享性数据库的特点,那么我接下来就简单介绍一下。
共享性数据库与独享性数据库的特点对比
在介绍共享性数据库之前先来分析一下什么叫“独享性数据库”。独享性数据库,顾名思义,独享就是自己的数据库,在云计算出来之前,我们几乎没有独享性数据库的概念,因为没有对比,认为所有的数据库都应该叫做独享性数据库。
“独享性数据库”就比如我们有一块儿地(这块是有地址和门牌号的,好比数据库和端口),自己在这块儿地上修一栋房子当仓库(类似于我们创建了一个数据库), 我们在这栋房子里任意使用房间来存东西 (类似于我们可以创建 Table 一样)。
而“共享型数据库”是为节省资源、降低开发者成本孕育而生的,很多人一起共同使用这栋楼房,但是这栋楼房不是属于具体某一个人是雇主的资产。在云平台的世界里,雇主是提供云数据库的供应商,使用服务的人称为“租户”。大家在一起使用一个数据库,你有创建表的权限、修改表的权限,但是没有创建数据库、修改数据库的权限,因为这栋楼是大家的,不是你一个人的,而你,只是租户之一。
当然,你的几个房间会给你一个标签,取个名字,是某某人的(这个名字就是你以后使用数据库的名称); 您的这些房间与其他人的房间也是完全隔离的,彼此是不存在隐私暴露的问题的。
共享性数据库的租户的房租比较便宜,因为按需收费,甚至免费。“按需收费“是云平台的共同特点,因为你的房间是用来存东西的,就类似于你的数据库表是用来存数据的一样, 在以前你使用独享性数据库,你自己买了一个云数据库,是一次性投入,好比你花费了一辈子的积蓄来买了一栋房子,但是你真的需要那么房间来存你的东西吗?
如存粮食也许你自己都不知道你的东西有多少个东西。 共享性数据库的诞生解决了这个问题,一般的情况下,你有多少东西,你就租多大的房间,房东就收你多少的费用。这种就叫按需付费。有这样服务的云平台有很多,比如百度的BAE、新浪的SAE、京东云擎等。目前的数据库是按空间收费,是既按空间计费,也按流量计费。
目前,不同公司在对待共享型数据库技术实现上,各家公司采用的技术与架构不同,所以也无法对其进行一一的接受,我只简单总结一下各共享性数据库的共同的特点:
(注:这是我手绘的一个架构图,不代表数据库真实架构,只为说明清楚问题而绘制)
1)租户隔离。多个租户共享同一数据库实例必然需要一个有效的隔离方案,防止一个用户的慢查询请求或恶意请求影响其他用户访问。这里的隔离实现方式是通过 JProxy 层对用户所有的访问进行了拦截,并根据用户访问的数据表索引信息等,对用户执行该请求所需资源进行预判,并拦截掉恶意的请求及影响其他用户的请求。同时为了精确控制每个用户的资源使用,整个系统针对用户使用的连接数,内存占用容量,磁盘空间使用情况,带宽流量等都做了有效的记录和监控并根据用户的配额进行控制。
2)集群路由信息高一致性保障。整体集群采用经典的弱中心化集群结构,在满足集群高性能的基础上同时具备足够的可控性,JManager 管理整个集群路由信息,并通过多个 Slave 避免单点故障,当路由变更时,JManager 首先同步路由变更信息给自己的 Slave,然后才会同步所有的 JProxy, 避免路由变更时 JManager 挂掉导致路由不一致。
3)高可用保障。整体集群所有节点无单点,用户的数据库会通过 zookeeper 做主从的高可用,如果用户主库挂掉,会自动切换至从库,并重新绑定 floating ip 到从库,不会影响对用户的服务。(floating ip 知道什么意思,想做架构师的朋友可以搜一下,这里不做累述)
4)用户数据库无缝升级扩容。当用户的数据库数据增长超过指定配额时,用户可以选择升级数据库,系统会自动根据资源池使用情况将用户数据库迁移到比较空闲的实例上,迁移过程中并不会影响用户的服务。通过定时自动为用户数据库做快照的方式,结合数据库 binlog 同步工具,来帮助用户实现增量备份,迁移的工作也是依赖于以上这些工具完成的。
5)型数据库基于安全方面考虑,通过 jproxy 对有潜在安全风险的数据库操作语法进行了限制,不如不能使用 Create database,刚才提到了这栋房子除了您在用,别人也在用,你只有这几个或者几十个房间而已,你只能在这几个或者几十个房间里瞎搞,不能去别人的房间胡来!
云计算出现以后,为企业、创业团队、个人带来了便利, 那个自建机房、购买或者租用服务器搭建环境、中间件、部署应用,搞定域名而浪费大量人力物力的时代,我相信在不久的未来可能会渐行渐远; 按需付费、方便快捷的互联网服务让云平台成为未来软件服务市场的宠儿, 而共享性数据库也会逐步体现其价值,迎接崭新的明天,相关的人才需求也会紧随其后。 预祝中国的云计算有广大的发展空间,越来越多的人才为其服务!
本文来自刘维投稿(微博@刘维生活路),从事云计算行业多年,从个人的经验,及与一些Google、京东等公司云计算架构师交流得到的心得的总结,为大家分析下什么是“共享性数据库”。
最新资讯
热门视频
新品评测