分支
例程:fork
Fork
是一个XClient
方法,你可以使用它给所有包含给该服务的服务器发送一个请求。
如果任意一个服务器返回一个没有错误的相应,Fork
就会给XClient返回,如果所有的服务器返回错误,那么fork就会返回那些错误。
这类似于Failbackup
模式。Failbackup使用最多两个请求,但是Fork
使用更多的请求(与服务器的数量相同)。
func main() {
...
xclient := client.NewXClient("Arith", client.Failover, client.RoundRobin, d, client.DefaultOption)
defer xclient.Close()
args := &example.Args{
A: 10,
B: 20,
}
for {
reply := &example.Reply{}
err := xclient.Fork(context.Background(), "Mul", args, reply)
if err != nil {
log.Fatalf("failed to call: %v", err)
}
log.Printf("%d * %d = %d", args.A, args.B, reply.C)
time.Sleep(1e9)
}
}