Dragonfly 项目正在开发 Redis 和 Memcached 的更快替代品

Dragonfly 内存缓存系统的第一个版本现已推出,提供对 Memcached 和 Redis 协议的支持,但允许以更高的性能和更少的内存消耗执行查询。 该系统以键/值格式操作数据,可用作轻量级解决方案来加速高负载站点的工作,在 RAM 中缓存对 DBMS 的慢速查询和中间数据。 Dragonfly 代码是用 C/C++ 编写的,并根据 BSL(商业源代码许可证)分发。

BSL 许可证是由 MySQL 联合创始人提出的,作为 Open Core 模型的替代方案。 BSL的本质是高级功能的代码最初是可以修改的,但在一段时间内只有满足附加条件才可以免费使用,而这需要购买商业许可证才能规避。 Dragonfly 项目的附加许可条款要求仅在 2.0 年 1 月 2027 日将代码转移到 Apache XNUMX 许可证。 到目前为止,该许可证仅允许使用该代码来确保其服务和产品的运行,但禁止用于创建作为 Dragonfly 附加组件的付费云服务。

根据开发人员和演示测试,Dragonfly 声称是最快的内存存储系统。 与 Redis 相比,Dragonfly 在典型工作负载下性能提高了 25 倍,内存消耗降低了 2 倍。 一台 Dragonfly 服务器每秒可以处理数百万个请求,例如,在 Amazon EC6 c16gn.3.8xlarge 环境中,可以实现每秒 XNUMX 万个请求的性能。

Dragonfly 项目正在开发 Redis 和 Memcached 的更快替代品

在存储 5 GB 数据的测试中,Dragonfly 所需的内存比 Redis 少 30%。 使用“bgsave”命令创建快照时,内存消耗会增加,但在高峰时刻仍然比 Redis 少近三倍,并且快照记录操作本身要快得多(测试中 Dragonfly 中的快照写入时间为 30 秒)秒,而 Redis - 42 秒)。

Dragonfly 项目正在开发 Redis 和 Memcached 的更快替代品

高性能的实现得益于多线程架构,无需共享资源(无共享),这意味着每个线程都被分配一个单独的处理器及其自己的数据部分,无需互斥锁和自旋锁即可工作。 为了确保使用多个键时的原子性,使用了轻量级 VLL 锁。 为了在内存中有效地存储信息,使用了 dashtable 结构,它实现了一种分区哈希表。

在第一个版本中提供的功能中,值得注意的是对 RESP2 协议和 130 个 Redis 命令的支持,这大约对应于 Redis 2.8 版本的功能。 此外,Dragonfly 支持除 CAS(check-and-set)之外的所有 memcached 命令,提供对创建快照的异步操作的支持,提供可预测的内存消耗,提供内置的 Lua 5.4 解释器,并支持复杂的数据类型,例如哈希、集合和列表(ZSET、HSET、LIST、SETS 和 STRING)。

单独提供缓存模式,在可用内存耗尽后自动用新数据替换旧数据。 可以为数据附加一个生命周期,在此期间数据被认为是相关的。 存储状态可以在后台刷新到磁盘,以便稍后重新启动后恢复。 为了管理系统,提供了一个 HTTP 控制台(绑定到 TCP 端口 6379)和一个用于返回指标的 API,与 Prometheus 兼容。 在未来的版本中,我们计划扩展对 Redis 命令的支持,并实现复制存储的功能,以提供容错和负载平衡。

来源: opennet.ru

添加评论