iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringCloud 服务注册中的nacos实现过程
  • 156
分享到

SpringCloud 服务注册中的nacos实现过程

2024-04-02 19:04:59 156人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

如下图,org.springframework.cloud.spring-cloud-commons包下定义了一系列接口,其中就包括servicereGIStry的系列规范,并通过S

如下图,org.springframework.cloud.spring-cloud-commons包下定义了一系列接口,其中就包括servicereGIStry的系列规范,并通过SPI机制去调用接口实现。

在该包的META-INF/spring.factories文件中,可以找到EnableAutoConfiguration.class为key的value中有AutoServiceRegistrationAutoConfiguration.class这一项。

来看看这个AutoServiceRegistrationAutoConfiguration配置类:

对应的,在com.alibaba.cloud.Nacos包下(位于spring-cloud-starter-nacos-discovery jar包中)的META-INF/spring.fatories有个nacos服务注册配置类,如下图:

这个NacosServiceRegistryAutoConfiguration 配置类就定义了上面SpringCloudAutoServiceRegistration接口的实现类:


package com.alibaba.cloud.nacos.registry;

...


@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(
			NacosDiscoveryProperties nacosDiscoveryProperties) {
		return new NacosServiceRegistry(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);
	}

}

NacosAutoServiceRegistration中的register()方法开始注册服务,整个调用流程为:

继续追根溯源,这个registry()方法是在AbstractAutoServiceRegistration implements ApplicationListener<WEBServerInitializedEvent>类的onApplicationEvent()方法(onApplicationEvent->bind->start->registey) 。
调用的心跳默认5秒一次,具体可参考BeatReactor类中的buildBeatInfo()方法,其中有个beatInfo.setPeriod(instance.getInstanceHeartBeatInterval());这里获取到一个常量5s。
更加详细的流程可以参考:阅读Naocs源码

另外上面最后一步的NaminGClientProxy接口的实现如下,利用到了委托模式(delegate)也叫代理模式?:

到此这篇关于SpringCloud 服务注册中的nacos实现过程的文章就介绍到这了,更多相关SpringCloud 服务注册nacos内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringCloud 服务注册中的nacos实现过程

本文链接: https://www.lsjlt.com/news/141481.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作