Real world Rust
- Why and how we use Rust in TiKV0694/p20_1.jpg) ## TiKV 整体架构 ## 主要组件 • Asynchronous IO • mio • Storage engine • RocksDB • RPC • Protobuf PRC • Metrics • Prometheus • futures-rs • WIP • rust-grpc 84bac0694/p24_1.jpg) ## Rust 和 C - Rust 对 C 的调用没有任何 overhead C 区域的调用没法保证安全 • TiKV 场景的特殊性 ☐ RocksDB  ## 周边工具 • cargo0 码力 | 29 页 | 506.53 KB | 2 年前3
TiDB v5.1 DocumentationScheduling ..... 1237 12.2 Storage Engine - TiKV …… 1242 12.2.1 TiKV Overview …… 1242 12.2.2 RocksDB Overview …… 1244 12.2.3 Titan Overview …… 1247 12.2.4 Titan Configuration …… 1255 12.3 Storage |Expression indexes|Experimental|Experimental|Experimental|Experi| |Columnar storage (TiFlash)|Y|Y|Y|Y| |RocksDB engine|Y|Y|Y|Y| |Titan plugin|Y|Y|Y|Y| |Invisible indexes|Y|Y|Y|N| |Composite PRIMARY KEY|Y|Y|Y|Y| storage.scheduler-worker-pool-size: 5 raftstore.store-pool-size: 3 raftstore.apply-pool-size: 3 rocksdb.max-background-jobs: 8 raftdb.max-background-jobs: 4 raftdb.allow-concurrent-memtable-write: true0 码力 | 2745 页 | 47.65 MB | 2 年前3
FISCO BCOS 2.7.0 中文文档colspan="2">存储引擎存储设计 支持KV和SQL 引擎类型 支持leveldb、rocksdb、mysql CRUD接口 提供CRUD接口访问链上数据 rPBFT可解决拜占庭问题,安全性更高。 - 存储:世界状态的存储从原来的MPT存储结构转为分布式存储,避免了世界状态急剧膨胀导致性能下降的问题;引入可插拔的存储引擎,支持 LevelDB、RocksDB、MySQL等多种后端存储,支持数据简便快速扩容的同时,将计算与数据隔离,降低了节点故障对节点数据的影响。 - 网络:支持网络压缩功能,并基于负载均衡的思想实现了良好的分布式网络分发机制,最大化降低带宽开销。 否启用 - 默认开启Paillier同态加密和群签名功能 - build_chain脚本使用私钥为secp256k1的根证书和机构证书 - PBFTBackup的存储由LevelDB修改为RocksDB - 重构libdevcrypto模块,优化代码结构,使用TASSL实现国密和非国密 TLS连接 - 优化存储模块openTable的锁实现 - 优化区块数据编码为并行 - 优化大对象析构耗时为异步网络协议 0 码力 | 2538 页 | 212.43 MB | 2 年前3
FISCO BCOS 2.9.0 中文文档colspan="2">存储引擎存储设计 支持KV和SQL 引擎类型 支持leveldb、rocksdb、mysql CRUD接口 提供CRUD接口访问链上数据 rPBFT可解决拜占庭问题,安全性更高。 - 存储:世界状态的存储从原来的MPT存储结构转为分布式存储,避免了世界状态急剧膨胀导致性能下降的问题;引入可插拔的存储引擎,支持 LevelDB、RocksDB、MySQL等多种后端存储,支持数据简便快速扩容的同时,将计算与数据隔离,降低了节点故障对节点数据的影响。 - 网络:支持网络压缩功能,并基于负载均衡的思想实现了良好的分布式网络分发机制,最大化降低带宽开销。 否启用 - 默认开启Paillier同态加密和群签名功能 - build_chain脚本使用私钥为secp256k1的根证书和机构证书 - PBFTBackup的存储由LevelDB修改为RocksDB - 重构libdevcrypto模块,优化代码结构,使用TASSL实现国密和非国密 TLS连接 - 优化存储模块openTable的锁实现 - 优化区块数据编码为并行 - 优化大对象析构耗时为异步网络协议 0 码力 | 2585 页 | 166.09 MB | 2 年前3
FISCO BCOS 2.0 中文文档记账类型 账户模型(非UTXO) # 共识算法 共识框架 可插拔设计 共识算法 PBFT、Raft、rPBFT # 存储引擎 存储设计 支持KV和SQL 引擎类型 支持leveldb、rocksdb、mysql CRUD接口 提供CRUD接口访问链上数据 # 网络协议 节点间通信 P2P协议 客户端与节点通信 JsonRPC,Channel协议 消息订阅服务 AMOP协议 # 智能合约 和rPBFT可解决拜占庭问题,安全性更高。 - 存储:世界状态的存储从原来的MPT存储结构转为分布式存储,避免了世界状态急剧膨胀导致性能下降的问题;引入可插拔的存储引擎,支持LevelDB、RocksDB、MySQL等多种后端存储,支持数据简便快速扩容的同时,将计算与数据隔离,降低了节点故障对节点数据的影响。 - 网络:支持网络压缩功能,并基于负载均衡的思想实现了良好的分布式网络分发机制,最大化降低带宽开销。 否启用 - 默认开启Paillier同态加密和群签名功能 - build_chain脚本使用私钥为secp256k1的根证书和机构证书 - PBFTBackup的存储由LevelDB修改为RocksDB - 重构libdevcrypto模块,优化代码结构,使用TASSL实现国密和非国密 TLS连接 - 优化存储模块openTable的锁实现 - 优化区块数据编码为并行 - 优化大对象析构耗时为异步0 码力 | 2649 页 | 201.08 MB | 2 年前3
TiDB中文技术文档coprocessor执行时间 和业务相关,但通常不会出现持续高位的值 。Pending task:累积的任务数量 除了 pd worker,其他任何偏高都属于异常 。stall:RocksDB Stall时间 大于 0,表明 RocksDB 忙不过来,需要注意 IO 和 CPU 了 。channel full:channel 满了,表明线程太忙无法处理 如果大于 0,表明线程已经没法处理了 。95% block-cache-size 参数: ■ rocksdb defaultcf block-cache-size(GB) = MEM 80% / TiKV 实例数量 30% ■ rocksdb writecf block-cache-size(GB) = MEM 80% / TiKV 实例数量 45% ■ rocksdb lockcf block-cache-size(GB) = deploy\_dir }}/log|日志目录| |TiKV|tikv\_data\_dir|{{ deploy\_dir }}/data|数据目录| |TiKV|wal\_dir|"|rocksdb write-ahead 日志目录,为空时与 TiKV 数据目录一致| |TiKV|raftdb\_path|"|raftdb 目录,为空时为 tikv\_data\_dir/raft|0 码力 | 444 页 | 4.89 MB | 1 年前3
TiDB v5.3 DocumentationTiDB Scheduling 1328 12.2 Storage Engine - TiKV …… 1333 12.2.1 TiKV Overview …… 1333 12.2.2 RocksDB Overview …… 1335 12.2.3 Titan Overview …… 1338 12.2.4 Titan Configuration …… 1346 12.3 Storage |Expression indexes|Experimental|Experimental|Experimental|Experi| |Columnar storage (TiFlash)|Y|Y|Y|Y| |RocksDB engine|Y|Y|Y|Y| |Titan plugin|Y|Y|Y|Y| |Invisible indexes|Y|Y|Y|Y| |Composite PRIMARY KEY|Y|Y|Y|Y| storage.scheduler-worker-pool-size: 5 raftstore.store-pool-size: 3 raftstore.apply-pool-size: 3 rocksdb.max-background-jobs: 8 raftdb.max-background-jobs: 4 raftdb.allow-concurrent-memtable-write: true0 码力 | 2996 页 | 49.30 MB | 2 年前3
TiDB v5.2 Documentation1.4 TiDB Scheduling 1284 12.2 Storage Engine - TiKV 1289 12.2.1 TiKV Overview 1289 12.2.2 RocksDB Overview 1291 12.2.3 Titan Overview 1294 12.2.4 Titan Configuration 1302 12.3 Storage Engine read and write for TiFlash - TiKV introduces a new flow control mechanism to replace the previous RocksDB write stall mechanism to improve the stability of TiKV flow control • Simplify the operation and previous RocksDB write stall mechanism. Compared with the write stall mechanism, this new mechanism reduces the impact on the stability of foreground write. In specific, when the stress of RocksDB compaction0 码力 | 2848 页 | 47.90 MB | 2 年前3
FISCO BCOS 2.7.2 中文文档和rPBFT可解决拜占庭问题,安全性更高。 - 存储:世界状态的存储从原来的MPT存储结构转为分布式存储,避免了世界状态急剧膨胀导致性能下降的问题;引入可插拔的存储引擎,支持LevelDB、RocksDB、MySQL等多种后端存储,支持数据简便快速扩容的同时,将计算与数据隔离,降低了节点故障对节点数据的影响。 - 网络:支持网络压缩功能,并基于负载均衡的思想实现了良好的分布式网络分发机制,最大化降低带宽开销。 启用 - 默认开启Paillier同态加密和群签名功能 - build_chain脚本使用私钥为secp256k1的根证书和机构证书 - PBFTBackup的存储由LevelDB修改为RocksDB - 重构libdevcrypto模块,优化代码结构,使用TASSL实现国密和非国密TLS连接 - 优化存储模块openTable的锁实现 - 优化区块数据编码为并行 - 优化大对象析构耗时为异步 变更描述 ## 新特性 - AMOP协议支持多播 - AMOP协议支持二进制传输 - JSON-RPC getTotalTransactionCount接口新增历史失败交易数统计更新 - RocksDB模式支持落盘加密 - 使用TCMalloc优化内存使用 ## 修复 - 修复P2P模块偶现不处理消息的问题 - 修复MySQL或External模式下未赋值字段,查询失败 - 修复某些极端场景下同步错误的问题0 码力 | 1422 页 | 91.91 MB | 2 年前3
TiDB v5.2 中文手册980 12.1.4 TiDB 数据库的调度 ..... 986 12.2 存储引擎 TiKV ..... 991 12.2.1 TiKV 简介 ..... 991 12.2.2 RocksDB 简介 ..... 992 12.2.3 Titan 介绍 ..... 994 12.2.4 Titan 配置 ..... 1001 12.3 存储引擎 TiFlash ..... 1004 GA 特性,提供更直观方便的方式观察事务加锁情况以及排查死锁问题。 · 新增 TiFlash I/O 限流功能,提升 TiFlash 读写稳定性。 • 为 TiKV 引入新的流控机制代替之前的 RocksDB write stall 流控机制,提升 TiKV 流控稳定性。 • 简化 Data Migration (DM) 工具运维,降低运维管理的成本。 • TiCDC 支持 HTTP 协议 OpenAPI TIKV 引入了新的流控机制代替之前的 RocksDB write stall 流控机制。相比于 write stall 机制,新的流控机制通过以下改进减少了流控对前台写入稳定性的影响: - 当 RocksDB compaction 压力堆积时,通过在 TiKV scheduler 层进行流控而不是在 RocksDB 层进行流控,避免 RocksDB write stall 造成的 raftstore0 码力 | 2259 页 | 48.16 MB | 2 年前3
共 209 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21













