searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

业界云数据库方案(一):Amazon Aurora

2023-08-18 09:34:20
22
0

1 系统设计

Aurora是Amazon基于MySQL为云上业务定制的一款关系型数据库产品,主要面向OLTP场景。

Amazon认为,传统数据库一般采用单点写多点读的主从架构,最大瓶颈不在计算或存储,而在网络IO。

 

Aurora通过架构优化,最小化网络IO,提升了系统扩展性和可用性。

 

计算与存储分离

计算层(包含Primary RW DB和Secondary RO DB),包含了大部分核心功能,比如查询处理,事务,锁,缓存管理,访问接口和undo日志管理等。计算层还是一主多从的架构,最多支持15个从节点。

每个计算节点部署RDS HM Agent监控主从节点状态,故障时实现高可用切换。

存储层是个分布式存储服务,可以轻松应对故障。Aurora将部分核心功能(故障恢复,备份还原)下推到存储层进行后台异步执行,并且不影响前台请求处理。

 

日志即数据库

计算层只往存储层写redo日志,大大减少计算与存储节点之间的网络压力,这为提升数据库性能提供了保障。

下图是一主多从、部署在3 Availability Zone的6副本架构的写入过程。主只将redo日志写入存储服务(获得过半数确认后写入成功),同时主也会将这些日志发送到从。

从应用redo日志更新其缓存。

 

 

    存储节点收到写入的redo日志时的处理流程

 

1)接收日志记录并添加到内存中的队列

2)记录在磁盘上并进行 ack 返回

3)对于批量 Redo log 进行整理,确定没有批次丢失

4)与其它副本存储节点进行对齐,从而保障数据自愈能力。通过 Gossip 协议,它们可以知道集群中有哪些节点,以及这些节点的状态,每一条 Gossip 消息上都有一个版本号,节点可以对接收到的消息进行版本比对,确保二者得到的信息相同。

5)日志记录合并到新的数据页

6)定期将日志和新的页面复制到 S3

7)定期进行过期版本垃圾数据回收

8)定期验证 CRC 码页,如果发现损坏数据块,与相邻节点进行通信获取完好的数据块。这是 Aurora 实现可自主修复损坏数据块的关键技术

注意,只有步骤 1 和 2 完成,前台即完成(commit),其它操作都是异步进行。

 

 

2 性能容量

吞吐量最高可以达到标准 MySQL 的 5 倍、标准 PostgreSQL 的 3 倍,成本只有商用数据库的 1/10。

跨三个可用区添加最多 15 个低延迟读取副本。

每个数据库实例最高 64TB。

 

3 优势缺陷

优势:

1)存储节点,计算节点弹性伸缩,按需配比

2)一份存储,对接多个计算节点,多租户存储服务,成本低。

3)只传递redo日志,巧妙的解决写放大问题。

4)实例快速故障恢复

5)架构简单,通过多副本能快速扩展读能力,单个写副本则巧妙地避免了分布式事务等复杂实现。

6)完全兼容MySQL 5.6、PostgreSQL

 

缺陷:

1)适合于读多写少的应用,写水平扩展依赖于中间件方案。

2)SQL层与社区版MySQL一样,复杂查询能力(比如OLAP场景)较弱。

3)单个写副本,无分区多点写能力(用户维度+时间维度)

4)总容量有上限,64TB

 

0条评论
0 / 1000
李****达
5文章数
1粉丝数
李****达
5 文章 | 1 粉丝
原创

业界云数据库方案(一):Amazon Aurora

2023-08-18 09:34:20
22
0

1 系统设计

Aurora是Amazon基于MySQL为云上业务定制的一款关系型数据库产品,主要面向OLTP场景。

Amazon认为,传统数据库一般采用单点写多点读的主从架构,最大瓶颈不在计算或存储,而在网络IO。

 

Aurora通过架构优化,最小化网络IO,提升了系统扩展性和可用性。

 

计算与存储分离

计算层(包含Primary RW DB和Secondary RO DB),包含了大部分核心功能,比如查询处理,事务,锁,缓存管理,访问接口和undo日志管理等。计算层还是一主多从的架构,最多支持15个从节点。

每个计算节点部署RDS HM Agent监控主从节点状态,故障时实现高可用切换。

存储层是个分布式存储服务,可以轻松应对故障。Aurora将部分核心功能(故障恢复,备份还原)下推到存储层进行后台异步执行,并且不影响前台请求处理。

 

日志即数据库

计算层只往存储层写redo日志,大大减少计算与存储节点之间的网络压力,这为提升数据库性能提供了保障。

下图是一主多从、部署在3 Availability Zone的6副本架构的写入过程。主只将redo日志写入存储服务(获得过半数确认后写入成功),同时主也会将这些日志发送到从。

从应用redo日志更新其缓存。

 

 

    存储节点收到写入的redo日志时的处理流程

 

1)接收日志记录并添加到内存中的队列

2)记录在磁盘上并进行 ack 返回

3)对于批量 Redo log 进行整理,确定没有批次丢失

4)与其它副本存储节点进行对齐,从而保障数据自愈能力。通过 Gossip 协议,它们可以知道集群中有哪些节点,以及这些节点的状态,每一条 Gossip 消息上都有一个版本号,节点可以对接收到的消息进行版本比对,确保二者得到的信息相同。

5)日志记录合并到新的数据页

6)定期将日志和新的页面复制到 S3

7)定期进行过期版本垃圾数据回收

8)定期验证 CRC 码页,如果发现损坏数据块,与相邻节点进行通信获取完好的数据块。这是 Aurora 实现可自主修复损坏数据块的关键技术

注意,只有步骤 1 和 2 完成,前台即完成(commit),其它操作都是异步进行。

 

 

2 性能容量

吞吐量最高可以达到标准 MySQL 的 5 倍、标准 PostgreSQL 的 3 倍,成本只有商用数据库的 1/10。

跨三个可用区添加最多 15 个低延迟读取副本。

每个数据库实例最高 64TB。

 

3 优势缺陷

优势:

1)存储节点,计算节点弹性伸缩,按需配比

2)一份存储,对接多个计算节点,多租户存储服务,成本低。

3)只传递redo日志,巧妙的解决写放大问题。

4)实例快速故障恢复

5)架构简单,通过多副本能快速扩展读能力,单个写副本则巧妙地避免了分布式事务等复杂实现。

6)完全兼容MySQL 5.6、PostgreSQL

 

缺陷:

1)适合于读多写少的应用,写水平扩展依赖于中间件方案。

2)SQL层与社区版MySQL一样,复杂查询能力(比如OLAP场景)较弱。

3)单个写副本,无分区多点写能力(用户维度+时间维度)

4)总容量有上限,64TB

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
1
1