返回介绍

3.9 分组

发布于 2020-10-24 07:04:30 字数 3146 浏览 1077 评论 0 收藏 0

分组: group

当你在服务器端注册服务的时候,你可能注意到第三个参数我们一般设置它为空的字符串,事实上你可以为服务增加一些元数据。

你可以通过UI管理器查看服务的元数据 rpcx-ui),或者增删一些元数据。

group 就是一个元数据。如果你为服务设置了设置group, 只有在这个group的客户端才能访问这些服务(这个限制是在路由的时候限制的, 当然你在客户端绕过这个限制)。

```go server.go

func main() { flag.Parse()

go createServer1(*addr1, "")
go createServer2(*addr2, "group=test")

select {}

}

func createServer1(addr, meta string) { s := server.NewServer() s.RegisterName("Arith", new(example.Arith), meta) s.Serve("tcp", addr) }

func createServer2(addr, meta string) { s := server.NewServer() s.RegisterName("Arith", new(Arith), meta) s.Serve("tcp", addr) }


客户端通过 `option.Group` 设置组。

如果在客户端你没有设置 `option.Group`, 客户端可以访问这些服务, 无论服务是否设置了组还是没设置。

```go client.go
    option := client.DefaultOption
    option.Group = "test"
    xclient := client.NewXClient("Arith", client.Failover, client.RoundRobin, d, option)
    defer xclient.Close()

    args := &example.Args{
        A: 10,
        B: 20,
    }

    for {
        reply := &example.Reply{}
        err := xclient.Call(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)
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文