开发者学堂课程【高校精品课-西安交通大学-数据库理论与技术:阿里工程师讲座】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/12/detail/15865
阿里工程师讲座(一)
内容介绍:
一. 传统数据库架构和云的本质
二. 云原生数据库
三. 下一代云原生数据库
这一节来做一个实践的分享,介绍一下工业界的云原生的数据库是个什么样的状态,未来的架构眼镜是个什么样的状态。其实工业界跟学校更深层次的互动的加入是一个很好的机制,无论是学校跟企业的联合研发,或者是课程的互动。因为老师的工作包括老师的研究性的工作,包括同学最终都是要为工业界服务的,如果能在业界落地创造价值,这是最终的目的,包括同学学习数据库,比如学习计算机的其他知识,最终也是为了就业或者是科研,科研间接也是为了就业,来造福整个社会。
反过来说,对于学校可能更代表业界,是怎么样来服务于社会上的各行各业,企业,或者个人,或者相关的一些工作。所以尽早的在课程中介绍一些实际工业界用到的一些数据库的知识,以及相关的架构,这个对同学来说是比较有收益的,可以早在学校里学习的时候就有一个 provision,就是能看到未来。工业界,比如就业里孵化该是什么样子的,在学习的过程中就会更加的有目的。
今天分享一下云原生数据库,就是数据库的一个分支。但是现在工业界应用比较广,以及它未来的演进。会以polarDB 为例子介绍一下,就是云原生数据库的经典架构,以及未来的眼镜这块的内容。这次分享会分为三部分,首先会介绍一下传统的数据库架构是怎么样的,云的本质是怎么样,传统数据库架构跟云的环境,或者说云的架构之间会有一些怎样的冲突,或者现在存在的一些问题。
第二部分会介绍数据库,就是当下主流的云上的数据库,基本都是云原生数据库为主,这些数据库的主要特征是什么,它有什么收益,需要做哪些工作来对原有的数据库进行改造。
第三部分会介绍,接下来云原生数据库这块会往哪个方向走,因为现在原生数据库才刚刚起步,有第一版的形态,有这个定义出现。未来很长一段时间都是需要有架构眼镜,那未来的架构眼镜会怎么走,会从自己出发点的角度来介绍,在这方面的一些想法或者阿里云在这块的一些想法。
一.传统数据库架构和云的本质
首先介绍传统数据库架构,传统数据库架构不一定了解,可能课堂上会学到或者已经学过。
简单介绍一下这些 baseland 知识点,传统数据架构以前有一个名字叫 LE,学过传统数据库的应该比较了解,就是ibm ,它是生产小机的,oracle 是生产数据库的,EMC 是生产存储的。
比如一家传统的企业,它要用一个数据库,它自己有个机房,于是就买个小机装个数据库,或者它拿个托管的机房把自己的机器放进去,那从资源上来说它就是box,这个资源就是买的一台物理机,所有数据库就放在这台物理机的下面,所有的资源都是归自己来用,如果资源不够了,比如买的小机规格不够,小机只有32个盒,某天业务成长32盒不够了,就要再买个更大一点的机器,然后再来完成这个任务。
那就是一波硬件的升级,再把换成一个,比如六四机器或者换成一个更好的数据库的。将它生产起来,那这就是IT架构下的传统数据库。
这个 IT 架构的形态现在在云的时代已经彻底被击垮了,就是现在大量的数据库,大量的企业都开始上云,上云了以后不用再维护多少台机器,买多少台pc或者买多少台小机这样的事情。都是在云上买虚拟机或者是买一些云数据库,云的一系列服务。云架构下的传统数据库是怎么样的,那最先来的就比如有了虚拟机以后,大家的做法就是买一台虚拟机,在虚拟机里面装一个数据库。比如虚拟机是个16盒的,那装一个16盒的 mac,或者是 postgre 之后就可以运行了。
那这就是云上一开始出现的自建的数据库。
再后来的就是云产商也会提供这种托管的数据库服务,就是传统的ids,可以买一个16盒的 ids,这个 ids 是云产商托管的,但是实际上跟自建的买个vm在上面装的数据库是一样的。只是它的周边配套会做得更好。这个架构会遇到的问题就是:一个是多资源耦合的问题。假如买一个 VM,那么这个 VM 是定好的,比如是16扣多少 G 的 memory,假设是65G的 memory,500T,应该到不了500T,500G 或者1T,2T 的数据库。
那么这个资源配比是固定的,因为它是从一台物理机上面分配出来的,虚拟机或者是云盘之类的。云盘对数据库的影响比较大,所以一般都是本地盘。本地盘以后出现的问题就是,可能某一个数据库的资源,比如存储量比较小,但是需要的 cpu 跟内存比较大。虚机又是从物理机里面切分出来的,所以是没办法搞定这个事情。第二个问题就是弹性会比较困难,假设这台虚拟机也是资源用完要升级,那这时必须要把实力从一台虚拟机上迁移到另外一台虚拟机上。
因为虚拟机的存储资源有可能不在同一台物理机上,可能要迁移到另外一台物理机上。那么这时数据库是携带大量存储的,因为数据库本来就是来存数据的,所以会导致整个迁移过程比较复杂比较慢。因为要把存储的数据,比如本地有2T的数据,那要把这两T的数据迁移走,但又不能影响数据库服务,数据库当下还是要继续提供服务的,迁移这2t的数据时,比如是两个小时,这两个小时不可能停止服务,有些业务可以停服,但大部分比如淘宝,买东西是不可能停服的,要是停止影响就太大了。所以这会造成传统数据库在云的架构上也是有一些问题的。主要就是这两块的问题,一个是资源规格的耦合,另外一个就是弹性的困难比较大。
那么再说回来云的本质是什么,云的本质是个很大的概念,也不是某个人来定义的,所以也不敢轻易判定云的本质是什么,所以就摘了一些比较公认一点的资料。上面那些是维基百科上的,下面是有一个国外的普通大学的课程上的说法。所以云的本质最大的点,个人比较赞同的就是云计算的本质其实是按需的一个资源的供给。
刚谈及到的传统 I T 架构遇到的问题就是,只能自己买多少资源用多少资源,不能需要多少就要多少,因为需要多少的时候就需要去传统架构下采购大量的机器,这个是一个非常重的过程。因为它这个采购链的周期是非常长的,那云最给力的点就是可以按需来给你资源,就是现在的云上,比如虚机已经完全能做到这个地步。就是要一台就给你一台,要1000台就给你1000台,这个对于高速发展的互联网业务,或者是传统企业,这种业务是非常给力的,非常能支撑他们的需求的。
第二个云的资源,云的本质就是,云是做资源共享的,因为刚才说过,要1000台都能给1000台,要一台也可以马上收缩回一台。共享这一个资源词时就可以用它的规模下的。economies of scale 这个就是云的另外一个本质,通过这种资源的共享来提高经济效益。反过来的一个例子就是如果要1000台时,买了1000台,那1000台用完,比如只是一个大出,只是一个双11,那过完了双十一,这999台总不能卖掉,因为可能又要再次使用。
如果不用云是一个自建的I T系统,那就只能把它放着,这999台的都是浪费的。那云就可以用这个资源的共享来搞定效率的问题,这是云的本质。s云原生的系统,比如云原生数据库有很多云原生的系统,那云原生的系统的本质是什么?其实这句话说得挺好,就是要对现有的系统的设计和实现进行优化,来让它更加的适应下沉的cloud infrastructure,就是云的底座或者云的架构层来实现 the best elasticity,cost,and effciency。
落到数据库上就是需要来重新优化整个数据库架构跟它的实现,来使得数据库有更好的弹性,就是更低的成本跟更高的效率。这就是云原生数据库,所以云原生数据库它其实并不限制在某一种架构上,它只要能优化原来数据库的架构,来优化它的 elasticity,cost,and effciency,就是云原生数据库,所以它是个很大的 topic。但是落到具体的工程人员应该怎么去优化这个数据库系统,那就是一个很大的问题了,所以今天就是以这个为目的来展开介绍。
当下云原生数据库最大的特点就是,传统的也就是现在市面上所在的云原生数据库最大特点就是存储的分离Storage Disaggregation,之前提到了好多问题那都是影子,就是在传统数据库架构下的遇到的一些问题。那么存储资源分离以后为什么能解决这些问题,最大的问题就是弹性的问题。原来需要大量的数据,如果升级数据库的实例的规格,就需要去做数据迁移。
存储计算分离就是存储的分离以后,从数据库分离出去以后有什么好处?首先它弹性时就不需要去做数据的牵引,它的统计结构变得非常的快,就跟下边这个例子,如下图:
它只要重新分配一个计算节点,这个计算节点有更多 cpu 更多的内存。那它的数据是不用迁移的,因为数据是在一个大的共享存储池里面的,所以它就能解决这个问题。就是这里的第二条 scale up for compute node,第一个点是现在资源结耦的问题一定程度上也解决了。原来耽误里机最大的磁盘,无论差多少块估计10T这个级别就差不多,如果用 ssd 的大存储可能更高,但数据库一般要求比较高,至少也是个 ssd,基本上也就能到达10T这个维度。
如果一个数据库有20T,那就放不下了,现在因为是个共享存储,所以可以达到,比如像现在最大可以达到100T,也可以做的更大,那么这个存储的就已经没有问题了。最后可以在一份存储上加入更多的读解点,所有人可以来共享同一份存储的数据。那么就是 scale for read 这个点,所以存储计算分离是,当初在想怎么去 redesign database时,这一个比较大的点认为能解决掉这些问题。所以这也是云原生数据库当下,第一代云原生数据库最大的特点。