PolarDB架构解析

1,476 阅读5分钟

图片

2020年11月24日,国际知名行业研究机构Gatner公布2020年全球云数据库魔力象限评估结果,阿里云首次挺进全球云数据库第一阵营--领导者(LEADERS)象限。Gatner分析师评价道:阿里云产品上具备强大的创新能力,其数据库PolarDB已全面应用于零售,电信,物流,金融等多个行业。在云原生关系型数据库领域PolarDB的全球部署能力,分析师认为达到了国际领先水平。

图片

云原生关系型数据库PolarDB是阿里巴巴自主研发的下一代云原生关系型数据库,100%兼容MySQL、PostgreSQL、高度兼容Oracle语法。计算能力最高可扩展至1000核以上,存储容量最高可达 100TB,在新的架构中可以达到PB级。经过阿里巴巴双十一活动的最佳实践,让用户既享受到开源的灵活性与价格的优惠,又享受到商业数据库的高性能和安全性。

PolarDB整体架构

图片

PolarDB整体架构上也可以分为三个部分:Proxy层(PolarDB的接入层), PolarDB计算层(支持MySQL,PostgreSQL,Oracle), PolarDB存储层。

PolarDB的本身的生态非常丰富包含:

图片

下面我们更多的关注在PolarDB-MySQL , PolarDB-X这两个上面。下面我们对PolarDB-MySQL集群架构做一个分析,最后附带一些PolarDB-2.0的介绍。

PolarDB MySQL集群整体架构

图片

PolarDB Proxy

连接地址,SQL转发,保证事务的一致性,无持久化存储东西。100% MySQL协兼容,多个连接地址,可以起到业务资源隔离,可以一个Proxy访问后面多个计算节点,实现读写分离,多个节点自动负载均衡,应用访问的一致性保障。

图片

通过Proxy层把不同的业务用不同的连接地址,使用不同的数据节点,避免相互影响。并行查询可以在客户端对指定的SQL开启,不会影响核心业务。

PolarDB 计算节点

在该节点支持MySQL, Pg, Oracle相关语法,无持久化存储数据。 该节点主要用于:SQL解析,事务执行及保证,Query Cache功能等。该节点约束:1个写节点Primary,1-15个只读节点Secondary。所有的节点数据共享,节省成本,物理日志复制,主备延迟<1秒,支持ParallelQuery,充分利用多核CPU的优势,主备切换数据0丢失。其中Primary节点也可以直接对外提供服务。

因为计算机节点无数据持久化,所以支持快速扩容。添加一个只读节点大概在5分钟内快速创建并提供服务。如果开启“自动扩容”,PolarDB会根据系统的负载高低,自动扩容或缩容,从而可以让用户更经济地使用PolarDB。

PolarDB 在计算层支持Fast Query Cache在8核64G配置4G的Cache内存查询性能可以提升50%以上。

在事务这块产生的Redo日志均实时写入共享存储,只读节点,利用存储上的数据文件和Redo日志,在内存中恢复最新的数据,对外提供服务。每一次主备故障切换,只读节点均可以从存储中获取最新的事务Redo日志,因此不会出现数据丢现象(RPO=0)

在计算节点这块PolarDB还有对应的MaxScale可以实现对慢SQL的自动改写及优化,从而自动提高SQL的执行效率。

图片

PolarDB  存储层

单可用区3副本,双可用区6副本,ParallelRaft共识算法实现多副本强一致,秒级备份,且无需对数据库加锁,超低的延迟网络IO,利用25Gb的RDMA网络, Bypass Kerner的用用态协议支持。利用RDMA可以避免以太网的性能压力。

在存储层可以实现快速备份:不超过30秒(与容量无关),支持高频备份每个2个小时做一个备份,分钟级恢复:从全量备份到恢复,不超过10分钟。从全备份中可以部分恢复。

在备份中使用了Redirect-on-Write的方式,每次打快照并没真正的Copy数据,只有当数据块后期有修改了(write)时才把历史版本给保留给Snapshot,然后生成新的数据块,被原数据引用(Redirect),因此,不管数据库的容量是10G还是10TB,每次备备份(快照)均不超过30秒。但需要注意历史快照管理,以防止无限增大。

图片

PolarDB的HTAP方案

在PolarDB中支持 Parallel Query, 慢SQL Rewrite, In-memory Column Index(全内存列式索引)该方案对于OLAP计算节点,估计需要较大的内存,且MySQL版本要选择MySQL 8.0以上。

图片

图片

全球化部署方案

图片

多个PolarDB对外看起来就是一个集群,但所有集群中只有一个能可以写,其它都是可读。最多支持5个集群,集群间数据同步延迟小于2秒。每个集群均支持读写,从集群会把写请求转给主集群,因此集群上的写请求会跨Region,延迟略高。

所以在PolarDB中对于两地三中心,三地六中心 这种架构支持非常好。多Region之间的流量传输目前是免费的。

PolarDB 2.0 (PolarDB-X)特性

到目前来看PolarDB在架构和性能上都在追求极值。但目前在一些业务开发中,动不动还是能在一个库中搞出来几百张表,SQL编写非常复杂,一个SQL上百,上千行,关联十几张表等情况。在PolarDB 2.0版本引入128个RW节点并行写入,库表写入点秒级切换。对于多节点,并发写入进一步的优化。该功能估计需要到2021年Q3才能上线。

图片

备注: 以上解析参考外面公开资料,仅供参考。也欢迎使用过PolarDB或是Auror 的朋友提供使用,评测相关文章投稿&交聊。