首页 > 其他分享 >nacos 服务注册原理

nacos 服务注册原理

时间:2024-07-14 11:51:45浏览次数:5  
标签:spring nacos alibaba 注册 原理 com cloud discovery

springboot 的各种 starter 会根据 SPI 机制,读取 META-INFO/spring.factories 文件,自动注册一些 bean,spring-cloud-starter-alibaba-nacos-discovery 的 spring.factories 如下:

org.springframework.cloud.bootstrap.BootstrapConfiguration=\
  com.alibaba.cloud.nacos.discovery.configclient.NacosDiscoveryClientConfigServiceBootstrapConfiguration
org.springframework.boot.SpringApplicationRunListener=\
  com.alibaba.cloud.nacos.logging.NacosLoggingAppRunListener

发现并没有自动配置的自动装配的类?wtf?

从 spring boot2.7开始,慢慢不支持 META-INF/spring.factories 文件了,需要导入的自动配置类可以放在
/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,我这是 springcloud2023 版本,对应是 spring3.x 所以要看 META-INF/spring 下的文件

com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration
com.alibaba.cloud.nacos.endpoint.NacosDiscoveryEndpointAutoConfiguration
com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration
com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration
com.alibaba.cloud.nacos.discovery.NacosDiscoveryHeartBeatConfiguration
com.alibaba.cloud.nacos.discovery.reactive.NacosReactiveDiscoveryClientConfiguration
com.alibaba.cloud.nacos.discovery.configclient.NacosConfigServerAutoConfiguration
com.alibaba.cloud.nacos.loadbalancer.LoadBalancerNacosAutoConfiguration
com.alibaba.cloud.nacos.NacosServiceAutoConfiguration
com.alibaba.cloud.nacos.util.UtilIPv6AutoConfiguration

NacosServiceRegistryAutoConfiguration 主要看这个,这个类上面有一些注解,装配了 3 个 bean,这是 spring 的知识,可以翻翻前面的文章,这里就不赘述了,只要看 NacosAutoServiceRegistration 这个 bean(名字中带有 auto,意义也是一样的,完成自动注册)

@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties
@ConditionalOnNacosDiscoveryEnabled
@ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled",
		matchIfMissing = true)
@AutoConfigureAfter({ AutoServiceRegistrationConfiguration.class,
		AutoServiceRegistrationAutoConfiguration.class,
		NacosDiscoveryAutoConfiguration.class })
public class NacosServiceRegistryAutoConfiguration {

    // 注册服务
	@Bean
	public NacosServiceRegistry nacosServiceRegistry(
			NacosServiceManager nacosServiceManager,
			NacosDiscoveryProperties nacosDiscoveryProperties) {
		return new NacosServiceRegistry(nacosServiceManager, nacosDiscoveryProperties);
	}

	@Bean
	@ConditionalOnBean(AutoServiceRegistrationProperties.class)
	public NacosRegistration nacosRegistration(
			ObjectProvider<List<NacosRegistrationCustomizer>> registrationCustomizers,
			NacosDiscoveryProperties nacosDiscoveryProperties,
			ApplicationContext context) {
		return new NacosRegistration(registrationCustomizers.getIfAvailable(),
				nacosDiscoveryProperties, context);
	}

    // 触发注册
	@Bean
	@ConditionalOnBean(AutoServiceRegistrationProperties.class)
	public NacosAutoServiceRegistration nacosAutoServiceRegistration(
			NacosServiceRegistry registry,
			AutoServiceRegistrationProperties autoServiceRegistrationProperties,
			NacosRegistration registration) {
		return new NacosAutoServiceRegistration(registry,
				autoServiceRegistrationProperties, registration);
	}

}

这里只能知道注册了 3 个 bean,bean 的功能是啥现在也不知道,点进去看一下会发现:NacosAutoServiceRegistration 实现了一个接口 ApplicationListener<WebServerInitializedEvent>。事件监听也回去看看之前的文章,作用是 spring 容器启动会回调 AbstractAutoServiceRegistration#onApplicationEvent() 这个方法,这个方法源码调用链如下

看下注册到 nacos 的服务信息

标签:spring,nacos,alibaba,注册,原理,com,cloud,discovery
From: https://www.cnblogs.com/cryus/p/18301303

相关文章

  • 什么是Nacos???Nacos是干啥的???如何使用Nacos???
    目录1.引言:2.服务调用3.注册中心原理3.1.服务注册者(ServiceRegistrar)3.2.服务消费者(ServiceConsumer)3.3注册中心(ServiceRegistry)4.Nacos注册中心5.服务注册5.1.添加依赖5.2.配置Nacos5.3.启动服务实例6.服务发现6.1.引入依赖6.2配置Nacos地址6.3.发现并......
  • 简单的ATM 注册,登录,存钱,取钱,管理员查看 功能的实现,register(注册方法),login(登录方法),lo
    1.main()方法publicclasstest{publicstaticvoidmain(String[]args){ArrayList<people>people=newArrayList<>();Scannerscanner=newScanner(System.in);while(true){System.out.println("......
  • 大白话【卷积神经网络】工作原理
    卷积神经网络(ConvolutionalNeuralNetwork,简称CNN)是一种专门设计用于处理具有网格结构的数据(如图像)的神经网络。想象一下,你正在玩一个游戏,游戏的目标是识别图片上的内容。但是,你不能直接看到整个图片,而只能通过一个小窗口(称为“滤波器”或“卷积核”)来观察图片的一部分。每次......
  • 万字总结XGBoost原理、核心参数以及调优思路(下篇)
    万字总结XGBoost原理、核心参数以及调优思路(下篇)在数据科学领域,XGBoost以其卓越的性能和灵活性,成为了众多机器学习算法中的佼佼者。作为一种梯度提升框架,XGBoost通过构建决策树的集合来最小化一个可微分的损失函数,广泛应用于分类、回归等任务。本文将万字总结XGBoost的深层......
  • Nacos配置中心简单使用(直接可以上手)
    本文主要学习和使用Nacos的配置中心1.Nacos简介Nacos是一个开源的服务发现和配置管理平台,主要用于微服务架构中。Nacos的名字源自于“NamingandConfigurationService”的缩写,它提供了两大核心功能:服务发现和服务配置。特性:服务发现:是微服务架构中的一个关键概......
  • Nacos
    Nacos是一个开源的分布式服务发现和配置管理平台。它提供了服务注册、发现、配置,管理,命名空间和分组、高可用和负载均衡、安全认证等功能。帮助开发者构建微服务架构。官网:https://nacos.io/zh-cn/docs/what-is-nacos.html一.Nacos的基本概念1.服务注册与发现Nacos可以......
  • 【Android面试八股文】谈谈OkHttp框架的原理(深度剖析源码)
    文章目录一、OkHttp介绍二、OkHttp使用流程三、OkHttp的分发器Dispatcher3.1Dispatcher3.2同步请求3.3异步请求四、OKHttp的请求流程五、分发器线程池六、拦截器责任链6.1责任链模式6.1.1故事背景6.1.2责任链模式实现6.2OkHttp的拦截器流程......
  • naocs 作为服务注册与发现和配置中心
    下载和安装国内的软件,去官网下就行了,下载好后到其bin目录执行命令startup.cmd-mstandalone服务就会启动浏览器访问,能访问到nacos界面注册服务工程导入依赖<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-......
  • 反射DLL注入原理解析
    反射DLL注入又称RDI,与常规DLL注入不同的是,它不需要LoadLibrary这个函数来加载dll,而是通过DLL内部的一个函数来自己把自己加载起来,这么说可能会有一点抽象,总之这个函数会负责解析DLL文件的头信息、导入函数的地址、处理重定位等初始化操作,先不用理解这个函数是怎么实现的......
  • Redis存储原理与数据模型
    Redis存储结构存储转换redis-value编码stringint:字符串长度小于等于20切能转成整数raw:字符串长度大于44embstr:字符串长度小于等于44listquicklist(双向链表)ziplist(压缩链表)hashdict(字典):节点数量大于512或者字符串长度大于64ziplist(压缩链表):节点数......