nacos注册
2023-09-01 15:04:34 1 举报
登录查看完整内容
nacos注册
作者其他创作
大纲/内容
ClientServiceIndexesManager#onEvent
NacosNamingService#registerInstance
InstanceRequestHandler#handle
port = serverInfo.getServerPort() + this.rpcPortOffset()
handleInstanceMetadataEvent
EurekaServiceRegistry#register
CP Raft协议集群持久节点同步
listeners.started(...)
client
applyInitializers(context)-initialize(context)
SpringApplication初始化
DistroClientDataProcessor#onEvent
clientConnectionEventListenerRegistry.notifyClientDisConnected(remove)
客户端探活服务端,如果response.isSuccess()->successConnections.add(outDateConnectionId)
1 服务发现(订阅)2 服务列表本地缓存
发布InstanceMetadataEvent事件,用于更新元数据
start()
nacos客户端注册2
rpcClient#start()
if (now - client.getMetaInfo().getLastActiveTime() >= KEEP_ALIVE_TIME)如果20s内没有接收到客户端心跳,将客户端添加到过期集合中
AP Distro协议集群临时节点同步
9848作为grpc服务端和客户端通信9849作为grpc服务端注册中心数据同步
NamingMetadataManager#onEvent
NacosServiceRegistry#register
EphemeralClientOperationServiceImpl#.registerInstance(...)
refreshContext
prepareContext(..)
clients.remove(clientId)
NettyServer#start
ts.start(listener)
grpc server启动流程
AbstractClient#addServiceInstance
nacos客户端注册1
AbstractAutoServiceRegistration监听WebServerInitializedEvent
临时节点集群数据同步
遍历过期集合且不存在成功集合中(if (!successConnections.contains(outDateConnectionId))),注销实例
this.connections.remove(connectionId)
handleClientOperation
getPublishInfo(instance)
NamingHttpClientProxy#egisterService
SpringApplication#run
bind()
System.currentTimeMillis() - this.lastActiveTimeStamp < this.keepAliveTime 取反
requestToServer
handle
server
发布ClientChangedEvent事件,集群数据同步
outDatedConnections.add(client.getMetaInfo().getConnectionId())
listeners.starting(...)
start(...)
ApplicationStartedEvent事件回调
server.start()
clientEventExecutor.submit
@PostConstructConnectionManager#start()
syncToAllServer
客户端注册创建rpcClient连接
unregister(outDateConnectionId)
获取NamingClientProxy:(NamingClientProxy)(instance.isEphemeral() ? this.grpcClientProxy : this.httpClientProxy)默认是临时节点,所以走grpc注册
rpcClient.request(request)
syncToVerifyFailedServer
获取服务端信息Service singleton
发布ClientRegisterServiceEvent事件,用于服务注册
BaseRpcServer#run
nacos
client.release()
publisherIndexes.get(service).add(clientId)
ServerImpl#start
客户端grpc向服务端发送心跳
1 定时心跳客户端检测
ConnectionBasedClientManager#clientDisConnected
nacos服务启动流程
NamingClientProxyDelegate#registerService
this.rpcClient = RpcClientFactory.createClient
ServiceManager.getInstance().getSingleton(service)
ApplicationStartingEvent事件回调
构造方法:public NamingGrpcClientProxy
doRegisterService
nacos服务端接收客户端注册
怎么创建rpcClient连接
心跳检查
clientProxy.registerService
调用nacos服务端注册
客户端发送心跳
NamingClientProxyDelegate#registerInstance
new GrpcSdkClient(clientNameInner)
connectToServer(serverInfo)
NotifyCenter.publishEvent(new ClientEvent.ClientChangedEvent(this))
获取客户端信息Client client
NotifyCenter.publishEvent(new ClientEvent.ClientDisconnectEvent(client))
register()
main
注册和发现概述
healthCheck()
startServer()
serviceregistry#register
事件回调onApplicationEvent
addPublisherIndexes
构造方法:public NamingGrpcClientProxy
RequestHandler#handle
clientManager.getClient(clientId)
client.setLastUpdatedTime()
handleClientDisconnect()
服务端健康检查
NamingGrpcClientProxy#registerService
NamingGrpcClientProxy#registerInstance
发布ServiceChangedEvent事件,用于推送消息给对应的订阅者
客户端信息Instance
1 服务注册2 服务心跳
GrpcConnection#request
clientConnectionEventListener.clientDisConnected(connection)
客户端:通过grpc发送InstanceRequest注册
grpcFutureServiceStub.request(grpcRequest)
0 条评论
回复 删除
下一页