DynamoDB 利用DAX实现内存加速

DynamoDB 利用DAX实现内存加速

  • DAX 是一项与 DynamoDB 兼容的缓存服务,可让您受益于针对要求苛刻的应用的极高的内存内性能。DAX 可处理三个核心方案:
    • 作为内存中的缓存,DAX 将最终一致性读取工作量的响应时间缩短了一个数量级 - 从毫秒级缩短到了微秒级。
    • DAX 通过提供与 Amazon DynamoDB 在 API 上兼容的托管服务降低了运营和应用复杂性,并因此只需要进行最少的功能性更改就能与现有应用程序一起使用。
    • 对于读取量大或突发式的工作负载,DAX 通过降低过度预置读取容量单位来增加吞吐量和潜在运营成本节省。对于需要针对各个密钥进行重复读取的应用,这尤其有用。
  • 读取操作:
    • GetItem
    • BatchGetItem
    • Query
    • Scan
    • 如果 DAX 有可用项目 (缓存命中),DAX 会将项目返回到应用程序而无需访问 DynamoDB。
    • 如果 DAX 没有可用项目 (缓存未命中),DAX 会将请求传递到 DynamoDB。当收到来自 DynamoDB 的响应时,DAX 会将结果返回到应用程序 - 并且它还会将结果写入带主节点上的缓存。
  • 写入操作:
    • BatchWriteItem
    • UpdateItem
    • DeleteItem
    • PutItem
    • 采用这些操作后,数据将首先写入到 DynamoDB 表,然后写入到 DAX 集群。仅当数据同时 成功写入到表和 DAX 时,操作才会成功。
  • DAX 无法识别用于管理表的任何 DynamoDB 操作 (如 CreateTable、UpdateTable 等)。如果您的应用程序需要执行这些操作,它需要直接访问 DynamoDB 而不是使用 DAX 来访问。

  • 项目缓存:
    • DAX 将保留一个项目缓存 以存储来自 GetItem 和 BatchGetItem 操作的结果。缓存中的项目表示来自 DynamoDB 的最终一致性数据,并且由其主键值存储。
    • 项目缓存具有生存时间 (TTL) 设置,默认情况下为 5 分钟。DAX 将向其写入到项目缓存的每个项目分配时间戳。如果某个项目在缓存中保留的时间超出 TTL 设置,则会过期。如果您针对已过期项目发出 GetItem 请求,这将被视为缓存未命中,因此 DAX 会将 GetItem 请求发送到 DynamoDB。
  • 查询缓存:
    • DAX 还将保留一个查询缓存 以存储来自 Query 和 Scan 操作的结果。此缓存中的项目表示来自对 DynamoDB 表的查询和扫描的结果集。这些结果集由其参数值存储。
    • 当某个应用程序发送了一条 Query 或 Scan 请求时,DAX 将尝试使用指定参数值从查询缓存读取匹配的结果集。如果找到结果集 (缓存命中),DAX 会将结果集立即返回到应用程序。如果未找到结果集 (缓存未命中),DAX 会将请求发送到 DynamoDB。DynamoDB 将使用最终一致性读取处理请求并将结果集返回到 DAX。DAX 会将结果集存储在项目缓存中,然后将它返回到应用程序。
      这里写图片描述
  • 步骤:
    • DAX 客户端发出 GetItem 请求。DAX 尝试从项目缓存读取请求的项目。如果该项目在缓存中 (缓存命中),则 DAX 会将其返回到应用程序。
    • 如果该项目不可用 (缓存未命中),则 DAX 会针对 DynamoDB 执行最终一致性 GetItem 操作。
    • DynamoDB 返回请求的项目,DAX 将该项目存储在项目缓存中。
    • DAX 将该项目返回到应用程序。
    • (未显示) 如果 DAX 集群包含多个节点,则该项目将复制到集群中的所有其他节点。

DAX 集群组件
  • 节点;
    • 节点 是 DAX 集群的最小构建块。每个节点运行一个 DAX 软件实例,并维护一个缓存数据副本。
    • 您可采用以下两种方法之一来扩展 DAX 集群:
      • 将更多节点添加到集群。这会增加集群中的总体读取吞吐量。
      • 使用较大的节点类型。较大的节点类型可提供更多容量并可增加吞吐量。(请注意,您必须使用新节点类型创建新集群。
  • 集群
    • 集群 是 DAX 将其作为一个单元来管理的一个或多个节点的逻辑分组。集群的其中一个节点被指定为主 节点,其他节点 (如果有) 被指定为只读副本。
    • 主节点负责完成以下工作:
      • 满足缓存数据的应用程序请求。
      • 处理对 DynamoDB 的写入操作。
      • 根据集群的移出策略,从缓存中移出数据。
    • 当对主节点上的缓存数据进行更改时,DAX 会将这些更改传播到所有只读副本节点。
    • 只读副本负责完成以下工作:
      • 满足缓存数据的应用程序请求。
      • 根据集群的移出策略,从缓存中移出数据。
    • 但与主节点不同,只读副本不会对 DynamoDB 进行写入。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值