DAX:工作原理
要创建 DAX 集群,请使用 AWS 管理控制台。除非您另行指定,否则您的 DAX 集群在您的默认 VPC 内运行。要运行您的应用程序,请在 Amazon VPC 内启动一个 Amazon EC2 实例,然后在该 EC2 实例上部署您的应用程序(使用 DAX 客户端)。
在运行时,DAX 客户端会将您的应用程序的所有 DynamoDB API 请求定向到 DAX 集群。如果 DAX 可以直接处理这些 API 请求之一,则会直接处理。否则,它将请求传递到 DynamoDB。
最后,DAX 集群会将结果返回到您的应用程序。
DAX 处理请求的方式
DAX 集群由一个或多个节点组成。每个节点运行其自己的 DAX 缓存软件实例。其中一个节点将充当集群的主节点。额外节点 (如果有) 将充当只读副本。您的应用程序可通过为 DAX 集群指定终端节点来访问 DAX。DAX 客户端软件与集群终端节点协同工作,执行智能负载均衡和路由。传入请求在集群中所有节点上均匀分布。
项目缓存
DAX 将保留一个项目缓存 以存储来自 GetItem
和 BatchGetItem
操作的结果。缓存中的项目表示来自 DynamoDB 的最终一致性数据,并且由其主键值存储。
当某个应用程序发送了一条 GetItem
或 BatchGetItem
请求时,DAX 尝试使用指定键值直接从项目缓存读取项目。如果找到了项目 (缓存命中),DAX 会将它们立即返回到应用程序。如果未找到项目(缓存未命中),DAX 会将请求发送到 DynamoDB。DynamoDB 将使用最终一致性读取处理请求,然后将项目返回到 DAX。DAX 会将项目存储在项目缓存中,然后将它们返回给应用程序。
项目缓存具有生存时间 (TTL) 设置,默认情况下为 5 分钟。DAX 将向其写入项目缓存的每个项目分配时间戳。如果某个项目在缓存中保留的时间超出 TTL 设置,则会过期。如果您针对已过期项目发出 GetItem
请求,这将视为缓存未命中,因此 DAX 会将 GetItem
请求发送到 DynamoDB。
查询缓存
DAX 还将保留一个查询缓存 以存储来自 Query
和 Scan
操作的结果。此缓存中的项目表示来自对 DynamoDB 表的查询和扫描的结果集。这些结果集由其参数值存储。
当某个应用程序发送了一条 Query
或 Scan
请求时,DAX 将尝试使用指定参数值从查询缓存读取匹配的结果集。如果找到结果集(缓存命中),DAX 会将结果集立即返回到应用程序。如果未找到结果集(缓存未命中),DAX 会将请求发送到 DynamoDB。DynamoDB 将使用最终一致性读取处理请求,然后将结果集返回到 DAX。DAX 会将其存储在项目缓存中,然后将其返回给应用程序。