Amazon RDS

Amazon Relational Database Service (Amazon RDS) 是最早的云数据库产品,提供托管的关系数据库,包括Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle 和 Microsoft SQL Server。

Amazon RDS 的架构类似在底层的数据库上构建了一个中间层,这个中间层负责路由客户端的 SQL 请求发往实际的数据库存储节点,因为将业务端的请求通过中间层代理,所以可以对底层的数据库实例进行很多运维工作,比如备份,迁移到磁盘更大或者 IO 更空闲的物理机等。这些工作因为隐藏在中间层后边,业务层可以做到基本没有感知,另外这个中间路由层基本只是简单的转发请求,所以底层可以连接各种类型的数据库。所以一般来说,RDS 基本都会支持 MySQL / SQLServer / MariaDB / PostgreSQL 等流行的数据库,对兼容性基本没有损失,而且在这个 Proxy 层设计良好的情况下,对性能的损失是比较小的。另外有一层中间层隔离底层的资源池,对于资源的利用和调度上可以做不少事情。

简单举个例子,比如有一些不那么活跃的 RDS 实例可以调度在一起共用物理机,比如需要在线扩容只需要将副本建立在更大磁盘的机器上,在 Proxy 层将请求重新定向即可,比如定期的数据备份可以放到 S3 上,这些一切都对用户可以做到透明。

但是这样的架构缺点也同样明显:本质上还是一个单机主从的架构,对于超过最大配置物理机的容量,CPU 负载,IO 的场景就束手无策了。随着很多业务的数据量并发量的增长,尤其是移动互联网的发展,无限的可扩展性成为了一个很重要需求。当然对于绝大多数数据量要求没那么大,单实例没有高并发访问的库来说,RDS 仍然是很适合的。

链接