TiKV原理介绍一

TiKV架构

TiKV作用、

  1. 数据持久化
  2. 分布式一致性
  3. MVCC
  4. 分布式事物
  5. Coprocessor

数据持久化

写入操作

WAL: Write Ahead Log预写日志,数据线通过WAL写入日志(直接落盘sync_log=true),然后再写入缓存;可以防止掉电丢数;一般默认2个WAL文件,数据落盘成功后即可清理;

数据将先写入内存的MemTable,当数据量超过write_buffer_size大小后,数据将会转存到immutable中,将immutable刷盘后即SST文件,从而防止写阻塞;MemTable同时服务于读和写;

如果immutable达到5个会触发流控,限制写入速度,write stall;记录于日志中;可以优化存储或者调高immutable数量来提高写入速度;

 Level 0 和immutable中文件的复刻;

Level0 达到4个的时候会向Level 1合并-compaction;会做压缩和排序;形成一个压缩的有序文件

当Level 1达到256M的时候会继续向Level2进行合并;

每一层都会切分成多个SST文件,每个SST文件都是键值对文件;对于每个文件使用二分法进行查找键值信息;

删除和更新的时候直接操作MemTable中即可,待查询的时候MemTable会直接返回;

RocksDB查询操作

 Block Cache: 最近,高频访问的数据存储在Block Cache中;

其次依次按照写入最新时间查找MemTable;

再其次按从磁盘中的Level 0依次往后查找到SST文件;

根据查找的KEY 判断是否在SST的min_key和max_key中间; 布隆过滤器判断如果KEY不在,则查找下一个SST文件,如果数据在该SST文件,则二分法查找;

Column Families--CF 列簇

 CF属于RocksDb的数据分片技术,可以将数据的键值对按照不同的属性分配给不同的CF,可以让某些内存和SST文件中存的都是相同类型的数据,可以极大地增加读写的效率、提升数据压缩率;

 落数的时候会自带CF1、CF2、default 来决定落入哪个分片中;

内存和SST文件都按照CF分了,但是WAL没有按照CF区分;

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值