func (ck *Clerk) Get(key string) string {
	args := &GetArgs{}
	args.Key = key
	args.Seq = nrand()
	var reply GetReply
	index := 0
	for {
		DPrintf("client %d get %s\n", index, key)
		ok := call(ck.servers[index], "KVPaxos.Get", args, &reply)
		if ok {
			return reply.Value
		}
		time.Sleep(time.Second * 2)
		index = (index + 1) % len(ck.servers)
	}
	return reply.Value
}
fetch the current value for a key.
returns "" if the key does not exist.
keeps trying forever in the face of all other errors.
package kvpaxos
import "net/rpc"
import "crypto/rand"
import "math/big"
import "fmt"
import "time"
type Clerk struct {
	servers []string
}
func nrand() int64 {
	max := big.NewInt(int64(1) << 62)
	bigx, _ := rand.Int(rand.Reader, max)
	x := bigx.Int64()
	return x
}
func MakeClerk(servers []string) *Clerk {
	ck := new(Clerk)
	ck.servers = servers
	return ck
}
func call(srv string, rpcname string,
	args interface{}, reply interface{}) bool {
	c, errx := rpc.Dial("unix", srv)
	if errx != nil {
		return false
	}
	defer c.Close()
	err := c.Call(rpcname, args, reply)
	if err == nil {
		return true
	}
	fmt.Println(err)
	return false
}