Amazon 的 Aurora 自从问世,就备受关注,其性能和实现架构是被关注的热点。2017年,Amazon 发表了一篇论文,披露其实现的一些技术细节。本文在此背景下,对 Aurora 系统的实现从整体架构、存储、事务处理三个方面进行深入探讨,并从数据库内核技术实现的角度对 Aurora 做了一定的推测。
2017年,Amazon 在 SIGMOD 上发表了论文《Amazon Aurora : Design Considerations for High Throughput Cloud Native Relational Databases》。
这篇论文描述了 Amazon 的云数据库 Aurora 的架构。基于 MySQL 的 Aurora 对于单点写多点读的主从架构做了进一步的发展,使得事务和存储引擎分离,为数据库架构的发展提供了具有实战意义的已实践用例。其主要特点如下:
- 实践了“日志即数据库” 的理念。
- 事务引擎和存储引擎分离。
- 数据缓冲区提前预热。
- REDO 日志从事务引擎中剥离,归并到存储引擎中。
- 储存层可以有6个副本,多个副本之间通过 Gossip 协议可以保障数据的“自愈”能力。
- 主备服务的备机可达15份,提供强大的读服务能力。 - 持续可靠的云数据库的服务能力。
- 数据存储跨多个区:提供了多级别容灾能力。
- 数据容灾能力:数据冗余、备份、实时恢复等多种能力集成到云服务,提高了数据的保障能力。
- 万能数据库的概念呼之欲出。
之所以有这样的设计,是因为 Amazon 认为:网络 I/O 已经成为数据库最大的瓶颈 。
Aurora 的整体架构
认识 Aurora 的整体架构,需要先理解 A