Kvrocks 设计与实现
「Kvrocks: 一款开源的企业级磁盘 KV 存储服务」对 Kvrocks 进行了整体性的介绍,本文从关键设计和内部实现来分析,希望对于想知道如何实现磁盘类型 Redis,以及想熟悉 Kvorcks 设计和实现的人带来一些帮助。 内部设计 Kvrocks在内部设计上主要拆分成几个部分: Redis 协议接收和解析模块,负责解析网络请求和解析 Redis 协议,相比 Redis 来说,Kvrocks 在 IO 处理以及命令执行都是多线程模型; 数据结构转换模块,负责将 Redis 复杂类型转为 RocksDB 可处理的简单 KV,不同类型在设计上会有一些小差异; 数据存储模块,Kvrocks 底层使用 RocksDB 并对其做了不少针对性的性能优化,文章「 Kvrocks 在 RocksDB 上的优化实践」进行了详细说明,感兴趣的同学可以前往阅读; 主从复制模块,类似 Redis 的异步复制的方式,每个从库都会创建一个对应的复制线程。在实现方面,使用 RocksDB CheckPoint + WAL 来实现全量和增量同步; 集群模块,包含 Redis 集群协议兼容以及在线迁移的功能。这...