10. Fork模式

Fork是XClient的一种方法,你可以使用它向包含此服务的所有服务器发送请求。

如果任何服务器返回无错误的响应,Fork将为此XClient返回。如果所有服务器都返回错误,Fork将返回这些错误中的一个错误。它就像一个备份模式。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)
    }
}
下一节:Broadcast 是 XClient 的一个方法, 你可以将一个请求发送到这个服务的所有节点。