前几天公布了 发布 Dragonfly 内存缓存和数据存储系统, 它以键/值格式操作数据,可用作轻量级解决方案,通过缓存对 DBMS 的慢速查询和 RAM 中的中间数据来加速高负载站点。
蜻蜓 支持 Memcached 和 Redis 协议, 允许您使用现有的客户端库并将使用 Memcached 和 Redis 的项目移植到 Dragonfly,而无需重新编写代码。
值得一提的是蜻蜓 最近收到更新, 达到其 1.0 版,其中 突出实现对数据复制的支持 从主服务器到辅助服务器。
与此同时,蜻蜓 可以配置为用作辅助存储 它接受来自基于 Dragonfly 和 Redis 的主服务器的数据。 复制管理 API 与 Redis 兼容,并基于 ROLE 和 REPLICAOF (SLAVEOF) 命令的使用。
关于蜻蜓
多线程架构实现高性能 不共享资源(无共享),这意味着一个单独的控制器附加到每个线程,每个线程都有自己的数据,无需互斥锁或自旋锁。
轻量级 VLL 锁用于保证处理多个键时的原子性,因为为了将信息有效地存储在内存中,使用了 dashtable 结构,它实现了一种分区哈希表。
与 Redis 相比,Dragonfly 拥有 25 倍的性能提升 (每秒 3,8 万个请求)在 Amazon EC2 c6gn.16xlarge 环境中的典型工作负载下。 与 AWS c6gn.16xlarge 环境中的 Memcached 相比,Dragonfly 每秒能够完成 4,7 倍的写入请求(3,8 万对 806k)和每秒 1,77 倍的读取请求(3,7 万对 2,1 万)。
在 5 GB 存储测试中, Dragonfly 需要的内存比 Redis 少 30%。 在使用“bgsave”命令创建快照的过程中,内存消耗增加,但在高峰期它几乎比 Redis 少三倍,而且快照写入操作本身要快得多(在 Redis 的情况下)。测试,a快照在 Dragonfly 上用了 30 秒,在 Redis 上用了 42 秒)。
一些 蜻蜓的特点是:
- 一种缓存模式,一旦可用内存耗尽,就会自动用新数据替换旧数据。
- 支持数据绑定生命周期,在此期间数据被认为是最新的。
- 支持在后台将存储状态刷新到磁盘,以便稍后在重启后恢复。
- 存在用于系统管理的 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的本质是扩展功能代码最初是可以修改的,但是有一段时间只能免费使用,需要附加条件,需要购买商业许可才能绕过。
Dragonfly 项目的附加许可条款要求在 2.0 年 15 月 2028 日将代码迁移到 Apache License XNUMX。在此之前,该许可仅允许使用代码以确保其服务和产品的运行,但禁止使用创建付费作为 Dragonfly 插件的云服务。
最后 如果您有兴趣了解更多信息,您可以在中查看详细信息 以下链接。