Microsoft 推出开源缓存存储 Garnet
微软研究院近日宣布推出名为 Garnet 的开源缓存存储系统,旨在加速应用程序和服务的性能。Garnet 使用 RESP 协议,是现有缓存存储的更快替代方案,并且与现有的 Redis 客户端兼容。
Garnet 的主要优势
- RESP 协议:Garnet 使用 RESP 协议,确保与 Redis 客户端的兼容性。
- 更高的可扩展性和吞吐量:Garnet 在扩展性和吞吐量方面表现优异。
- 更低的客户端延迟:在 99% 和 99.9% 百分位数下,Garnet 的延迟显著降低。
现有缓存系统的局限性
微软研究院的 Badrish Chandramouli 指出,现代缓存系统(如 Redis、Memcached、KeyDB 和 Dragonfly)虽然提供了丰富的 API 和功能集,但也存在以下限制:
- 系统设计简单,无法充分利用最新硬件功能(如多核、分层存储、快速网络)。
- 这些系统通常不易扩展,且在不同平台和操作系统上的兼容性不佳。
性能对比
微软研究院使用其专有的基准测试工具 Resp.benchmark 对 Garnet、Redis、KeyDB 和 Dragonfly 进行了性能对比,覆盖了以下四种场景:
- 不同客户端会话数下的吞吐量。
- 不同批量大小下的吞吐量。
- 不同客户端会话数下的延迟。
- 不同批量大小下的延迟。
从基准测试结果来看,Garnet 在 GET 命令的吞吐量上远超 Dragonfly,且在 99% 百分位数下的延迟略低于 Dragonfly。Garnet 和 Dragonfly 的性能均显著优于 Redis。
Garnet 的技术特点
- 网络层:Garnet 使用快速且可插拔的网络层,支持未来扩展(如内核旁路技术)。
- 存储层:Garnet 的存储层 Tsavorite 基于 OSS FASTER,具有线程可扩展性、分层存储支持(内存、SSD 和云存储)、快速非阻塞检查点、恢复、操作日志持久化、多键事务支持以及更好的内存管理和重用功能。
- 集群模式:Garnet 支持集群模式,允许用户创建和管理分片及复制的部署,并支持动态键迁移方案以重新平衡分片。开发者可以使用标准的 Redis 集群命令来管理 Garnet 集群。
社区反响
在 Hacker News 和 Reddit 上,用户对 Garnet 的性能表示惊叹,尤其是在吞吐量方面,Garnet 的性能比 Dragonfly 高出 1 到 2 个数量级。
Redis 许可证变更的影响
随着 Redis 改变其许可证并采用双源可用许可模式,开源倡导者 Peter Zaitsev 表示,Garnet 作为微软的 Redis 协议实现,正因其开源特性而受到更多关注。
开源与许可
Garnet 已在 GitHub 上开源,并采用 MIT 许可证。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。