- Part Ⅰ 开发起步
- Part Ⅱ 注册中心
- Part Ⅲ 特性
- Part Ⅳ 插件
- Part Ⅴ 其它
- Part Ⅵ 网关
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
3.10 服务状态
示例: state
state
是另外一个元数据。 如果你在元数据中设置了state=inactive
, 客户端将不能访问这些服务,即使这些服务是"活"着的。
你可以使用临时禁用一些服务,而不是杀掉它们, 这样就实现了服务的降级。 server.
你可以通过 rpcx-ui)来时实现禁用和启用的功能。
```go server.go
func main() { flag.Parse()
go createServer1(*addr1, "")
go createServer2(*addr2, "state=inactive")
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) }
```go client.go
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.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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论