Tair 存储引擎之路


阿里巴巴集团-核心系统研发-那岩 (王玉法) Tair 存储引擎之路 目录 一.Tair概述 二.mdb 三.rdb(Redis) 四.ldb(LevelDB) 一.Tair概述 Tair概述 Master Slave configserver dataserver client DS DS DS mdb kv以及分级 key缓存 rdb (Redis) kv以及复杂数 据结构缓存 heartbeat heartbeat … ldb (LevelDB) kv以及分级key存 储,数据排序 Storage Engine cache persistence duplicate/migrate 二.mdb mdb概述 • 类memche,page/slab管理内存 • 共享内存,重启数据不丢 • area逻辑管理 – area维度的quota与lru evict控制 – 清理某个area数据 • 数据过期 • 优化内存使用率,均衡slab • 详细statistics监控 mdb流程 … area link list global ht mempool item item item item item item … … slab … … slab page cron clear expired balance slab page 三.rdb(Redis) Redis流程(存储) data dict expire dict … … RAW LIST SET current ht rehashing ht … cron redisDb zmalloc redisClient request-cmd rdb流程 redisClient redisDB … redisDB redisDB request-cmd rdb_context rdb_session rdb rdb概述 • 支持Redis所有数据结构 • 设置限制 – 内存quota • logiclock – lazy 清理db数据 rdb概述 • 轻量化 – 去除aof/vm – 精简数据结构 • Restful协议 • 持久化 – 使用ldb作为rdb的持久化(TODO) 四.ldb(LevelDB) LevelDB流程 L0 L1 MemTable Log 3 9 24 40 WriteBatch Put 0 9 MemTable Log MemTable Log MemTable Log L0 L1 3 9 24 40 0 9 Get key: 7 ① ② ③ ④ ① ② compact ldb 流程 Mdb cache LevelDB Ldb Get LevelDB ① ③ ② Mdb cache LevelDB Ldb Put LevelDB ① ② … … ldb概述 .配置使用 • 多实例配置使用,充分利用IO • 内嵌mdb作为KV级别cache • 配置灵活化,参数调优 – 适合大数据量的参数配置 (mmt/sst size,mmap限制, etc.) – 特定排序算法 (字节,数字,etc.) ldb概述.新功能 • 嵌入datafilter逻辑 – expiretime – 异步清理 • 主动触发compact – Level-n => Level-n compact,清理垃圾数据 – 高Level compact,加速range合并 (TODO) • 使用binlog做异步跨集群数据同步 ldb概述.优化 • 主动限制compact – 限制写入放大 – 禁掉seek触发的compact • 优化compact锁粒度 – 减弱数据量增长对读写的性能影响 • 大数据量导入FastDump – 数据预排序,按桶分memtable FastDump导入数据 L0 L1 L2 0 0 2 2 10 10 1 1 20 20 3 3 11 11 80 80 WriteBatch MemTable 40 40 92 92 MemTable MemTable MemTable MemTable MemTable MemTable 相关资料 • Tair开源页面 http://code.taobao.org/p/tair/src/ 谢 谢 !
还剩20页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf