
Valkey 8.0:提供更强的性能和可靠性
Valkey 社区自豪地发布 Valkey 8.0 的首个候选版本,这是一次旨在增强所有 Valkey 安装的性能、可靠性和可观察性的重大更新。在这篇博客中,我们将深入探讨这些领域,并介绍我们为本次发布版本构建的激动人心的功能。
性能
Valkey 8.0 对现有的 I/O 线程系统进行了显著改进,允许主线程和 I/O 线程并发运行。本次发布版本还包括多项改进,旨在将工作分载到 I/O 线程,并引入高效的命令批处理。总而言之,Valkey 8.0 在 AWS 的 r7g 平台上旨在处理高达每秒 120 万次查询 (QPS),而之前的限制是 38 万次 QPS。我们将在接下来的博客中深入探讨这些数字。
注意:并非所有改进都在候选发布版本中可用,但它们将在 Valkey 8.0 的正式发布版本中提供。
- 异步 I/O 线程:支持命令和 I/O 操作的并行处理,最大化吞吐量并最小化瓶颈。
- 智能核心利用:根据实时使用情况将 I/O 任务分配到多个核心,减少空闲时间并提高能源效率。
- 命令批处理:通过预取常用数据来优化内存访问模式,最大限度地减少 CPU 缓存未命中,减少字典操作所需的内存访问。
有关这些改进的更多详细信息,请参阅 #758 和 #763。
可靠性
通过槽迁移进行的集群扩展操作历来都很精细。Valkey 8.0 通过以下增强功能提高了可靠性并最大限度地减少了中断:
- 空分片自动故障转移:新的空分片(不拥有任何槽)现在受益于自动故障转移。这确保了从扩展过程开始就具备高可用性。
- 槽迁移状态的复制:所有
CLUSTER SETSLOT
命令现在在主节点上执行之前会同步复制到副本节点。这减少了主节点发生故障时不可用的可能性,因为副本节点拥有关于分片状态的最新信息。新的副本节点还会自动从主节点继承状态,无需操作员额外输入。 - 槽迁移状态恢复:在发生故障转移时,Valkey 8.0 会自动更新源节点和目标节点上的槽迁移状态。这确保了请求持续路由到目标分片中的正确主节点,从而维护集群的完整性和可用性。
有关这些改进的更多详细信息,请参阅 #445。
复制
Valkey 8.0 引入了双通道复制方案,允许 RDB 和副本积压日志同时传输,从而加快同步速度。
- 减少内存负载:通过在完全同步期间将复制数据流式传输到副本节点,主节点承受的内存压力显著降低。副本节点现在管理客户端输出缓冲区 (COB) 跟踪,减少了 COB 溢出的可能性,并支持副本端更大的 COB 大小。
- 减少父进程负载:用于 RDB 传输的专用连接将主节点的父进程从处理这些数据中解放出来,使其能够专注于客户端查询并提高整体响应能力。
性能测试表明,同步期间的写入延迟有所改善,在重度读取命令的场景中,同步时间最多可缩短 50%。这意味着即使在同步期间,系统也能更具响应性。
有关这些改进的更多详细信息,请参阅 #60。
可观察性
Valkey 8.0 引入了全面的每槽位指标基础设施,提供了对单个槽位性能和资源使用情况的详细可见性。这种粒度数据有助于为资源分配、负载均衡和性能优化方面的决策提供信息。
- 键计数:返回每个槽位中的键数量,便于识别键数量最多的槽位。
- CPU 使用率:跟踪每个槽位上操作所消耗的 CPU 时间,识别高利用率区域和潜在瓶颈。
- 网络输入/输出字节:监控每个槽位的数据传输和接收,提供网络负载和带宽利用率的洞察。
- 最小开销:初步基准测试显示,启用详细指标会带来约 0.7% 的 QPS 可忽略不计的开销。
有关这些改进的更多详细信息,请参阅 #712、#720 和 #771。
效率
Valkey 8.0 引入了两项新改进,减少了键的内存开销,允许用户在不更改任何应用程序的情况下存储更多数据。第一个更改是键现在嵌入在主字典中,消除了单独的键指针并显著减少了内存开销。这使得在 16 字节键和 8 或 16 字节值场景中,整体内存使用量减少了 9-10%,同时性能也有所提高。
本次发布版本还为 Valkey 集群引入了一个新的每槽位字典,它取代了以前用于允许操作员列出槽中所有键以进行槽迁移的链表。新架构按槽位拆分主字典,将每个键值对的内存开销减少 16 字节,而不会降低性能。
有关这些改进的更多详细信息,请参阅 #541 和 Redis#11695。
其他亮点
- 双 IPv4 和 IPv6 协议栈支持:在混合 IP 环境中无缝运行,增强兼容性和灵活性。详情请参阅 #736。
- 改进的 Pub/Sub 效率:轻量级集群消息简化了通信并减少了开销,从而实现更快、更高效的 Pub/Sub 操作。详情请参阅 #654。
- 基于 RDMA 的 Valkey (实验性):通过客户端和 Valkey 服务器之间的直接内存访问,实现显著的性能提升,吞吐量最高可增加 275%。详情请参阅 #477。
- 众多小型性能/可靠性增强:许多幕后改进确保了全面更流畅、更稳定的体验。详情请参阅发布说明。
总结
Valkey 8.0 是一次重大的更新,提供了改进的性能、可靠性和可观察性。无论您是经验丰富的 Valkey/Redis 用户,还是首次探索它,此版本都在内存数据存储方面提供了显著的进步。您可以通过下载源代码或使用我们的容器镜像之一来立即试用这些增强功能。我们很乐意听取您对这些新功能的看法,以及您希望 Valkey 项目未来带来什么。
重要提示:基于 RDMA 的 Valkey 功能目前仍处于实验阶段,未来版本中可能会更改或移除。
我们期待看到您使用 Valkey 8.0 取得的成就!