Nacos 2.1.0 grpcClient初始化源码剖析
2025-04-06 10:29:47 0 举报
123
作者其他创作
大纲/内容
说明多次同步重试之后,连接还是失败了
BlockingQueue<ReconnectContext> reconnectionSignal = new ArrayBlockingQueue<>(1);
reconnectContext !== null
serverInfo = recommendServer.get() == null ? nextRpcServer() : recommendServer.get();
String serverAddress = getServerListFactory().genNextServer()
return resolveServerInfo(serverAddress);
switchServerAsync();
说明与服务端连接失败了
return instance.isEphemeral() ? grpcClientProxy : httpClientProxy;
从集群里拿到一台机器
return grpcConn;
与服务端建立连接
return streamStub.requestBiStream
jrpc里的术语,请求服务端的流
异步线程,处理连接失败问题
reconnectContext == null
jrpc客户端与服务端的调用,有一个接口定义文件nacos_grpc_service.proto。requestBiStream在接口定义文件里有定义
ReconnectContext reconnectContext = reconnectionSignal .poll(font color=\"#ed77b6\
if (System.currentTimeMillis() - lastActiveTimeStamp >= keepAliveTime)
this.font color=\"#ed77b6\
startUpRetryTimes--;
int port = serverInfo.getServerPort() + rpcPortOffset();
ServerInfo serverInfo = nextRpcServer()
connectToServer = connectToServer(serverInfo);
服务注册的时候,用到了grpcClientProxy调用服务端
Connection connectToServer = null;
while (true)
return getServerList().get(index);
rpcClient.start();
if (!isHealthy)
font color=\"#ed77b6\
this.rpcClient = RpcClientFactory.createClient(font color=\"#ed77b6\
reconnectContext.serverInfo是null
循环内
grpc的端口是nacos服务端口偏移1000,也就是8848+1000
while (startUpRetryTimes > 0 && connectToServer == null)
返回连接对象
看服务端是否在线
Connection connectionNew = connectToServer(serverInfo);
服务端
grpcBiStreamRequestAcceptor.requestBiStream
rpcClient.registerServerRequestHandler(new NamingPushRequestHandler(serviceInfoHolder));
connectToServer == null
clientEventExecutor
boolean isHealthy = healthCheck();
int index = currentIndex.incrementAndGet() % getServerList().size();
说明与服务端连接成功了
另取集群里的server端连接
给服务端发个空请求,看服务端是否在线
收藏
收藏
0 条评论
下一页