0
0
0
0
专栏/.../

TiKV架构原理(笔记)

 lvlei  发表于  2020-04-14
原创

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独立组件,低耦合
    • 向量化执行(每次处理多行,聚合表达式按列计算)
0
0
0
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论