
pingcap/rust是一款分布式Key-Value数据库,其设计借鉴了Google Spanner和HBase,但实现更为简洁,无需依赖任何分布式文件系统。通过Rust语言实现Raft共识算法,并将共识状态存储于RocksDB中,TiKV保证数据一致性。引入Placement Driver(放置驱动)实现分片,支持数据自动迁移。事务模型参考Google Percolator并进行了性能优化,支持快照隔离(SI)、带锁快照隔离(SQL:SELECT ... FOR UPDATE)以及分布式事务中的外部一致性读写。
地理复制:TiKV使用Raft和Placement Driver支持跨地域数据复制。
水平扩展:借助Placement Driver和精心设计的Raft组,TiKV具备出色的水平扩展能力,可轻松扩展至100+ TB数据规模。
一致性分布式事务:类似Google Spanner,TiKV支持外部一致的分布式事务。
协处理器支持:参考HBase,TiKV实现了协处理器框架以支持分布式计算。
与TiDB协作:通过内部优化,TiKV与TiDB协同工作,提供兼具高水平扩展能力、外部一致事务及支持关系型与NoSQL设计模式的数据库解决方案。
!TiKV软件栈
Placement Driver:集群管理器,定期检查复制约束以自动平衡负载和数据。
Store:每个Store包含一个RocksDB实例,负责将数据存储至本地磁盘。
Region:KV数据迁移的基本单元,每个Region会复制到多个节点,这些副本组成一个Raft组。
Node:集群中的物理节点,每个节点包含一个或多个Store,每个Store包含多个Region。
节点启动时,Node、Store和Region的元数据会注册到PD,各Region和Store的状态会定期上报至PD。
可通过Docker Compose快速测试TiKV与TiDB:
bashgit clone [***] cd tidb-docker-compose docker-compose up -d
启动后,可通过mysql -h 127.0.0.1 -P 4000 -u root连接数据库,并访问http://localhost:3000/查看集群监控指标。
TiKV代码库主要使用Rust编写,包含C++(RocksDB)和Go(gRPC)组件。为确保一致性,项目广泛使用代码检查和自动格式化工具,且依赖Rust nightly版本以使用最新特性。
构建TiKV需至少安装以下工具:
git - 版本控制工具rustup - Rust工具链管理器awk - 模式扫描/处理语言cmake - 构建工具(gRPC依赖)go - 编程语言(gRPC依赖)make - 构建工具(运行常用工作流)clang 或 gcc - C编译器工具链bashgit clone [***] cd tikv # 后续操作默认在此目录下执行
rustup是Rust官方工具链管理器,类似Ruby的rvm或rbenv。TiKV使用RUST_VERSION文件指定的Rust版本,并依赖rustfmt组件:
bashrustup override set `tail -n 1 RUST_VERSION` rustup component add rustfmt-preview --toolchain `tail -n 1 RUST_VERSION`
TiKV提供
Makefile简化常用工作流,也可直接使用cargo操作Rust项目。
构建TiKV:
bashmake build
开发过程中,可使用cargo check快速检查代码(语法、借用检查、 lint)而不完整编译,配合cargo-watch可监听文件变化并自动执行检查:
bashcargo install cargo-watch cargo watch -s "cargo check --features dev"
提交PR前,建议运行dev任务进行代码格式化、启用clippy检查并执行测试:
bashmake dev
运行完整测试套件或指定测试:
bash# 完整测试 make test # 指定测试 cargo test $TESTNAME
所有PR会通过CI自动测试,合并前需确保CI测试通过。
如需使用TiDB和PD等组件,建议参考开发指南,至少需运行pd-server与tikv-server进行集成测试。
Ansible部署:官方Ansible部署指南提供集群部署推荐方案。
Docker部署:参考Docker部署指南部署TiKV及其他集群组件。
二进制部署:如需自定义部署,可参考二进制部署指南。
TiKV是TiDB项目的组件,需与PD(集群管理器)配合运行。目前支持的客户端包括TiDB Go客户端和TiSpark Java客户端。欢迎开发其他语言客户端。
详见配置指南了解各类配置选项。
提交补丁和贡献流程详见CONTRIBUTING。
TiKV基于Apache 2.0许可,详见LICENSE文件。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务