MIT 6.824 Distributed Systems 分布式系统课程系列4 Lab 4: Sharded Key/Value Service(上)

Lab4 分片kv服务(上)(配置服务器)


1.介绍


2.The Shard Master基本数据

提炼出来的核心数据就是一个Config结构体,即一份节点的配置,即shard和group的具体定义。

1
2
3
4
5
type Config struct {
Num int // config number
Shards [NShards]int // shard -> gid NShards为分片数量。定为10
Groups map[int][]string // gid -> servers[] 哪个group id包含了哪些server
}

3.主要操作(命令)

  1. join
    让某些group加入集群。
    参数类型为map[int][]string
    比如{1:"x", "y", "z"}{2:"a", "b", "c"},即把1和2两个group加入集群。1包含xyz三个server,2包含abc三个server。

  2. leave
    让某些group离开集群。
    比如leave(2),那么group2就要离开集群,这时里面的abc三个server是存了某些shard的数据的,得把这些shard还给系统,分到其他的group里,最后把group2断开。

  3. query
    获取某一份config。

  4. move
    把某个shard交给某个group。即把这个shard的数据挪到指定的group,从此被指定的group管理。

shardmaster主要就是要维护一串配置(Config的数组)(对标kvserver的键值对数据)。
一样是client/server架构,利用raft来保证配置数据的一致和可靠。raft里的log项就是一个个join/leave/query/move操作。


4.基本流程


5.其他

上次更新 2021-01-28