内存数据缓存系统 Dragonfly 1.0 发布

Dragonfly内存缓存和存储系统已经发布,它以键/值格式操作数据,可以用作加速高负载站点工作的轻量级解决方案,缓存对DBMS的慢速查询和RAM中的中间数据。 Dragonfly 支持 Memcached 和 Redis 协议,允许您使用现有的客户端库,并将使用 Memcached 和 Redis 的项目转移到 Dragonfly,而无需重新编写代码。

与 Redis 相比,Dragonfly 在 Amazon EC2 c6gn.16xlarge 环境中的典型工作负载方面实现了 25 倍的性能提升(每秒 3.8 万个请求)。 与 AWS c6gn.16xlarge 环境中的 Memcached 相比,Dragonfly 每秒执行的写入请求增加了 4.7 倍(3.8 万对 806 万),每秒执行的读取请求增加了 1.77 倍(3.7 万对 2.1 万)。

内存数据缓存系统 Dragonfly 1.0 发布

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

内存数据缓存系统 Dragonfly 1.0 发布

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

蜻蜓的一些特点:

  • 缓存模式,空闲内存耗尽后自动用新数据替换旧数据。
  • 支持在数据被认为相关的生命周期内绑定到数据。
  • 支持在后台将存储状态刷新到磁盘,以便重启后恢复。
  • 存在用于系统管理的 HTTP 控制台(绑定到 TCP 端口 6379)和用于返回指标的 API,与 Prometheus 兼容。
  • 支持 185 个 Redis 命令,大致相当于 Redis 5 版本的功能。
  • 支持除 CAS(检查和设置)之外的所有 Memcached 命令。
  • 支持创建快照的异步操作。
  • 可预测的内存消耗。
  • 内置 Lua 5.4 解释器。
  • 支持复杂的数据类型,例如哈希、集合、列表(ZSET、HSET、LIST、SETS 和 STRING)和 JSON 数据。
  • 支持存储复制以实现容错和负载平衡。

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

Dragonfly 1.0 版本的值得注意之处在于它支持从主服务器到辅助服务器的数据复制。 但是,Dragonfly 可以配置为用作辅助存储,从基于 Dragonfly 或基于 Redis 的主服务器接收数据。 复制管理 API 与 Redis 兼容,并且基于 ROLE 和 REPLICAOF (SLAVEOF) 命令的使用。

来源: opennet.ru

添加评论