NamingGrpcClientProxy是Nacos SDK中,Grpc调用的主要实现类。话不多说,看一下类图:
该类的启动过程
NamingGrpcClientProxy#NamingGrpcClientProxy
->start()
->RpcClient#start()
构造函数逻辑
1 | public NamingGrpcClientProxy(String namespaceId, SecurityProxy securityProxy, ServerListFactory serverListFactory, |
1 | private void start(ServerListFactory serverListFactory, ServiceInfoHolder serviceInfoHolder) throws NacosException { |
1 | public final void start() throws NacosException { |
往reconnectionSignal队列添加ReconnectContext的场景(触发重新连接):
- ConnectResetRequestHandler,收到服务端ConnectResetRequest请求
- RpcClient#onServerListChange,监听到Server列表有变化
- 第一次启动start过程中,连接后端失败
- GrpcClient#bindRequestStream 创建双向流,从stream收到onCompleted和onError
- RpcClient发送请求失败
初始化阶段,sdk与server的请求
client->server ServerCheckRequest 同步单向请求(Unary请求)
建立BiStream连接
client->server ConnectionSetupRequest 服务端保存连接,发送请求SetupAckRequest
server->client SetupAckRequest
client->server SetupAckResponse
其他
server->client ConnectResetRequest server端主动触发客户端进行重连,起到负载均衡的作用
server->client ClientDetectionRequest server主动探活