V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
hulk
V2EX  ›  分享创造

Kvrocks: 一款开源的企业级磁盘 KV 存储服务

  •  1
     
  •   hulk ·
    git-hulk · 2021-06-17 22:56:53 +08:00 · 3092 次点击
    这是一个创建于 1259 天前的主题,其中的信息可能已经有所发展或是发生改变。

    完整文章见: https://zhuanlan.zhihu.com/p/381670563

    Kvrocks 是基于 RocksDB 之上兼容 Redis 协议的 NoSQL 存储服务,设计目标是提供一个低成本以及大容量的 Redis 服务,作为 Redis 在大数据量场景的互补服务,选择兼容 Redis 协议是因为简单易用且业务迁移成本低。目前线上使用的公司包含: 美图、携程、百度以及白山云等,在线上经过两年多大规模实例的验证。

    项目核心功能包含:

    • 兼容 Redis 协议
    • 支持主从复制
    • 支持通过 Namespace 隔离不同业务的数据
    • 高可用,支持 Redis Sentinel 自动主从切换
    • 集群模式 (进行中,预计在 7-8 月份完成)

    GitHub 地址: https://github.com/kvrockslabs/

    14 条回复    2022-06-27 12:30:13 +08:00
    zagfai
        1
    zagfai  
       2021-06-17 23:55:18 +08:00   ❤️ 1
    门槛低了越做越多这些开源项目那意义在哪?
    akira
        2
    akira  
       2021-06-18 01:10:44 +08:00
    赞一个先
    airyland
        3
    airyland  
       2021-06-18 04:11:58 +08:00
    似乎 pika tendis 也是类似方案,好奇优势差异是什么?
    haozes
        4
    haozes  
       2021-06-18 11:14:05 +08:00
    🔥前留名
    hulk
        5
    hulk  
    OP
       2021-06-21 15:15:38 +08:00
    @zagfai 你可以你来,别看不懂开始喷
    hulk
        6
    hulk  
    OP
       2021-06-21 15:18:59 +08:00
    @airyland

    pika 功能基本一样,有部分结构设计也来自 360 的 balckwidow 项目,然而为什么不直接使用 pika 的几个主要原因:

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

    其他还比如为了解决全量 compaction 带来的毛刺点问题,我们也对自身 compaction 检查策略进行一些优化。Tendis 主要是集群方案过于复杂,真的不确定外部有多少公司真能用起来。
    zagfai
        7
    zagfai  
       2021-06-21 17:02:04 +08:00
    @hulk 所以解决的问题是什么?我几年前习惯用 redis 。。千万级别用户 DAU 的案例没啥不能解决的。
    然后小项目我是懒到 redis 都不用了,啥都直接扔 mysql,可以说百万日活级创业级项目都难以出现什么瓶颈。
    hulk
        8
    hulk  
    OP
       2021-06-21 17:07:34 +08:00
    @zagfai 对于大部分公司来说,如果存储的数据量太小,确实不是瓶颈。很多公司的 Redis 集群回到百 G 甚至是 T 级别,那么成本和实例容量是一个比较大的挑战。而 MySQL 其实也是选择,但使用场景和性能不是一个维度的,比如很多业务就是一个简单的 KV + 过期场景,使用 MySQL 或者其他选型也不是问题,那么就需要业务去实现这些逻辑。
    hulk
        9
    hulk  
    OP
       2021-06-21 17:13:53 +08:00
    另外,门槛低不低这个问题先不讨论,既然开源出来能够让百度、携程、白山云采用肯定是有自身的优势和设计理念,而不同设计做出来的系统当然也完全不是一回事。每个公司对于这方面的诉求不一样,就像 OS/Kernel 也同样一堆类似的选型,选择自己合适才是最重要。

    包含发文章之前,我们也知道一定会有人想知道差异点是什么,选择不在里面去说明,主要是从我们角度来说,没办法完全保证客观去对比,所以更希望是有人抛出来的时候,再来公开的讨论而不是写在文章里面到处传播。
    zagfai
        10
    zagfai  
       2021-06-21 17:22:03 +08:00
    别说什么能够让百度携程白云山采用这种话。。。采用量是多少。。 一个小团队试一试?那多数是因为 kpi 问题,没事找事做的。

    Redis 数百 G 上 T 是啥问题?是对 Redis 误用的问题。上百 G 的 Redis 如果不是千万日活级别的 api,多数是被滥用,更可能是需要 MongoDB 。

    我喷点其实在于,你列举出的那些项目核心功能,哪个 Redis 没有?如果有的话,差别在哪?或者说,你们这跟 Redis 有啥本质区别?
    hulk
        11
    hulk  
    OP
       2021-06-21 18:34:23 +08:00
    请阅读完再来说?有啥区别? 一个数据在磁盘,一个在内存,你觉得有什么区别? 另外,实例数有千级别,够不够?

    最后一条回复你,开源并不是求着你用。
    GrayXu
        12
    GrayXu  
       2021-07-12 11:28:55 +08:00
    @zagfai 有可能不是对 redis 的误用,而是你没有想象过这样的需求场景。
    dvd888
        13
    dvd888  
       2022-06-20 16:10:20 +08:00
    没有了? github 上不见了。
    hulk
        14
    hulk  
    OP
       2022-06-27 12:30:13 +08:00
    @dvd888 贡献到 Apache 了,GitHub 地址: https://github.com/apache/incubator-kvrocks
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1254 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:02 · PVG 02:02 · LAX 10:02 · JFK 13:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.