您的位置 首页 java

nacos源码解读

Nacos源码本地单机debug

1. 找到distribution项目的conf目录下nacos-mysql.sql脚本,初始化数据库

2. 找到console项目application.properties中的数据库配置(db.*),修改为本地数据库连接

3. 找到console项目Nacos.java,修改运行配置, VM 参数增加:-Dnacos.standalone=true,设置为单机模式

Run或Debug Nacos.java,地址为,就可以本地调试了。

Nacos文档,用户指南中有 OPEN -API指南,可以查询Nacos的REST API接口。

OPEN-API 实例注册流程:

nacos-naming项目

InstanceController.register( Request )

Instance Operator ClientImpl.registerInstance(namespaceId, serviceName, instance)

EphemeralClientOperationServiceImpl.registerInstance(service, instance, clientId)

AbstractClient.addServiceInstance(service, instancePublishInfo)

publishEvent(ClientEvent.ClientChangedEvent)

publishEvent(ClientOperationEvent.ClientRegisterServiceEvent)

publishEvent( meta dataEvent.InstanceMetadataEvent)

OPEN-API 实例列表流程:

nacos-naming项目

InstanceController.list(request)

InstanceOperatorClientImpl.listInstance(namespaceId, serviceName, subscriber, cluster , healthOnly)

ServiceStorage.getData(service)

ServiceStorage.serviceDataIndexes.get(service)

client 实例注册流程:

nacos-client项目

NacosNamingService.registerInstance(serviceName, ip, port, clusterName)

NamingG Rpc ClientProxy.registerService(serviceName, groupName, instance)

RpcClient.request(request, timeoutMills)

GrpcConnection.request(request, timeouts)

nacos-core项目

GrpcRequestAcceptor.request(grpcRequest, responseObserver)

RequestHandler.handleRequest(request, meta)

nacos-naming项目

InstanceRequestHandler.handle(request, meta)

以下流程与OPEN-API的实例注册流程相同

EphemeralClientOperationServiceImpl.registerInstance(service, instance, clientId)

AbstractClient.addServiceInstance(service, instancePublishInfo)

publishEvent(ClientEvent.ClientChangedEvent)

publishEvent(ClientOperationEvent.ClientRegisterServiceEvent) 将实例信息保存在map中

publishEvent(ServiceEvent.ServiceChangedEvent)

publishEvent(MetadataEvent.InstanceMetadataEvent)

文章来源:智云一二三科技

文章标题:nacos源码解读

文章地址:https://www.zhihuclub.com/199561.shtml

关于作者: 智云科技

热门文章

网站地图