Spring Cloud Alibaba Naocs服务注册发现 Service 源码分析(简单清晰)

本文详细分析了Nacos服务注册的流程,从Client的心跳检测任务到Service的实例注册。首先,客户端通过Http调用Service接口完成实例注册。在Service端,注册过程涉及Service实例的创建、缓存、定时任务的初始化以及实例的动态监听。核心逻辑包括Service的初始化、心跳检测任务和实例超时删除。此外,文章还介绍了ServiceMap、Service、Cluster和Instance之间的关系,以及更新逻辑。
摘要由CSDN通过智能技术生成

Nacos分Client和Service

Client:

核心类NacosServiceRegister启动心跳检测任务5秒、封装相关信息通过Http调用Service接口完成实例注册,客户端分析入口:https://mp.csdn.net/mp_blog/creation/editor/122210701

Service:

注册服务:/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080

先总结整体逻辑,在InstanceController#register接口提供了注册实例方法

1.根据参数创建Service实例,并把该实例放到缓存中ServiceMap

2.调用该服务Service.init()方法,添加定时任务对客户端对心跳检测

3.添加该服务Service到监听列表中,动态监听来自客户端的数据变化

4.添加该服务的IP到实例缓存中,addInstance

1.注册服务入口

/**
     * Register new instance.
     *
     * @param request http request
     *      * @return 'ok' if success
     * @throws Exception any error during register
     */
    @CanDistro
    @PostMapping
    @Secured(parser = NamingResourceParser.class, action = ActionTypes.WRITE)
    public String register(HttpServletRequest request) throws Exception {
        
        ..................................
        // 这里调用InstanceOperatorServiceImpl
        
        getInstanceOperator().registerInstance(namespaceId, serviceName, instance);
        return "ok";
    }

2.入口方法 com.alibaba.nacos.naming.core.ServiceManager#registerInstance

/**
     * Register an instance to a service in AP mode.
     *
     * <p>This method creates service or cluster silently if they don't exist.
     *
     * @param namespaceId id of namespace
     * @param serviceName service name
     * @param instance    instance to register
     * @throws Exception any error occurred in the process
     */
    public void registerInstance(String namespaceId, String serviceName, Instance instance) throws NacosException {
        // 创建一个服务Service,同时完成主要逻辑
        // 按照nameSpaceId 和serviceName来完成第一次且只有一次的创建
        createEmptyService(namespaceId, serviceName, instance.isEphem
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值