CURVE: NetEase Open‑Source High‑Performance Distributed Storage System
CURVE is NetEase's open‑source, high‑performance, highly available distributed storage platform that supports block, object, and cloud‑native database use cases, emphasizing simple solutions, hardware‑software integration, and extensive open‑source component reuse.
Introduction
CURVE is NetEase's open‑source high‑performance, high‑availability, and highly reliable distributed storage system with excellent scalability. Built on this storage foundation, various storage solutions such as block storage, object storage, and cloud‑native databases can be created. CURVE's design follows three principles: (1) Align with current storage hardware trends to combine software and hardware for a top‑class product; (2) "Simple can be harder than complex" – choose the simplest solution after understanding the problem's essence; (3) Embrace open source, using excellent open‑source components after thorough research to avoid reinventing the wheel.
Currently, NetEase uses CURVE to implement a high‑performance block storage system that supports snapshot cloning and recovery, and offers both QEMU virtual machine and physical machine NBD device mounting methods, serving as a high‑performance cloud disk internally.
Features
1. High Performance
CURVE achieves high performance through the open‑source, low‑latency RPC framework brpc and the quorum‑based, open‑source consensus library braft, which inherently offers lower latency than multi‑replica strong consistency. Optimizations include a custom braft snapshot implementation and a chunkfilepool approach that eliminates write amplification, as well as fine‑grained address space hashing on chunks for read‑write separation and reduced I/O collisions.
2. High Availability
CURVE ensures high availability by allowing multiple instances of MDS, ChunkServer, and SnapShotCloneServer to be deployed; failures of some instances do not affect overall cluster availability.
MDS
MDS is stateless and is recommended to run at least two instances, with leader election handled by Etcd. If a single instance fails, a failover occurs within seconds, and clients and SnapShotCloneServer retry in‑flight requests to maintain service continuity.
SnapShotCloneServer
Similar to MDS, SnapShotCloneServer uses Etcd for leader election and provides load‑balanced services. Failed requests are retried idempotently, preserving task correctness and cluster availability.
ChunkServer
ChunkServer forms a cluster that maintains data consistency via the Raft protocol and uses MDS for load balancing. When a node fails, its stored copysets are affected: the leader copyset pauses service until re‑election, while follower copysets continue operating. If a ChunkServer remains unavailable, MDS migrates its data to other nodes.
Project Address
GitHub: https://github.com/opencurve/curve
Java Architect Essentials
Committed to sharing quality articles and tutorials to help Java programmers progress from junior to mid-level to senior architect. We curate high-quality learning resources, interview questions, videos, and projects from across the internet to help you systematically improve your Java architecture skills. Follow and reply '1024' to get Java programming resources. Learn together, grow together.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.