# TiKV 服务器的架构

+ 持久数据
+ 一致性
+ `MVCC`（PD 一乘一）
+ 分布式事务
+ 处理器副处理器

![`smart`](TiKVArchitectureAndRole_aa_001_20220511.png)

------------------------------------------------------------------------------
上一个单元中，我们学习到TiDB服务器作为SQL层，向客户端程序暴露MySQL协议连接端点。它负责接受客户端连接，执行SQL解析和优化，最终生成分布式执行计划。TiDB服务器本身是无状态的。

TiKV 的主要特性是为 TiDB 提供数据持久性。这是通过将 RocksDB 集成到 TiKV 实现的，因此我们将重点关注 TiKV 中 RocksDB 的数据写入（即持久性）和读取，以及介绍 RocksDB 列族特性。

另一个TiKV的特性是它支持分布式事务和MVCC。

在TiDB中，TiKV是一个分布式存储引擎。数据以分布式的方式存储在region中，因此我们使用Raft共识算法来实现分布式环境中数据的强一致性。

每个区域及其副本形成一个Raft组，多个Raft组的组合称为Multi-Raft。我们将介绍Raft中的复制和领导者选举，以及基于Raft共识算法的数据写入、读取、分割和合并。这里基于Raft共识算法的写入和读取与先前提到的RocksDB写入和读取不同。

RocksDB写入和读取主要指的是在单个TiKV节点上保证数据持久性和一致性，而基于Raft共识算法的写入和读取主要涉及多个TiKV节点。

TiKV 的 Coprocessor 特性使其具备了推送操作符的能力。我们可以利用这个特性将一些 SQL 计算工作负载，如过滤、聚合和投影，交给 TiKV 实例来执行。这样就不需要将所有数据从 TiKV 通过网络发送到 TiDB 服务器（执行计划中的 `root` 节点），节省了网络带宽和 TiDB 服务器的 CPU 负载。Coprocessor 可以并行操作。