TiKV架构原理(笔记)
设计目标
高性能KV存储引擎
保证多个机器之间的数据一致性
支持ACID事务
可以实现自定义数据分布和负载均衡
存储引擎,RocksDB
LSM-tree:顺序写,优化写性能
分层存储,多级缓存,提高数据读取效率: 热数据在上层
关键特性
Column Family
精细的compaction,配置线程数,手动触发,rate limiter
ingest external sst file:快速插入数据,快速balance
prefix bloom filter/iterator upper bound:特殊场景下加速scan
Raft
选举:follower-candidate-Leader
日志复制:leader复制给follower
关键特性
Leader lease本地读,优化读请求(注:每个心跳会重新续Lease)
Follower reader分担leader压力
动态副本变更,方便调度
Batch合并多个region的写入(注:raft支持的Batch操作)
Milti-Raft
负载均衡balance
分裂split
合并merge
分布式事务
基于percolator模型
PD集成授时服务,保证全局时序
两阶段提交
乐观事务并发:客户端缓存数据(unionstore),提交时才检测冲突
可选悲观事务
客户端作为事事务的协调者(tidb)
不适用单点事务管理器(primary key)
2pc
prewrite:同步写primarykey&secondarykey
commit:提交primary key就表示成功,异步提交secondary key
Coprocessor
下推函数到Tikv执行
TiKV独立组件,低耦合
向量化执行(每次处理多行,聚合表达式按列计算)