一、云原生分布式数据库PolarDB-X技术架构
作者:黄贵,阿里云PolarDB-X 数据库研发负责人
PolarDB-X 是一款云原生分布式数据库,为存储计算分离的分布式数据库架构,由以下几个组件构成:
• 元数据服务(GMS)。GMS 是一个高可用集群,利用Paxos 协议实现数据的高可用,负责存储全局的元数据,包括数据的分片、数据节点计算节点的拓扑信息以及日志节点拓扑信息,还负责提供全局授时的服务,用于判断数据的全局可见性,提供外部一致性事务保证。
• 计算节点。计算节点无状态,负责接收应用发来的SQL,任意计算节点都可以完成SQL 的解析、重写、优化、转化为物理执行计划并执行,支持MPP 的执行框架,负责整个计划的调度与执行,并最终返回结果。
• 数据节点。是数据存储的载体,同时也负责单机执行计划的执行。数据节点会组成复制组,每个组由Paxos 一致性协议保证数据的强一致的高可用,为了横向的扩展能力会将其切分为很多分片。数据片会根据一定的规则分布在各个DN复制组上。
• 日志节点。提供全局一致的Binlog 能力,兼容MySQL 生态。日志节点输出的全局一致Binlog 完全兼容单机MySQL 提供的Binlog ,因此可以将整个PolarDB-X 看作单机的MySQL 来使用,包括原来的生态、对接的下游数仓、大数据类的生态,都可以通过CDC 消费日志。
PolarDB-X 架构在阿里云平台上,包括生命周期的管理、备份、容灾、数据迁移、数据的DevOps、SQL 的全流程诊断、DAS 等都依托于云平台提供的一整套数据库服务。
PolarDB-X 作为分布式数据库,具有以下三个特点:
• 原生MySQL 生态。提供完全兼容MySQL 的能力,包括语法、语义、功能、协议以及生态的兼容。原生的MySQL JDBC 的connector 或Java、Go 等版本的客户端connector 都可以直接连接PolarDB-X,享受完全一致的体验。
生态的兼容方面,利用CDC,PolarDB-X 既可以作为MySQL 的备机,通过Binlog同步数据,使用MySQL 的replication 功能,实现主备高可用的模式,也可以作为一个大的MySQL 数据库,通过CDC 同步给下游的数据生态系统。
• 一体化透明分布式。PolarDB-X 希望用户不再需要关注数据分布的细节,也无需为此做太多优化,我们希望尽可能地为用户提供与单机数据库一致性的体验,不管是建表还是应用均无需做任何改变即可享受到分布式数据库的扩展能力。降低用户的使用门槛。另外,PolarDB-X 支持手工分区模式,按实际业务需求进行调优。分布式主要体现在自动扩展、分布式事务以及Online DDL。
• 企业级数据库的能力,包括强一致数据的高可用、支持HTAP 以及对于数据安全的保障。
分布式数据库并不是新技术,只是早期的分布式数据库更多地存在于学术界,作为研究对象。2000 年左右,互联网开始蓬勃发展,业内意识到了单机数据库以及集中式数据库的局限性,无法应对互联网业务增长带来的海量数据以及对于大规模数据的高并发、高吞吐的写入需求。
为了增强数据库的扩展性,逐渐发展出了NoSQL。而NoSQL 数据库为了扩展性,放弃了很多关系型数据库的实用特性,包括ACID 等,使得应用不得不编写复杂的逻辑来尽可能保证数据一致性,变得更复杂。后来,关系型数据库和分布式技术相结合发展出了NewSQL,这也是分布式数据库从理论走向应用的发展阶段,彼时的分布式数据库更多地被大型互联网公司使用。
《云原生一站式数据库技术与实践》——一、云原生分布式数据库PolarDB-X技术架构(2) https://developer.aliyun.com/article/1231704?groupCode=aliyundb