GRPC 调用服务时候的连接的一些疑惑
資深大佬 : wunonglin 3
我应该是客户端启动时 Dial 了服务,得到了 conn 。
那么假设服务不挂的情况下,我调用服务是一直用这个 conn,还是客户端启动时先不 Dial,然后每次调用服务都 Dial 获得新的 conn 然后 close ?
客户端请求服务的频次不确定会有多少,可能时多时少
大佬有話說 (5)
我应该是客户端启动时 Dial 了服务,得到了 conn 。
那么假设服务不挂的情况下,我调用服务是一直用这个 conn,还是客户端启动时先不 Dial,然后每次调用服务都 Dial 获得新的 conn 然后 close ?
客户端请求服务的频次不确定会有多少,可能时多时少
因为建立连接成本大, 一般都是连接池
所以每次调用都是复用之前的连接
(当然更细节的看也有自动回收 idle 连接, 断开无效连接等等逻辑
对了,因为我是用注册中心的
这样的话是可以拿 N 个服务的地址分别创建多个 conn 组成连接池,还是只是拿一个地址创建多个 conn 比较好点?
试想这单独地址的机器挂了, 发起请求还得重建链接, 效率不高. 那个瞬间的请求估计得都超时了
一般来讲集群机器数量不是特别多的情况下 (超过 5000), 和每个机器都弄个连接池成本也不大
噢噢,我还以为是要等原本的链接挂了才去注册中心拿新的。。