这篇文章主要介绍了SpringCloud服务注册中的Nacos怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springCloud服务注册中的nacos怎么实现文章都会有所收获,下面我们一起来看看吧。如
这篇文章主要介绍了SpringCloud服务注册中的Nacos怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springCloud服务注册中的nacos怎么实现文章都会有所收获,下面我们一起来看看吧。
如下图,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
配置类就定义了上面SprinGCloud的AutoServiceRegistration
接口的实现类:
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 {@Beanpublic 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。
另外上面最后一步的NamingClientProxy
接口的实现如下,利用到了委托模式(delegate)也叫代理模式?:
关于“SpringCloud服务注册中的nacos怎么实现”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SpringCloud服务注册中的nacos怎么实现”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。
--结束END--
本文标题: SpringCloud服务注册中的nacos怎么实现
本文链接: https://www.lsjlt.com/news/324124.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0