shardmaster

package
v0.0.0-...-3e2643c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 1, 2021 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	OK         = "OK"
	ErrTimeOut = "ErrTimeOut"
)
View Source
const Debug = 0

Debugging

View Source
const NShards = 10

The number of shards.

View Source
const WaitCommandInterval = time.Millisecond * 500

Variables

This section is empty.

Functions

func DPrintf

func DPrintf(format string, a ...interface{}) (n int, err error)

Types

type Clerk

type Clerk struct {
	// contains filtered or unexported fields
}

func MakeClerk

func MakeClerk(servers []*labrpc.ClientEnd) *Clerk

func (*Clerk) Join

func (ck *Clerk) Join(servers map[int][]string)

func (*Clerk) Leave

func (ck *Clerk) Leave(gids []int)

func (*Clerk) Move

func (ck *Clerk) Move(shard int, gid int)

func (*Clerk) Query

func (ck *Clerk) Query(num int) Config

查询操作无需使用requestId

type Config

type Config struct {
	Num    int              // config number
	Shards [NShards]int     // shard -> gid
	Groups map[int][]string // gid -> servers[]
}

A configuration -- an assignment of shards to groups. Please don't change this. shard 和 gid是多对一的关系,gid 和 servers是一对多的关系

type Err

type Err string

type JoinArgs

type JoinArgs struct {
	Servers   map[int][]string // new GID -> servers mappings
	ClientId  int64
	RequestId int
}

type JoinReply

type JoinReply struct {
	WrongLeader bool
	Err         Err
}

type LeaveArgs

type LeaveArgs struct {
	GIDs      []int
	ClientId  int64
	RequestId int
}

type LeaveReply

type LeaveReply struct {
	WrongLeader bool
	Err         Err
}

type MoveArgs

type MoveArgs struct {
	Shard     int
	GID       int
	ClientId  int64
	RequestId int
}

type MoveReply

type MoveReply struct {
	WrongLeader bool
	Err         Err
}

type Op

type Op struct {
	// Your data here.
	Type      Type
	Args      interface{}
	ClientId  int64
	RequestId int
}

type QueryArgs

type QueryArgs struct {
	Num int // desired config number
}

type QueryReply

type QueryReply struct {
	WrongLeader bool
	Err         Err
	Config      Config
}

type ShardMaster

type ShardMaster struct {
	// contains filtered or unexported fields
}

参考其他人的设计 Lab4换了一种风格,简化了RPC请求处理方面

func StartServer

func StartServer(servers []*labrpc.ClientEnd, me int, persister *raft.Persister) *ShardMaster

servers[] contains the ports of the set of servers that will cooperate via Paxos to form the fault-tolerant shardmaster service. me is the index of the current server in servers[].

func (*ShardMaster) Join

func (sm *ShardMaster) Join(args *JoinArgs, reply *JoinReply)

bug修复4A:interface {} is *shardmaster.JoinArgs, not shardmaster.JoinArgs

func (*ShardMaster) Kill

func (sm *ShardMaster) Kill()

the tester calls Kill() when a ShardMaster instance won't be needed again. you are not required to do anything in Kill(), but it might be convenient to (for example) turn off debug output from this instance.

func (*ShardMaster) Leave

func (sm *ShardMaster) Leave(args *LeaveArgs, reply *LeaveReply)

func (*ShardMaster) Move

func (sm *ShardMaster) Move(args *MoveArgs, reply *MoveReply)

func (*ShardMaster) Query

func (sm *ShardMaster) Query(args *QueryArgs, reply *QueryReply)

Query操作不会进行updateConfig,所以要单独处理

func (*ShardMaster) Raft

func (sm *ShardMaster) Raft() *raft.Raft

needed by shardkv tester

type Type

type Type string
const (
	Join  Type = "Join"
	Leave Type = "Leave"
	Move  Type = "Move"
	Query Type = "Query"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL