我应该是客户端启动时 Dial 了服务,得到了 conn 。
那么假设服务不挂的情况下,我调用服务是一直用这个 conn,还是客户端启动时先不 Dial,然后每次调用服务都 Dial 获得新的 conn 然后 close ?
客户端请求服务的频次不确定会有多少,可能时多时少
1
Jooooooooo 2020-12-03 23:12:08 +08:00 1
这种往下看还是 tpc
因为建立连接成本大, 一般都是连接池 所以每次调用都是复用之前的连接 (当然更细节的看也有自动回收 idle 连接, 断开无效连接等等逻辑 |
2
wunonglin OP |
3
Jooooooooo 2020-12-04 11:12:09 +08:00 1
@wunonglin 得拿多个地址创建链接, 要不然你的负载均衡就没了.
试想这单独地址的机器挂了, 发起请求还得重建链接, 效率不高. 那个瞬间的请求估计得都超时了 一般来讲集群机器数量不是特别多的情况下 (超过 5000), 和每个机器都弄个连接池成本也不大 |
4
wunonglin OP |
5
joesonw 2020-12-04 13:57:21 +08:00
你这是要 GRPC LoadBalancer
1. grpc dialOptions 里面可以用自己的 resolver 去解析地址, 可以参考这里 https://github.com/sercand/kuberesolver 2. 可以上 envoy 之类的, 对于你客户端来说是透明的, 只有一个地址. envoy 可以做 load balancing |