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 现在支持三种路由策略:
- PREFER_REPLICA:客户端从任何可用副本读取命令。
- PRIMARY:确保数据新鲜度,始终从主节点读取。
- 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 数据传输的成本和延迟,从而提升应用的整体性能。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。