演讲嘉宾简介:吴林(无才),阿里云智能数据库PD,18年IT领域工作经验,对数据库、云计算、金融领域有深度实践,现负责阿里云数据库专属集群MyBase产品。
以下内容根据演讲视频以及PPT整理而成。
观看回放https://developer.aliyun.com/live/245475
更多课程请进入“数据库大讲堂”了解
https://developer.aliyun.com/topic/database/lives
本次分享主要围绕以下四个方面:
一、背景介绍
二、共享和专属
三、云时代需要什么样的数据库服务
四、问答环节
一、背景介绍
世界只需要5台计算机——笑话还是预言
在1943年的时候,IBM董事长托马斯·沃森(老沃森)提出了一个预言:世界只需要5台计算机.当时,世界上的很多人相信这个预言。而当今天回头再看1943年老沃森提出的这个预言,很多人认为是一个笑话,因为现在计算机非常多。其实老沃森在做这个预言的时候肯定是有历史背景的,因为在1943年的时候,全世界的数据量也非常小,而随着计算机技术发展到今天,整个世界的数据量变大非常大,需要以万亿亿来进行计算,因此不能仅靠5台计算机进行计算。
我们所熟知的微型机
在大家的生活中可能会接触到台式机和笔记本电脑,这类电脑属于专属计算机,一般情况下不会共享。
大型机
除了上述微型机之外还有很多其他类型的计算机,比如下图所示的大机计算机,其体积非常大,可能占据整个房间,而且线非常多并且杂乱。此外,当时使用的主要是真空管和晶体管等,并且主要提供给科研人员使用,这是因为其输入非常复杂,计算机输入所使用的是大家可能没有见过的卡带,也就是在卡带纸条上进行打孔作为输入。此外,机房的环境非常恶劣,因为晶体管和真空管等散热非常严重,因此需要有水来散热。
上图中右侧是近代金融机构和大型企业所使用的大型机,有点类似在阿里云机房看到的机柜,一个机柜基本上是一个大型主机的规模。在老沃森所处的历史背景下,一台大型机处理一个企业的数据规模基本上是满足要求的。
与大型机相对的就是小型机,以前有一个话题是“去IOE”,所谓“IOE”分别代表IBM、Oracle和EMC。下图是2013年5月17日,阿里集团最后一台IBM小型机下线的场景。
云时代
为什么小型机要下线,是因为我们要进入云时代。机房中,机架上的每一排都是刀片服务器,而需要散热,有很多风扇,因此在机房中非常吵。
其实,回到老沃森提出的全世界只需要5台计算机这个预言,其实他说的是全世界需要有5大中心节点来处理大家的需求。在云时代,像亚马逊、微软、阿里云以及谷歌等云产商来全球用户提供服务,从这一点来看,老沃森说的也没有错。进入云时代以后,很显然,大家都希望能够共享,这是因为在公有云中,大家都希望能够随时随地享受到云服务。
二、共享和专属
数据库发展历程
今天分享的主题是共享和专属,在以前的大型机时代,肯定是专属于某一个大型企业和科研机构的。而在云时代,则走向了共享经济,大家可以随时随地享受到便捷的云服务。
数据库的历史发展非常久远,最早的大型机是在19世纪50年代出现的。标准意义上的大型机是从1964年推出的第一款S360机器开始,当然之前可能还有一些没有量产的机型在50年代就已经出现了。当时出现的数据库有层次数据库和网状数据库,层次性数据库和树状结构非常相似,像是具有根节点的倒立的树,其中具有代表性的层次数据库就是IBM IMS。在小型机时代,出现了关系型数据库,包括MySQL、Oracle、IBM DB2等。进入PC时代之后,数据呈现出百花齐放的状态,能够看到NoSQL数据库、开源数据库以及进入云时代,阿里云等厂商所提供的云原生数据库,能够满足更多客户和场景的诉求。
传统自建数据库的挑战
进入云时代之后,云厂商会提供云数据库服务,但是依然会有很多用户会选择自建数据库。而对于企业而言,所需要维护的数据库数量非常多,虽然现在很多企业选择使用开源数据库,不需要为商业许可证付费,但是对于自建数据库而言,运维成百上千个数据库的压力非常大。而如果企业选择使用开源数据库,技术来源于自身的积累或者开源社区,缺少商业服务,而商业数据库的服务则是收费的,比如Oracle和SQL Server,收费是非常昂贵的。
三、云时代需要什么样的数据库服务
在云计算时代,我们所需要的数据库服务需要关注资源、成本、安全、运维、内核的完整方案。
资源隔离
对于数据库的资源隔离而言,主要有几种类型,包括物理资源隔离、ECS资源隔离以及Docker资源隔离。本次分享中主要介绍物理资源隔离,大家在使用云服务的时候需要选择使用共享实例还是独享实例。
物理机资源隔离
阿里云对于物理资源隔离分成了共享实例、专享实例、独享实例以及独占主机实例。对于共享实例而言,一个物理部署里面可以创建多个数据库,让数据库1服务于A客户,数据库2服务于B客户,可以通过账号进行隔离。对于专享实例而言,就是说这一个数据库实例就是给某一个用户或者说企业使用的,不会和其他的用户在一起,一般是通过Cgroup进行资源隔离。所谓独享实例就是希望对于资源在一定范围内能够保证资源独占性。对于更加“土豪”的客户而言,就可以使用独占主机实例。
使用Cgroup进行资源隔离
在使用Cgroup进行资源隔离时,阿里云数据库使用了memory、vlkio、cpu三个子系统分别对实例的内存、IO和CPU时间片资源进行了隔离。使用cpu.share配置各个实例的权重,根据Instance_leve表的limit_memory值进行内存隔离,并根据iops进行配置隔离。针对独享实例,CPU子系统不能完全避免CPU资源的竞争,开始引入CPUSET对独享实例绑定CPU核心资源。独享实例使用CPU+CPUSET两个子系统隔离CPU资源。绑定的CPU核心为逻辑核心,不考虑被绑定的逻辑核心是否在相同的物理核中。
CPUSET
由于独享实例已经使用CPUSET绑定CPU核心,而不同实例绑定不同的CPU核心,因此不会相互争抢CPU核心资源。阿里云数据库团队在使用CPUSET时设置了独享实例CPU核心规格均为偶数,如2、4、8、16、32,并同时考虑逻辑核和物理核之间的关系,让一个物理核虚拟出两个逻辑核,避免不同独享实例之间共享相同的物理核心而产生资源争抢。
云数据库服务形态
对于资源隔离的要求而言,在专享服务里面,云服务就是共用资源池,因此用户不知道自己的机器是哪一个,那么很有可能不同用户的数据库实例出现在同一台物理机上,如果某一个客户使用的资源比较多,那么就有可能会产生资源争抢。而对于一些对于性能、安全要求比较高的客户而言,则希望在公共云里面对于某些资源进行独占。
云数据库专属集群
基于用户的上述考量,阿里云就推出了云数据库专属集群MyBase,这个产品就是为了解决用户的此类问题。阿里云云数据库专属集群产品已经上线一段时间了,现在已经能够支持MySQL、PostgreSQL、SQL Server、Redis和MongoDB等五款数据库引擎,在赋予用户PaaS层数据库服务同样能力的同时,还具备资源超配、混合部署、资源调度、弹性策略、更开放的权限、自主运维能力等,能够满足大中型企业客户对云上数据库自主管理的核心需求。
Redis专属集群助力CC视频轻松应对业务洪峰
2020年,在线教育、视频以及游戏行业特别火热。这些行业在业务洪峰的时候就会出现上述资源争抢的情况,进而影响到自身业务。对于下图中例子的CC视频而言,就会影响其直播效果。
在疫情期间,直播业务场景内聊天、课件、进出日志等信息实时数据量剧增,几百万在线并发使得传统Redis实例在CPU和带宽、流量方面无法承载。而CC视频采用自建MQ等工具不仅使得管理和运维成本增加,也使得整个数据链路变成。与此同时,随着在线教育的发展壮大,核心业务数据库压力越来越大,需要性能优化和支撑。后来,CC视频在阿里云上采用了多台专属集群主机承载直播视频场景下消息分发业务。当业务高峰来临之前,将核心Redis实例进行独占主机部署,独享整机的CPU和带宽,这是因为对于资源具有独立控制权;而在业务低峰时,通过智能调度整合,通过合理资源缩减和调整分配,降低整体成本。
四、问答环节
最后是本次分享中三个互动问题:
问题1:层次型数据库和关系型数据库,哪个处理更快?
回答1:虽然层次型数据库出现比关系型数据库更早,但是从处理速度上来看,层次型数据库更快。以前的大型机里面有一种语言叫做COBAL,访问数据库的时候不像关系型数据库这样用户友好,需要程序员自己定义访问路径,包括根节点、父节点、子节点等,所以从处理角度来讲,层次型数据库比关系型数据库更快,因为指定了访问路径。
问题2:专属集群支持哪些数据库引擎?
回答2:当前阿里云专属集群支持MySQL、PostgreSQL、SQL Server、Redis和MongoDB等五款数据库引擎。
问题3:Cgroup中采用哪三个子系统进行资源隔离?
回答3:Cgroup中memory、vlkio、cpu三个子系统分别对实例的内存、IO和CPU时间片资源进行了隔离。