自研高性能分布式存储引擎Cypress Store.
TBD
- 日志和索引系统(副本一致性协议)
避免使用Raft复制协议。
参考Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency
- 集群和存储节点故障恢复
- 数据流和控制流分离(性能加速)
数据流走spdk nvmf框架,使用RDMA RoCE网络加速, 控制流继续使用brpc框架。
- 磁盘空间精简配置
- 存储节点元数据直接写裸设备,替换Rocksdb
- 源码
mkdir workspace && cd workspace
git clone https://github.com/yangcx000/cyprestore.git
cd cyprestore && git submodule update --init --recursive - 第三方依赖
| 第三方依赖 | repo地址 | 版本 |
|---|---|---|
| brpc | https://github.com/apache/incubator-brpc.git | tags/0.9.7 |
| rocksdb | https://github.com/facebook/rocksdb.git | tags/v6.13.3 |
| spdk | https://github.com/spdk/spdk.git | tags/v20.04.1 |
为了使用C++11,GCC-C++版本至少4.8+。
- brpc依赖库
sudo yum -y install openssl-devel gflags-devel protobuf-devel protobuf-compiler leveldb-devel gperftools-devel gtest-devel- rocksdb依赖库
sudo yum -y install snappy snappy-devel
sudo yum -y install zlib zlib-devel
sudo yum -y install bzip2 bzip2-devel
sudo yum -y install lz4-devel
sudo yum -y install libasan
sudo yum -y install gflags gflags-devel - spdk依赖库
cd third-party/spdk && ./scripts/pkgdep.sh- brpc
cd third-party/brpc
git checkout -b cyprestore-v0.9.7 tags/0.9.7
mkdir build && cd build && cmake .. && make -j8 - rocksdb
cd third-party/rocksdb
git checkout -b cyprestore-v6.13.3 tags/v6.13.3
- 编译静态库(推荐)
make static_lib -j8
- 编译动态库(可选)
make shared_lib -j8
注意:用于生产环境,不要直接使用make或者make all编译成性能较差的debug模式。
- spdk
cd third-party/spdk
git checkout -b ccyprestore-v20.04.1 tags/v20.04.1
- 编译静态库(推荐)
./configure make -j8
- 编译动态库(可选)
./configure --with-shared make -j8 ldconfig -v -n ./build/lib LD_LIBRARY_PATH=./build/lib/:./dpdk/build/lib/ ./build/bin/spdk_tgt
- cyprestore
./compile.sh all