开发者学堂课程【PolarDB-X 开源系列课程:本地部署 PolarDB-X(一)】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/1032/detail/15140
本地部署 PolarDB-X(一)
内容介绍:
一、 PolarDB-X 发展史简介
二、 PolarDB-X 系统架构演进
一、 PolarDB-X 发展史简介
我们这个课程是《7天玩转 PolarDB-X 开源训练营》,一个七天的训练营课程。今天是课程的第一讲,会带领大家稍微了解一下开源 PolarDB-X一些基本情况,所以今天是一个入门的介绍。
PolarDB-X这个产品,它的历史比较长了,中间做过一些一些迭代和发展。所以在这个课程一开始,我还是有必要花一点的时间讲一下这个产品的发展过程。
PolarDB-X 的历史可以追溯到2009年。2003年的时候淘宝网成立,成立之后淘宝网的业务发展非常的快,后台的架构跟着快速迭代。在2009年的后的时候,后台的数据库架构用的是 IOE 的组合。
大家可能也听过“去 IOE ”这项运动, IOE 简单来说,就是 IBM 的小型机构入股的数据库,加上EMC的高端存储,这样的一种方式。用它做后台的系统的话,当数据量不是像淘宝那样巨量的话,还是非常好用的。但是因为淘宝网它的数据规模的非常多,在2009年的时候,阿里巴巴内部就发起了一个“去 IOE ”这项运动,把这样的架构去掉。出发点的话,是想用自研的一个分工分表的中间件 TDDL ,再加上阿里自己维护的一个MAC的分支叫 ALSQL 来取代 IOE 这套组合来解决两个问题:第一个问题是系统扩展性的问题,包括它并发的扩展,以及存储的扩展。第二个是把后台的存储的成本给降下来。这套组合是在2011年双11的时候,成功接管了核心库之一,就是商品库,验证了它的可行性,后来就逐渐的推广开来。
直到2013年“去 IOE ”这项运动告一段落之后, TDDL 加 ALSQL 这套组合就成为阿里巴巴所有业务接入数据库的标准。也就是说,当前阿里的所有的业务它接入数据库的话,依然是这样的一种方式。在2015年的时候,TDDL 就以中间件的形态在阿里云上发布,产品的名称是 DRDS 。如果之前有用过我们的云产品的话,大家应该对这个名字是比较熟悉的,即分布式关系型数据库服务。
上营之后,这个产品在一直持续的往下迭代,它迭代主要围绕的点是解决一些在分库分表这样的架构下,一些比较难解的问题。就比如说第一个是扩容,如果大家之前有运维过用分工分表来支撑的业务的话,会知道它后台的系统,如果出去要做扩容的时候,这件事情还是非常的麻烦的,因为它的代价非常的高。
在2016年的时候,尝试用外部数据迁移来自动化的支持扩容这件事情;在2017年的时候,基于MySQL 的差异,实现了内置的分布式事务这样的一个方案;2018年的时候,尝试把分工分表中间件再加上下层的 MySQL 的复杂系统的运维成本降下来,所以又做了一个一体化的尝试;在2019年的时候,又把过去10年的一个经验和探索进行了总结回顾,以及对未来又做了重新的思考;最后在2020年的时候推出了这个产品的新一台的架构,并且对它的品牌做了一个升级,也就是从原来的 DRDS 升级为现在的 PolarDB-X 。
所以大家可能在印象里面会对 PolarDB-X 这个名字感觉稍微有些陌生或者新鲜,因为它原来在2020年之前的名字不是这样的,但这个产品本身的时间可以说是用历史悠久这样的词来形容了,之后这个产品会一直迭代,直到现在;去年的云栖大会,也就是10月20号的时候, PolarDB-X 就宣布了开源。
这就是简单的 PolarDB-X 产品的发展的过程,简单来说,这是一个具有十几年历史的、历史悠久的产品。它一路过来的话,是从最早期的分工分表中间件到现在的这样一个云源生的分布式数据库,不断的迭代的过程。
二、 PolarDB-X 系统构架演进
简单来说一下它的系统架构的演进。
最早的话,业务一开始通常使用单机数据库就够了,所以我们会用一个在本地部署、磁盘也是本机的磁盘单机的数据库。比如是 MySQL 或是PG这样的数据库。随着业务的发展,可能需要对系统的容量,包括读写的并发支持,或者是存储规模的扩展都会有比较强的诉求。这个时候通常在我们国内比较流行的解决方案,就是用一个分库分表的中间件,那也就是前面刚才提到的 TDDL 或者是 DRDS ,这就是中间件形态来解决扩展性这样的诉求。扩展性的问题解决了,但是中间件会引入一些新的问题,所以这个架构就会持续往下迭代,也就是我们推出的这张图里面所谓的分布式2.0这样的一个架构,也就是会尝试将上层的分布式的内层跟下层的存储层进行一个融合,来将很多的运维也好,或者说是很多的那种不必要的下层的参数也好,进行一个产品化的一个封装,这样就是一个一体化的形态。在使用的时候,就会用一个比较低的成本来使用这样一个分布式的一个数据库,这是产品大概的演进过程。如果你对数据库,尤其是分布式数据库的一些架构的设计不是很了解的话也没关系,因为你主要是去使用它。