AWS通过AZ亲和路由和GLIDE Valkey降低键/值数据存储的延迟和成本

AWS 引入 Valkey GLIDE 的可用区(AZ)感知功能

主要观点

AWS 最近在开源 Valkey 通用语言独立驱动(GLIDE)客户端库的 1.2 版本中引入了可用区(AZ)感知功能。通过在开源键值数据存储中实现 AZ 亲和性路由,开发者可以将请求定向到与客户端位于同一 AZ 的副本,从而减少延迟和成本。

关键信息

  • Valkey GLIDE 是一个开源的、支持多种语言的客户端库,适用于 Valkey 和 Redis OSS。它由 AWS 团队使用 Rust 编写,并于去年夏天发布。
  • Valkey 8 引入了 "availability-zone" 配置,允许客户端为每个 Valkey 服务器指定 AZ。GLIDE 利用这一特性支持 AZ 亲和性路由。

重要细节

路由策略

GLIDE 现在支持三种路由策略:

  1. PREFER_REPLICA:客户端从任何可用副本读取命令。
  2. PRIMARY:确保数据新鲜度,始终从主节点读取。
  3. AZ_AFFINITY:客户端从与客户端位于同一 AZ 的副本读取命令。

优势和示例

  • 减少成本:跨 AZ 的数据传输在云环境中通常会产生额外费用,AZ 亲和性路由可以减少这些成本。
  • 降低延迟:在同一区域内的 AZ 之间传输数据可以减少延迟,提高应用响应速度。

示例
在 AWS 中,一个 Valkey 集群有 2 个分片,每个分片有 1 个主节点和 2 个副本,实例类型为 m7g.xlarge。集群每秒处理 250MB 数据,假设 100% 的流量为读取操作,其中 50% 跨 AZ 传输,成本为每 GB 0.01 美元。跨 AZ 数据传输的月成本约为 3,285 美元,集群的月成本为 1,088 美元。通过实施 AZ 亲和性路由,总成本可以从 4,373 美元降至 1,088 美元。

配置

配置取决于具体语言,开发者需要首先为 Valkey 节点配置可用区。例如,在 Java 中:

client.configSet(Map.of("availability-zone", az), new ByAddressRoute("address.example.com", 6379))

然后实例化 GLIDE 并启用 AZ 特定目标:

GlideClusterClientConfiguration config = GlideClusterClientConfiguration.builder()
    .address(NodeAddress.builder()
        .host("address.example.com")
        .port(6379)
        .build())
    .readFrom(ReadFrom.AZ_AFFINITY)
    .clientAZ("us-east-1a")
    .build()
GlideClusterClient client = GlideClusterClient.createClient(config).get();

支持版本

  • Valkey GLIDE 支持 Valkey 7.2 及更高版本,以及 Redis 开源版本 6.2、7.0 和 7.2。
  • AZ 亲和性路由 仅在 Valkey 8.0 中可用。

总结

AWS 通过引入 AZ 感知功能,进一步优化了 Valkey GLIDE 的性能和成本效益。开发者可以通过配置 AZ 亲和性路由,减少跨 AZ 数据传输的成本和延迟,从而提升应用的整体性能。

阅读 20
0 条评论