本地部署 PolarDB-X(二)|学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 快速学习本地部署 PolarDB-X(二)

开发者学堂课程【PolarDB-X 开源系列课程:本地部署 PolarDB-X(二)】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/1032/detail/15140


本地部署 PolarDB-X(二)

内容介绍:

三、 PolarDB-X 产品介绍

四、 PolarDB-X 核心特性

三、 PolarDB-X 产品介绍

PolarDB-X 这个产品有哪些特点

首先来看一下 PolarDB-X 的系统架构是怎么样的?

从逻辑组件的视角来看,中间这块就是 PolarDB-X 个核心的组件。

从左往右看的话

image.png

第一个组件是 CN ,也就是分布式的计算层这一层就是刚才图里面所讲到的上层的计算层,你可以把它理成分工分表那一层,如果你对中间比较熟悉的话

层跟我们的业务应用直接进行交互的一层,也就是说你的应用里面的不管是只用JPEG直连还是用一个数据库的连接池,它首先是连接到了 CN组件上面,那 CN这个组件是个无状态的,可以进行无的扩展,目前 PolarDB-X 这个产品的CN的节点最大规模可以扩展到1024个节点,这也是分布式数据库它的水平扩展能力很强的体现这是第一个节点,同时会负责将你的数据进行拆分计算。统里面会用到事物这样的东西 PolarDB-X 里面,因为分布式数据库的原因,里面会有分布式事物,那么CN这一层它也会支持分布式事物。

第二个组件是我们的 DN 组件。为了便于理解里你可以把它简单的理解成就是一个 MySQL ,只不过是我们深度定制的这样的一个 MySQL 。DN 的话,就是我们的数据层,也就是说最终我们的数据还是存在了 DN 里面CN那边是不存数据的。DN 这个节点的话,第一个是存数据,第二个它有非常强的扩展的能力,它跟CN一样,最大规模可以支持到1024个点的扩展。在 PolarDB-X 里面 DN 还有另外一个非常重要的特点,就是它是用我们自研的 paxos 的库实现了它的高可用能力。

也就是说每一个 DN 的节点,可以理解为它有三个副本在运行,这其中的任何一个副本挂了,里面的数据丢了也好,或者它所在的机器当机了也好,或者说当前网络不可达也好,都不影响这个节点的一个可用性,这也正是分布式系统它所能够提供的高可用能力的心体现这是我们的 DN 点。

第三个是面的GMS这样的一个组件那这个组件它其实也是一个DN或者说是一个 MySQL ,只不过它是一个扮演特殊角色的DN。它首先在整个系统当中是一个节点,不像 CN DN 可以无限的扩展,它只有一个节点,只不过它是一个高可用的节点,也就是它是一个三副本的高可能节点,那么它会扮演提供这样几个功能

(1)第一个是会为整个系统提供一个时间戳这样的一个服务时间戳比如说在我们的分布式事务里面,我们需要有一个能够提供全局时间戳的一个组件,那么在 PolarDB-X面就是由GMS的组件来提供的,也就是这张图里面说的 TSO 。

(2)第二个功能是我们整个系统当中的原数据都是存在GMS里面的,比如说库表的结构账号信息权限信息等等,这些信息都是存在 GMS 里面它内部的结构的信息,比如说CN最终部署之后,它的IP和端口是什么 DN 的IP端口是什么等等这些信息,也是存在了 GMS 里面

最后一个组件是 CDC如果你对其他类型的分布式数据库之前有所了解的话,会发现 CDC这个组件可能在 PolarDB-X 里面是比较特别的一个存在,其他的数据库里面都没有 CDC 这个组件是 PolarDB-X 用来提供全局日志的个组件。所谓的全局日志,如果你对 MySQL 比较熟悉的话,它是用来提供跟 MySQL binlog  完全一致的全局 binlog 的组件如果不了解的话, binlog 是按照时间顺序严格的记录了这个系统当中所有的数据的变化也就是说它是一个队列,如果你从头到尾去消费了这个队列,然后在本地重放的话,你可以把系统当中的数据原模原样的给还原出来就是一个增加日志的一个组件

以上就是 PolarDB-X个核心的组件, CN、DN、GMS 再加CDC

 

四、 PolarDB-X 核心特性

image.png

这部分讲完之后,我们再来了解一下PolarDB-X核心特性每个产品都会有自己的特点, PolarDB-X 也不例外

1. 第一个特点首先得讲到水平扩展就刚才分布式2.0的架构或者 PolarDB-X 系统架构图说明了 PolarDB-X 的架构是Shared- nothing的一个架构Shared -nothing就是 CN节点可能不共享任何的一个数据或者说是无状态的,可以做一个很好的一个水平扩展能力,就像刚才提的,目前我们测下来 PolarDB-X集群的最大的规模可以扩展到1024个节点,也就是说这个系统当中可以有1024个CN,1024个DN那这是个非常夸张的一个分布式系统。

同时如果你对分布式或者是分工分表的一些基本原理有了解的话,那我们同时是支持 Hash 和 Range 这两种数据的路由的算法同时也支持水平透明的水平扩展的能力这里所谓的透明的话,就是你可以像使用单机一样,使用单机的 MySQL 一样去做表或者是加索引等等这样一系列的 DDL 操作,或者是插入数据的 HTML 的操作

分布式并不需要太强的了解就可以PolarDB-X 会自动的帮你把这些东西给处理好,这就是所谓的透明水平扩展一会在我们的演示当中也会进行进一步的展示,让大家有一个更强的体感,包括课后大家做实验的时候,也可以来亲自去体验一下所谓的透明水平扩展到底是什么样的体感。这就是 PolarDB-X 的第一个核心特性,它是一个分布式的数据库,采用的是 Shared-nothing 的架构有很强的水平扩展的能力,最强呢可以扩展到1024个节点,这是第一个特性。

2. 第二个特性的话就是高可用这点在刚才讲 DN 节点的时候也已经提到了可用主要是依赖于我们自己实现了 X-Paxos 这样一个基于Paxos 强一致的库这样一个协议算法来实现了同时还会支持其他的一些能力,比如说因为我们将数据进行了一个重新的分布,那么你可能有些 SQL 在进行查询的时候,尤其是一些状语相关的操作在进行查询的时候,数据因为不同的拆分的算法导致数据的分布不同等,会让你的查询效率降低所以我们会提供一些其他的,让你有能力去干预到这个数据分布的特性比如说将若干个表进行一个Goup的分组,一个组里面的这些表,在拆数据的拆分方式上保持一致,这样你在做一些join的相关操作的时候,能够让他们进行更快的据查询操作。另外一个比如说你可以来指定说我这个数据最在物理位置上是分布在某一个机房或者是某一个可用区的,使我的应用访问的时候呢可以有一个就近的原则我们可以提供这样一些能力。

这个就是 PolarDB-X 提供的第二个能力叫做高可用同时高可用这边从系统架构其实你可以看到,除了 DN 这边通过 X-Paxos 来保证数据节点的高可用之外,我们的 CN 节点其实也是高可用的首先因为它是个无状态的节点,所以你可以比较容易的把它给扩展出好多份,其中任何一个节点挂掉之后,其他节点都可以正常的工作,他们完全不依赖于这个挂掉的节点,所以CN它其实也是一个具备高可用这能力的包括GMS也是一样的,因为它是一个三副本这样的一个设计,所以GMS三个节点当中有一个挂架之后,它是不影响它对外服务的一个能力的包括 CDC 也一样的,所以整个系统的1四个组件都是有高可用能力的。

3. 第三个特点是 MySQL 生态兼容刚才讲前面 PolarDB-X 这个产品发展的过程,也就是那段废话的时候,大家应该可以看得出来这个产品从一开始就是用分分表的中间,再加上一个 MySQL 来做架构设计的,所以后续很多的功能的持续的迭代和开发,那显然都是要考虑到 MySQL 的兼容,这其实是个很自然的过程,因为出发点就是 MySQL ,所以我们要考虑的兼容的 MySQL 生态。另外一点 MySQL 生态不管是在国内还是在全球都是非常大非常繁荣的生态,去兼容它也是一个合理的选择。在 PolarDB-X 在兼容 MySQL 上面,第一个因为它出发点就是 MySQL ,所以会有很多的先发的优势。

所以它在兼容上面可以做得更深入一些,比如说它不仅仅会只做到说对 MySQL的通讯协议的介入,也就是说你通过 JTPG 连我的时候可以把我当成 MySQL ,发过来那些 SQL 不会语法报错不会仅仅停留在这个层面而是会做得更深入一些。 MySQL 的大部分语法以及它大部分的功能我们都是支持的,然后事隔离级别也是跟 MySQL 是一样的,包括 MySQL 的上下游的一些系统生态的兼容。

比如说刚才提到的,我们通过CDC这个组件提供了一个完全兼容我们 MySQL binlog 的全 binlog 的能力,那么它就可以实现系统架构这张图里面所示的无缝跟 MySQL 下游的系统进行一个互通, MySQL 的下游系统,比如说用开源里面有非常有名的开源工具,也是我们团队在做的叫 connctal ;

另外一个就比如说公有云上的阿里云提供的叫DTS的等等,这些 MySQL binlog 的订阅工具都可以无缝 PolarDB-X 里面。另外一个比如说大数据的系统可以用CDC 直接把或者 PolarDB-X 当成 MySQL 来连接到 PolarDB-X 里面这个都是我们所做的兼容的一部分。 

MySQL 的上游,比如说通常你在部署 MySQL 的时候会进行一个主的搭建,来让这个系统有高可用这样的能力,那么我们在 PolarDB-X 里面也提供了一个application的能力,你可以将 PolarDB-X 无脑的作为一个 MySQL 的背来搭建一个 MySQL PolarDB-X 的主同步链路等等,这些都是我们在 MySQL 兼容上面所做的一些工作。在前段时间就是5月25号的时候,我们做过一个 PolarDB-X 的开源的新版本的发布会,也就是2.1这个版本,那里面对 binlog 尤其是replication能力做非常详细的展示,大家如果有兴趣的话,可以再去看一下那个直播的回放。这是 MySQL 兼容的部分

4. 第四个就是分布式事物作为一个数据库,显然得具备提供事物这样一个基本的能力,那如果大家对事的实现之前的各种方案有所了解的话,那么 PolarDB-X 实现的方案是 MVCC+TSO+2PC 这样的一种组合来实现了一个工程事务能力同时我们做了大量的优化,但是这分布式事务的效率在生产可用的状态。

第五个特点是 HTAP 。 HTAP是目前大家做分布数据库都会去往这个方向去靠的一个点 PolarDB-X面具体来说做的几个跟 HTAP 相关的一些能力

(1)第一个是我们具有原生 MPP 的能力所谓的原生 MPP 能力不是将一个外的类似于sbug 的东西,挂在了 PolarDB-X 下面,就提供在病情加速查询的能力那我们是自己又重新实现了一遍,再重新实现 MPP 的能力有什么好处呢?

就是在站在使用的视角,你用来做TP查询的 SQL 跟用来做AP查询的 SQL 是完全一样的,他们在语法的兼容还有其他的功能等等很多的地方都是完全一致的,不会出现比如说你TP上面的 SQL 可以跑,但是如果跑AP下面挂的是 sbug ,可能 SQL 又不能跑了一个诡异的行为那这是所谓的原生 MPP 。

(2)第二个就是智能读写分离因为通常来说我们是需要业务来将那 TP和AP的流量做一个划分,TP的就连接到TP所对应那个连接串,AP就连到AP所对应的连接串,这无疑就增加了我们应用上面连接池的维护的复杂度更主要的是会让我们负责做应用开发写 SQL 的那些同学首先得判断获得的 SQL 到底是做一个TP查询还是做一个AP查询很多情况下它是可以判断,但是也有很多情况下,它是处于一种中间态,模棱两可的状态,所以这件事情是比较困难的我们这边就提供了一个统一的接入点,也就是说你的应用可以无脑的全部入到 PolarDB-X  CN 节点上面,那不管是TP的查询还是AP的查询,都可以直接让 SQL 发过来。那我们的 CN 会自己来判断这个 SQL到底是个TP还是个AP的查询,来将它们自动的进行一个隔离。所谓的隔离是指我们TP和AP从CN到后续的DN整个查询的链路在资源上面都可以做到物理的隔离这样可以避比较大批的查询,影响到我们在线的TP的一个业务这是智能读写的功能这个功能是依赖于我们部署的时候需要有一个特殊的指定。

(3)第三个 OSS 归档存储当前大家都会在讲降本增效概念,尽量把我们的成本给降下来,那我们的后台系统当中很大的成本来自于数据的存储成本在数据库里面其实有很多的数据本身没有那么高的频繁的访问次数,就是所谓的数据如果你是将它跟经常反馈的数据放在一起,那么它们都存储在一些比较贵的类似于固态硬盘等的存储上面,那么它的成本就会比较高因此我们提供了一种可以将库里面冷的数据,将他们归档到 OSS 或者其他的一些比较低成本的存储上面的能力,来使系统总体的成本降低。

5. 我们会提供提供一些企业级的特性所谓的企业级特性,可以认为就是方便你做一些业务或者做管理的功能。

(1)第一个功能就是 SQL 限流你的业务可能在跑得好好的,突然有其他的应用新上线,但因为它的 SQL 没有经过充分的验证或者是调试,上线之后就是个 MySQL 会把这个系统给打这个时候可能还没有办法在短时间内定位到说来自于哪个应用,但如果你知道是哪个 SQL 的话,可以通过 SQL 限流的功能直接将 SQL 进行限制使我们的系统可以快速进行恢复。

(2)第二个的话就是 swin 推荐如果你需要对你的库表进行一个优化,可以通过 swin推荐这个功能,让我们的系统来告诉你在哪个表上面加一个怎样的 swin ,可能可以提高查询的效率等等它有 TDE 、三权分立等等这样的能力,这就是我们提供一个所谓的企业级特性。

6. 最后一个就是云原生。因为它是基于原则性基础设施来做的数据库,开源的部分,我们提供了 K8S Operater 这样的部署的方式如果你们的业务是运营在 K8S 的基座上面,可以将 PolarDB-X 值接 Operater 上面进行部署进行使用。另外就是我们基于 Prometheus+Grafana 做了K8S 部署形态的监控系统,这个大家有兴趣的话也可以尝试,后续我们还有更多基于 K8S 生态来做的一些能力,那么到合适的时间点会开放来给大家使用。

以上就是 PolarDB-X 这个产品的一些特点,水平扩展高可用、 MySQL 生态兼容、分布式事务、 HTAP、企业级、云原生。如果大家想要这七点记少一点的话,第一个记住它这个分布数据库显然具有水平扩展性二是于 X-Paxos 协议,所以它是有个高可用的能力第三个就是 MySQL 生态兼容,它是做得非常深入的。

PolarDB-X 开源之后,我们陆续的往外推出了很多的资源,可以让大家来了解或者学习 PolarDB-X这些资源目前包括4个部分

第一个就是我们的源码它是放在 Github 上面的,目前是有相关的五个参股,都是以GalaxySQL 来打头的,大家可以去搜一下这个 GalaxySQL 来作为产品的一个入口那么在 Galaxy SQL这个仓库的维度里面,会把其他几个仓库的链接也会给加入。简单的来说,GalaxySQL 就是对应刚才架构图里面的 CN ,也就是我们的计算节点, GalaxyEngine 我们的存储节点DN以及GMS,CDC就是我们刚才介绍的 CDC 这个组件,那 GalaxyKube 就是我们说的K8S operater这个东西。

第二个部分就是我们的产品和文档网站大家可以直接在浏览器里面输入 https://polardbx.com 这是产品的官网以及一些产品文档。

第三个就是我们的知乎的官号在知乎的官里面大家可以搜一下 PolarDB-X 那个是我们团队维护的一个重点讲解 PolarDB-X 的实现原理,它的一些源码解读以及数据库领域相关的一些论文阅读的地方。

最后一部分就是云起实验室包括本次训练营的课程最后的课后作业的实操的部分也都是在云起实验室进行的,后面我会给大家一个二维码,大家可以直接扫码来链接到我们云起实验室的入口。

接下来我们会做什么?

image.png

首先在云栖大会的时候,我们做了第一次的开源然后是在今年3月份的时候做了第二个比较重要版本的开源那么接下来一个目标是6.30这样的一个目标,我们会加入更多的能力在里面。那在9.30的时候,会尝试去做一个国产化相关的一些适配。

那这个 roadMAC  ,不是一个非常精确的 MAC,这个 MAC 可能会根据当前的展来做调整大概的话,我们会每三个月发一个版本,这样一个节奏。

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
6月前
|
运维 关系型数据库 分布式数据库
PolarDB产品使用问题之列存索引的原理是什么
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
分布式数据库 索引
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X分区管理(6)
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X分区管理(6)
126 0
|
分布式数据库
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X分区管理(4)
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X分区管理(4)
138 0
|
SQL 分布式数据库 索引
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X分区管理(7)
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X分区管理(7)
136 0
|
SQL 存储 运维
PolarDB-X 的部署与运维(三)| 学习笔记
快速学习 PolarDB-X 的部署与运维。
PolarDB-X 的部署与运维(三)| 学习笔记
|
弹性计算 运维 Kubernetes
PolarDB-X 的部署与运维(二)| 学习笔记
快速学习 PolarDB-X 的部署与运维。
PolarDB-X 的部署与运维(二)| 学习笔记
|
存储 SQL 运维
PolarDB-X 的部署与运维(一)| 学习笔记
快速学习 PolarDB-X 的部署与运维。
PolarDB-X 的部署与运维(一)| 学习笔记
|
存储 运维 关系型数据库
本地部署 PolarDB-X(一)|学习笔记
快速学习本地部署 PolarDB-X(一)
本地部署 PolarDB-X(一)|学习笔记
|
SQL 弹性计算 Kubernetes
本地部署 PolarDB-X(三)|学习笔记
快速学习本地部署 PolarDB-X(三)
本地部署 PolarDB-X(三)|学习笔记
|
SQL 算法 前端开发
第二讲-用 PolarDB - X 开发应用(三)|学习笔记
快速学习第二讲-用 PolarDB - X 开发应用(三)
第二讲-用 PolarDB - X 开发应用(三)|学习笔记