业务中用的是阿里云自研的PolarDB,分析下PolarDB的架构。
认识PolarDB
介绍
PolarDB是阿里云自研的,兼容MySQL、PostageSQL以及支持MPP的PolarDB-X的高可用、高扩展性的数据库。
架构
部署
云起实验室 - 阿里云开发者社区 - 阿里云 (aliyun.com)
数据同步
读写分离
PolarDB和MySQL集群一样,采取的是读写分离的模式,通过将bin log写入消费队列中,读节点采用CDC(Change Date Capture)的方式订阅数据更新,实现数据同步。
主备复制
为了提高PolarDB的高可用性,通过一主一备一日志的方式提高系统的可用性,其中:
- 只有leader节点接收读写请求;
- follower节点在主节点故障时,发起投票,得票超过半数就成为新的主节点;
- logger节点只记录日志和参与投票。
分布式支持
高扩展性
因为PolarDB采取的计算与存储单元分离的模式,所以相比于传统的MySQL数据库,PolarDB的扩展性更高,对于不同场景,可以选择不同的计算资源。
支持MPP
MPP,即大规模并行处理,因为PolarDB的计算节点和存储节点都是独立可扩展的,对于大数据集的计算,PolarDB可以通过下面方式来实现:
- 分布式计算节点:可以通过增加计算节点,横向扩展来提高响应时间;
- 数据分区:数据水平分割,存储在不同节点上,不同存储节点可以并行执行查询任务;
- 共享资源:使用shared-storgeing技术让不同节点间共享存储资源,可以减少数据复制和传输的开销。
HTAP的支持
PolarDB支持事务OLTP与分析处理OLAP允许在同一套系统中,上面说过它实现大规模数据处理的方式;
对于PLTP,HTAP则是通过基于XA的TSO事务实现的。