通常,我们将服务器地址(例如"localhost:56666“或"someserver:9999”)传递给grpc的拨号方法。
例: grpc.Dial("localhost:56666",grpc.WithInSecure())
但是在grpc-go repo中给出的测试用例中(参见下面的链接),拨号的第一个参数是"*Dial(r.Scheme()+":///test.server",WithInsecure(),WithTimeout(5*time.Second))*“。当我通过运行这些go测试文件打印这个值时,我观察到这个地址值是"bykrwuxel00s:///test.server“。
https://github.com/grpc/grpc-go/blob/master/balancer/roundrobin/roundrobin_test.go#L102
https://github.com/grpc/grpc-go/blob/master/clientconn_test.go#L135
这作为一个有效的服务器地址是如何工作的?
发布于 2019-11-20 18:39:07
gRPC URI目标的"type“元素基本上只表示目标的”类型“。有关更多详细信息,请参阅https://github.com/grpc/grpc/blob/master/doc/naming.md#name-syntax。
例如,通过这种方式,gRPC客户端可以查看该类型并决定使用何种名称解析机制(在内部,每个“解析器”都在唯一的方案下注册)。
在本例中,该测试似乎使用了它通过调用"GenerateAndRegisterManualResolver“生成的自定义解析器,该自定义解析器动态地生成了唯一的全局注册方案:https://github.com/grpc/grpc-go/blob/7c1d326729dc9b0a07135f8902ddcc050ff8ab64/resolver/manual/manual.go#L89。
https://stackoverflow.com/questions/58956544
复制相似问题