SDB 2.0.0 发布,增加了主从架构 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Aidenboss
V2EX    Go 编程语言

SDB 2.0.0 发布,增加了主从架构

  •  
  •   Aidenboss 2022-03-27 00:18:55 +08:00 1983 次点击
    这是一个创建于 1364 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直在迭代自己的 SDB

    1.x 版本发布后,SDB 已经是一个可靠的数据库了。并在 2022.03.10 增加了 cli 功能,提供 SDB 的易用性。之后我们便开始思考如何为 SDB 增加分布式的能力。

    参考 redis 的实现,SDB 优先实现了主从架构,也在 v2.0.0 正式发布。

    实现的过程比较曲折,golang 语言下可靠的 raft 库并不多,只找到了两种候选方案,并对候选方案做了以下结论:

    • hashicorp raft
      • 使用在 etcd 中,拥有广泛的使用者。然而接入下来发现,写入性能并不高。查阅了该项目的官方文档,他们只要提供的是可靠性,而不是性能。
    • dragonboat raft
      • 由国人所写,号称是最快的 multi raft 库。

    为了支持国人项目,SDB 选择了 dragonboat raft ,写入的 QPS 从 12k 下降到了 5k ,但读能力是不受影响的,而且也可以水平扩展读能力,收益还是大于损耗的。

    架构图如下: architecture

    • SDB 集群中同时只有一个 master 节点,提供写入和读取的能力。以及 N 个 slave 节点提供读取能力。
    • 当有读取请求的时候,可以请求集群中的任意节点,该节点会直接返回存储于该节点的数据。在主从节点数据同步的过程中,会因为同步时延带来数据的不一致。
    • 当有写入请求的时候,可以请求阶段中的任意节点。如果请求的节点是主节点,则直接发起提案。若请求的节点是从节点,则该节点会将写入请求转发到主节点中,由主节点发提案。
    • 当需要使用读写分离的时候,可以创建多个 sdb grpc client ,连接对应的节点即可实现。
    6 条回复    2022-03-28 12:40:51 +08:00
    ToBeHacker
        1
    ToBeHacker  
       2022-03-27 11:14:03 +08:00
    大概看了一遍,非常赞
    Aidenboss
        2
    Aidenboss  
    OP
       2022-03-28 00:14:11 +08:00
    @ToBeHacker 感谢支持。
    dacapoday
        3
    dacapoday  
       2022-03-28 10:08:31 +08:00
    看到部分指令和 Redis 类似,有考虑直接兼容现有的 Redis Client 吗?
    LoNeFong
        4
    LoNeFong  
       2022-03-28 10:53:06 +08:00
    已 star
    Aidenboss
        5
    Aidenboss  
    OP
       2022-03-28 12:40:12 +08:00
    @LoNeFong 感谢支持
    Aidenboss div class="fr">     6
    Aidenboss  
    OP
       2022-03-28 12:40:51 +08:00
    @dacapoday 好问题。首先 SDB 和 redis 定义还不太一样。然后 redis 的协议对 SDB 还是比较累赘的。所以目前没有支持的打算。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2471 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 11:10 PVG 19:10 LAX 03:10 JFK 06:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86