Curvine: 高性能分布式缓存——DataFun数智大会




















teams activities of curvine
查看所有标签Curvine是一套分布式缓存系统,基于Rust实现,具备 高并发,高吞吐,低延迟,资源消耗低等特点。不同于Redis、TiKV等KV缓存,Curvine只提供文件缓存能力。Curvine不是存储系统,只提供缓存能力,数据持久化还是需要底层文件或者对象存储系统支撑。
实际应用中,有哪些场景适用Curvine加速?
Fig. 1:Curvine Application Scenarios.
如上图所示,Curvine适用于以下五大场景:
以上场景总结,只是抛砖引玉,通俗的理解,Curvine其实就是解决: 日益增长的计算性能需求与分布式存储系统的IO能力瓶颈的矛盾。
我们从以下几个方面展示性能和资源使用情况:
1. 元数据操作性能
Operation Type | Curvine (QPS) | Juicefs (QPS) | oss (QPS) |
---|---|---|---|
create | 19,985 | 16,000 | 2,000 |
open | 60,376 | 50,000 | 3,900 |
rename | 43,009 | 21,000 | 200 |
delete | 39,013 | 41,000 | 1,900 |
注: 对比数据选取的并发度均为40
详细结果: https://curvineio.github.io/docs/Benchmark/meta/
业界类似产品测试数据:https://juicefs.com/zh-cn/blog/engineering/meta-perf-hdfs-oss-jfs
2. 数据读写性能
相同硬件条件下,测试对比Alluxio性能:
● 256k顺序读
Thread count | Curvine Open Source Edition (GiB/s) | Throughput of Open Source Alluxio (GiB/s) |
---|---|---|
1 | 2.2 | 0.6 |
2 | 3.7 | 1.1 |
4 | 6.8 | 2.3 |
8 | 8.9 | 4.5 |
16 | 9.2 | 7.9 |
32 | 9.5 | 8.8 |
64 | 9.2 | N/A |
128 | 9.2 | N/A |
● 256k随机读
Thread count | Curvine Open Source Edition (GiB/s) | Throughput of Open Source Alluxio (GiB/s) |
---|---|---|
1 | 0.3 | 0.0 |
2 | 0.7 | 0.1 |
4 | 1.4 | 0.1 |
8 | 2.8 | 0.2 |
16 | 5.2 | 0.4 |
32 | 7.8 | 0.3 |
64 | 8.7 | N/A |
128 | 9.0 | N/A |
Alluxio官网数据披露:https://www.alluxio.com.cn/alluxio-enterprise-vs-open-source/
3. 资源消耗情况
得益于Rust语言的特性,我们在大数据shuffle加速场景下,对比线上使用Curvine和Alluxio资源消耗情况,内存降低90%+,cpu降低50%+。
Curvine架构设计理念:简单、极致、通用。
Fig. 2:Curvine Application Scenarios.
简单:简单轻量,缓存服务只有两个角色:master、worker。非性能瓶颈的模块,尽量复用开源或者已有的技术,代码最大可能轻量化。
极致:对性能影响较大的关键节点:底层rpc通信架构、Fuse 实现性能等关键组件,自主设计实现,以极致性能优化思维构建。
通用::兼容多种现有接入模式,底层存储兼容主流分布式文件和对象存储做到足够通用,易用。
我们在内部大数据高并发高吞吐场景下使用Curvine加速数据IO,取得比较大的收益。希望吸引外部的伙伴共同建设,一起加速基础设施向Rust转变。 https://github.com/curvineio/curvine
由OPPO大数据提供支持。