grpc+consul 客户端的问题

发布于 2022-09-12 01:45:41 字数 685 浏览 28 评论 0

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 技术交流群。

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

发布评论

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