TiKV 简介
概念:TiKV 是一个开源的分布式事务 Key-Value 数据库,支持跨行 ACID 事务,同时实现了自动水平伸缩、数据强一致性、跨数据中心高可用和云原生等重要特性。作为一个基础组件,TiKV 可作为构建其它系统的基石。目前,TiKV 已用于支持分布式 HTAP 数据库—— TiDB 中,负责存储数据,并已被多个行业的领先企业应用在实际生产环境。2019 年 5 月,CNCF 的 TOC(技术监督委员会)投票决定接受 TiKV 晋级为孵化项目。
与其他传统NoSQL系统不同,TiKV不仅提供经典的键值API,而且还提供符合ACID的事务性API。TiKV内置在Rust中,并由Raft支持,最初创建时是为了补充TiDB(与MySQL协议兼容的分布式HTAP数据库)。
特性:
- 跨数据中心高可用:使用 Raft 协议和 PD(Placement Driver)来实现跨地域、跨数据中心的高可用。
- 水平扩展:通过 PD 和精心实现的 Multi-Raft ,TiKV 在水平扩展性方面的表现出色,可以轻松扩展到 200+TB 的数据。
- 一致的分布式事务 :与 Google Spanner 类似,TiKV 支持外部一致的分布式事务。
- 协处理器(Coprocessor)支持:与 HBase 类似,TiKV 实现了支持分布式计算的协处理器框架,用于支持计算下推操作。
- 与 TiDB 无缝协同 :TiKV 和 TiDB 强强联合,构建了一个具有高水平扩展能力、支持一致性事务、融合传统关系型数据库和 NoSQL 优势特性的 NewSQL 数据库解决方案。
TiKV 历史及由来
TiKV是用Rust编程语言实现的。它使用Facebook的RocksDB和Raft等技术。该项目最初受到Google Spanner和HBase的启发。TiKV(TiKV中的Ti代表钛。钛具有所有金属元素中最高的强度密度比,并以希腊神话中的泰坦命名)的设计灵感来自Google的一些出色的分布式系统,例如BigTable,Spanner和Percolator,以及近年来学术界的一些最新成就,例如Raft共识算法。
- TiKV是最初由PingCAP创建以补充TiDB的分布式事务键值数据库。
- 作为Cloud Native Computing Foundation的孵化项目,TiKV旨在填补统一分布式存储层的作用。TiKV 通过支持跨越数万亿行的PB级部署,擅长处理大型数据。
- 它补充了其他CNCF项目技术(例如etcd),该技术可用于小容量元数据存储,并且可以使用使用其他协议的无状态查询层进行扩展,例如使用TiDB的MySQL。
TiKV 最新版说明
TiKV 发布了 4.0 版本,此版本主要完善了TiKV的稳定性并创造新的特性。
Follower read
通过Follower read,TiKV使用一系列负载平衡机制将从Raft leader的读取请求卸载给它的follower。它确保单行数据读取的线性化,有助于减少区域leader的负载,并大幅提高整个系统的吞吐量。
Titan
Titan是一个用于键值分离的RocksDB插件。与TiKV使用的所有RocksDB特性兼容,它通过将大值从日志结构合并树(LSM树)中分离并独立存储它们来减少写放大。它提高了范围查询的性能并减少了它对写性能的影响。Titan之前是实验特性,现在已经在TiKV 4.0中普遍可用。
Unified thread pool
TiKV的统一线程池是用于处理读请求的统一自适应线程池。它统一了point-get读池和协处理器读池,为小请求提供优先级,从而提高了资源利用率,并限制了大查询对小请求的影响。
Load-based splitting
当一个区域是读取热点时,基于加载的分割允许将该区域自动分割为几个小区域。分割后的新区域均匀分布到不同的TiKV节点。基于加载的分割解决了区域分布不均匀导致的热点问题,如全表扫描和小表的索引查询。
安全性
TiKV在3月份完成了第三方安全评估。由CNCF委托Cure53执行的TiKV范围评估取得了普遍积极的结果。我们还通过实施以下措施提高了部署在云环境中的TiKV集群的数据安全性:https://tikv.org/blog/tikv-pass-security-audit/
Encryption at rest
TiKV 4.0支持静态加密,确保数据的可靠性和安全性。静态加密通过确保数据在磁盘上加密来防止未经授权的访问未加密的数据,从而为存储的数据提供数据保护。
TLS in the HTTP (status) port
TiKV 4.0支持HTTP(status)端口中的TLS,并在线动态更新证书,通过HTTP端口更安全地获取TiKV的内部状态。