Garnet发布 Redis不再是唯一选择 - Setli

Garnet发布 Redis不再是唯一选择 - Setli

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

Garnet 是微软研究院推出的高性能远程缓存存储,具备可扩展性和多种数据库功能,兼容现有 Redis 客户端,提供丰富的 API 和多密钥事务处理。其强大的存储层 Tsavorite 支持集群操作、动态密钥迁移和安全通信。该项目欢迎贡献,并遵循 MIT 许可证。

🔎

延伸解读

Garnet 与 Redis 的兼容性

Garnet 能够与现有的 Redis 客户端配合使用,这意味着开发者可以沿用熟悉的 Redis 客户端和命令,降低迁移成本。同时,Garnet 实现了广泛的 API,包括原始字符串、分析(如 HyperLogLog 和 Bitmap)和对象(如排序集和列表)操作,并支持多密钥事务。这为现有 Redis 用户提供了另一种选择,但需注意 Garnet 并非 Redis 的替代品,而是兼容 Redis 协议的新存储系统。

存储层 Tsavorite 的设计特点

Garnet 的存储层 Tsavorite 源自微软之前的开源项目 FASTER,具备线程可扩展性、分层存储支持(内存、SSD 和云存储)、快速非阻塞检查点、恢复、操作日志记录以实现持久性、多键事务支持以及更好的内存管理和重用。Tsavorite 由两个键值存储组成:主存储针对原始字符串操作优化,对象存储针对复杂对象和自定义数据类型优化,两者通过统一的操作日志绑定。

网络层优化与性能

Garnet 的网络层继承了受 ShadowFax 研究启发的共享内存设计,TLS 处理和存储交互在 IO 完成线程上执行,避免了常见情况下的线程切换开销。这种方法允许 CPU 缓存一致性将数据传输到网络,而不是传统的基于随机播放的设计,后者需要在服务器上移动数据。这些优化旨在提升吞吐量和降低延迟,但具体性能数据需参考官方基准测试。

集群功能与开发状态

Garnet 支持集群操作模式,允许用户创建和管理分片和复制部署,并支持高效、动态的密钥迁移方案来重新平衡分片。用户可以使用标准的 Redis 集群命令来创建和管理 Garnet 集群,节点通过 gossip 协议共享和演化集群状态。需要注意的是,集群工作仍在进行中,可能尚未完全成熟。此外,Garnet 采用 MIT 许可证,欢迎贡献,但贡献者需同意贡献者许可协议(CLA)。

❓

Q&A

Garnet是什么?

Garnet是微软研究院推出的高性能远程缓存存储,具备强大的性能和可扩展性。

Garnet与Redis的兼容性如何?

Garnet兼容现有的Redis客户端,可以与其配合使用。

Garnet的存储层Tsavorite有什么特点?

Tsavorite支持集群操作、动态密钥迁移和安全通信,具备强大的数据库功能。

Garnet如何处理多密钥事务?

Garnet使用两阶段锁定来处理多密钥事务,并支持客户端RESP事务。

Garnet的设计有什么创新之处?

Garnet的设计优化了网络层和存储交互,减少了线程切换开销,提升了性能。

如何参与Garnet项目的贡献?

该项目欢迎贡献,需同意贡献者许可协议,并按照CLA机器人的指示提交拉取请求。

🏷️

标签

➡️

继续阅读