开源兼容 Redis 协议 SSD KV 选型 kvrocks

kvrocks 最早是美图的内部项目,主要目标是提高 Redis 的容量以及降低内存使用成本,在美图内部稳定使用 1 年多后开源到社区并转到独立的 Group bitleak 进行维护,目前的使用公司主要有: 美图/携程/白山云。kvrocks 整体和 pika 功能基本一样,有部分结构设计也来自 360 的 balckwidow 项目,然而为什么不直接使用 pika 的几个主要原因:

  • Redis 语义兼容问题,我们希望更加接近 Redis 而不是每个类型都是独立的 DB
  • 主从同步设计上,pika 使用 rsync 容易成为问题定位的黑盒,kvrocks 直接基于 rocksdb 的 backup 来实现
  • 功能设计上,容量大之后意味着业务混用会变多,我们希望业务之间数据可以隔离,kvrocks 主要是通过 namespace 来实现
  • profiling 能力,磁盘 kv 相比于内存 Redis 明显的问题是毛刺点会因为磁盘任务而增多,定位具体毛刺点的 profiling 能力就显得更加重要,我们通过允许对命令级别的慢请求进行 profiling 日志收集和输出,方便定位问题
  • 代码质量,这个比较主观,这里不多说,有兴趣可以自己去看 看 kvrocks、pika 代码

其他还比如为了解决全量 compaction 带来的毛刺点问题,我们也对自身 compaction 检查策略进行一些优化

项目地址: github.com/bitleak/kvrocks ,欢迎大家使用,star 或者 fork, 这些对我们开源来说都是一种鼓励

以下是携程分享的一些文章:

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!