Multi-Raft 方案 #322
Replies: 6 comments 4 replies
-
实现 Multi-Raft 方案 使用hash分区,然后每个raft对应一个RocksDB实例,这样管理成本相对低一些。 |
Beta Was this translation helpful? Give feedback.
-
intro本文描述一些设计系统的详细内容,考虑角色包括:
角色是可以合并在同一个进程内进行一些最小化部署。 bootstrap (暂时不做)作为一个自举服务,让其它角色知道pd所在的位置。如果没有bootstrap时,也可以将pd的位置作为一个参数作为启动项。 proxy :trl, hkymetadata learner流程:
metadata的格式参考PD的描述。 转发请求brpc支持redis协议,根据 docs/cn/redis_client.md 的文档描述,使用 brpc 提供的reddis协议,相比使用hiredis(官方client)的优势有:
流程:
PD :pl, ncy, gkj为了方便运维和使用,我们可以自定义一套redis命令用于集群操作,这个也还需要再细化设计。 在初始状态下,集群可以没有任何的存储节点,我们需要添加机器节点到PD中,这时PD就可以将slot分配到对应的机器上了。 metadata包括但不限于:
TODO:具体还要再细化设计。 metadata raft组与当前的三节点组raft组方法一样。启动三个raft节点,形成一个raft组并选出leader。 流程:
功能和命令
store : dxsstore进程启动上线后,需要和PD有一些配合的工作。 功能和命令主要提供一些PD所需要的操作,包括:
启动和停止store的启停主动由PD控制。
|
Beta Was this translation helpful? Give feedback.
-
jraft rheakv 有个 fake PD 选项,也就是可以不用启动一个 PD,让 3 个 node 构成一个 group 小集群,只有数据面。 PikiwiDB 的 PD,尽量也可以做成 fake 方式,可以独立部署,也可以不独立部署。 |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
诡异!Redis Proxy RT上升后连接倾斜 https://mp.weixin.qq.com/s/ZE2-NPRY6qZ9YpZ47QrR4w |
Beta Was this translation helpful? Give feedback.
-
实现 Multi-Raft 方案
1.用 Slot 替代 DB 的概念
2.采用预分裂的方式实现集群分片
3.Raft 的粒度为Slot
Beta Was this translation helpful? Give feedback.
All reactions