云卷云舒::云原生数据库系列-分布式KV事务数据库TiKV

一、简介:

TiKV 是一个开源的分布式事务 Key-Value 数据库,支持跨行 ACID 事务,同时实现了自动水平伸缩、数据强一致性、跨数据中心高可用和云原生等重要特性。作为一个基础组件,TiKV 可作为构建其它系统的基石。目前最主要的chang,TiKV 已用于支持分布式 HTAP 数据库—— TiDB 中,负责存储数据,并已被多个行业的领先企业应用在实际生产环境。

二、发展:

发展很快,不到一年成为孵化项目

  • 2018 年 8 月 29 日,称 CNCF宣布接纳 TiKV 作为 CNCF Sandbox 的云原生项
  • 目。
  • 2019 年 5 月,CNCF 的 TOC(技术监督委员会)投票决定接受 TiKV 晋级为孵
  • 化项目。

三、特性:

  • 跨数据中心高可用:使用 Raft 协议和 PD(Placement Driver)来实现跨地域、跨数据中心的高可用。
  • 水平扩展:通过 PD 和精心实现的 Multi-Raft ,TiKV 在水平扩展性方面的表现出色,可以轻松扩展到 200+TB 的数据。
  • 一致的分布式事务 :与 Google Spanner 类似,TiKV 支持外部一致的分布式事务。
  • 协处理器(Coprocessor)支持:与 HBase 类似,TiKV 实现了支持分布式计算的协处理器框架,用于支持计算下推操作。
  • 与 TiDB 无缝协同 :TiKV 和 TiDB 强强联合,构建了一个具有高水平扩展能力、支持一致性事务、融合传统关系型数据库和 NoSQL 优势特性的 NewSQL 数据库解决方案。

四、架构

1. 设计目标
a. 高性能KV存储引擎
b. 保证多个机器之间的数据一致性
c. 支持ACID事务
d. 可以实现自定义数据分布和负载均衡


2. 存储引擎,RocksDB
a. LSM­tree:顺序写,优化写性能
b. 分层存储,多级缓存,提高数据读取效率: 热数据在上层
c. 关键特性

  •  Column Family
  •   精细的compaction,配置线程数,手动触发,rate limiter
  •   ingest external sst file:快速插入数据,快速balance
  •   prefix bloom filter/iterator upper bound:特殊场景下加速scan

d. Raft

  •  选举:follower­candidate­Leader
  •  日志复制:leader复制给follower
  •  关键特性
    • Leader lease本地读,优化读请求(注:每个心跳会重新续Lease)
    • Follower reader分担leader压力动态副本变更,方便调度
    • Batch合并多个region的写入(注:raft支持的Batch操作)

e. Milti­Raft

  •  负载均衡balance
  •  分裂split
  •  合并merge


3. 分布式事务
a. 基于percolator模型

  • PD集成授时服务,保证全局时序
  • 两阶段提交
  • 乐观事务并发:客户端缓存数据(unionstore),提交时才检测冲突
  • 可选悲观事务
  • 客户端作为事事务的协调者(tidb)
  • 不适用单点事务管理器(primary key)

b. 2pc

  • prewrite:同步写primarykey&secondarykey
  • commit:提交primary key就表示成功,异步提交secondary key

4. Coprocessor

  • 下推函数到Tikv执行
  • TiKV独立组件,低耦合
  • 向量化执行(每次处理多行,聚合表达式按列计算)

五、应用

TIKV+REDIS分布式缓存系统
redis的集群不支持分布式事务,codis支持了redis'的集群,但是仍然不支持分布式事务(后续可能会支持),所有可以基于TiKV来实现分布式事务。

注:数据库的学习笔记,部分内容来自网络,如涉及侵权请您留言,我会立刻处置。

猜你喜欢

转载自blog.csdn.net/bishenghua/article/details/134987365