微软宣布推出Garnet:一个新的开源缓存存储和Redis替代方案

Microsoft 推出开源缓存存储 Garnet

微软研究院近日宣布推出名为 Garnet 的开源缓存存储系统,旨在加速应用程序和服务的性能。Garnet 使用 RESP 协议,是现有缓存存储的更快替代方案,并且与现有的 Redis 客户端兼容。

Garnet 的主要优势

  1. RESP 协议:Garnet 使用 RESP 协议,确保与 Redis 客户端的兼容性。
  2. 更高的可扩展性和吞吐量:Garnet 在扩展性和吞吐量方面表现优异。
  3. 更低的客户端延迟:在 99% 和 99.9% 百分位数下,Garnet 的延迟显著降低。

现有缓存系统的局限性

微软研究院的 Badrish Chandramouli 指出,现代缓存系统(如 Redis、Memcached、KeyDB 和 Dragonfly)虽然提供了丰富的 API 和功能集,但也存在以下限制:

  • 系统设计简单,无法充分利用最新硬件功能(如多核、分层存储、快速网络)。
  • 这些系统通常不易扩展,且在不同平台和操作系统上的兼容性不佳。

性能对比

微软研究院使用其专有的基准测试工具 Resp.benchmark 对 Garnet、Redis、KeyDB 和 Dragonfly 进行了性能对比,覆盖了以下四种场景:

  1. 不同客户端会话数下的吞吐量。
  2. 不同批量大小下的吞吐量。
  3. 不同客户端会话数下的延迟。
  4. 不同批量大小下的延迟。

从基准测试结果来看,Garnet 在 GET 命令的吞吐量上远超 Dragonfly,且在 99% 百分位数下的延迟略低于 Dragonfly。Garnet 和 Dragonfly 的性能均显著优于 Redis。

Garnet 的技术特点

  1. 网络层:Garnet 使用快速且可插拔的网络层,支持未来扩展(如内核旁路技术)。
  2. 存储层:Garnet 的存储层 Tsavorite 基于 OSS FASTER,具有线程可扩展性、分层存储支持(内存、SSD 和云存储)、快速非阻塞检查点、恢复、操作日志持久化、多键事务支持以及更好的内存管理和重用功能。
  3. 集群模式:Garnet 支持集群模式,允许用户创建和管理分片及复制的部署,并支持动态键迁移方案以重新平衡分片。开发者可以使用标准的 Redis 集群命令来管理 Garnet 集群。

社区反响

Hacker NewsReddit 上,用户对 Garnet 的性能表示惊叹,尤其是在吞吐量方面,Garnet 的性能比 Dragonfly 高出 1 到 2 个数量级。

Redis 许可证变更的影响

随着 Redis 改变其许可证并采用双源可用许可模式,开源倡导者 Peter Zaitsev 表示,Garnet 作为微软的 Redis 协议实现,正因其开源特性而受到更多关注。

开源与许可

Garnet 已在 GitHub 上开源,并采用 MIT 许可证

阅读 23
0 条评论