数据存储 - 在 AWS 上实施微服务

数据存储

数据存储用于保存微服务所需的数据。常用的会话数据存储方式是内存缓存,如 Memcached 或 Redis。AWS 将这两种技术作为托管式 Amazon ElastiCache 服务的一部分提供。

在应用程序服务器和数据库之间置放缓存是减少数据库读取负载的一种常用机制,这一机制进而让资源可用于支持更多写入操作。缓存还可以改善延迟。

关系数据库仍非常广泛地用于存储结构化数据和业务对象。AWS 通过 Amazon Relational Database Service (Amazon RDS) 提供六个数据库引擎(Microsoft SQL Server、Oracle、MySQL、MariaDB、PostgreSQL 和 Amazon Aurora)作为托管式服务。

然而,关系数据库并不是为实现无限规模而设计的,这会使得应用技术来支持大量查询变得十分困难和耗时。

NoSQL 数据库更偏重于可扩展性、性能和可用性,而不是关系数据库的一致性。有一点很重要,NoSQL 数据库一般不会强制实施严格的 Schema。数据分布在可水平扩展的分区上,并使用分区键进行检索。

由于单个微服务只有一个既定用途,因此通常具有可能非常适合实现 NoSQL 持久性的简化数据模型。NoSQL 数据库的访问模式与关系数据库不同,理解这一点很重要。例如,无法联接表。如果必须进行联接,则必须在应用程序中实施相应逻辑。您可以使用 Amazon DynamoDB 创建一个数据库表来存储和检索任何大小的数据,并处理任何级别的请求流量。DynamoDB 可以提供响应时间在十毫秒内的性能,但是某些使用案例要求响应时间在微秒级。Amazon DynamoDB Accelerator (DAX) 为访问数据提供了缓存功能。

DynamoDB 还提供了自动扩展功能,以根据实际流量动态调整吞吐量。但是,在某些情况下,由于应用程序中存在持续时间很短的大型活动峰值,很难或无法进行容量规划。对于这些情况,DynamoDB 提供了按需选项,即简单的“按请求付费”定价。DynamoDB 按需选项能够在没有进行容量规划的情况下每秒即时处理数千个请求。