grpc+consul 客户端的问题
grpc
+consul
客户端通过consul
获取服务端的配置从而连接服务端请求数据。
有个问题一直不明白,通常客户端是以一个独立的服务运行的还是直接写到路由的handlerFunc
中运行的?
我目前是把客户端封装为一个函数,让路由调用它。
//CallTest()是封装好的客户端函数
//用于调用 服务端的 Test 接口
func CallTest() {
connFormConsul,err := grpc.Dial(consulConfig, ...)
defer connFormConsul.Close()
...
service := pb.NewXXXClient(connFormConsul)
//调用服务端API
service.Test(...)
}
但是这么使用,每次请求CallTest()
都要重新连接一次,这里就产生了2~3百毫秒的延迟(本地测试)。
我试了把客户端一直运行,路由与客户端耦合,延迟降到30毫秒内(本地测试),同时启动两个服务端A与B。这样假如客户端启动的时候连接的是A服务器,当A挂了之后,客户端就请求不到数据了。
这些问题大家都是怎么解决的??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论