# Raft 日志复制 

__*Committed*__

+ Propose
+ Append
+ Replicate
  + Append
+ **Committed**
+ Apply
  
![right](./student-guide/diagram/RaftLogReplication06_aa_001_20220511.png)
-------------------------------------------------------------
接下来,我们说明一下我们提到的 raft 层上的 committed 其实和我们平时说的应用开发中的 committed 是有区别的。

我们的 TiKV 节点实际上是将数据分层包装起来的,这个有点类似于 TCP/IP 的七层协议,比如图中,最底层是 rocksdb raft 和 rocksdb kv 两个存储 raft log 和 kv 数据的数据存储层,上面是 raft 层,raft 层上面是 MVCC 层,在 MVCC 层上我们又包装了 Transaction 层。在 Transaction 层上才是我们应用程序的事务 committed。那么,上面说的 committed 其实是 raft 层上的动作,代表了 raft log 已经被持久化到了 TiKV 节点中,也就 rocksdb raft 中了。