TiKV架构原理(笔记)

TiKV架构原理(笔记)

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