当前位置: 首页 > news >正文

工贸一体化企业建设电子商务网站的误区谷歌 翻墙入口

工贸一体化企业建设电子商务网站的误区,谷歌 翻墙入口,个人买卖网站如何做,网页设计实验报告书Nacos客户端实例注册源码分析 实例客户端注册入口 流程图&#xff1a; 实际上我们在真实的生产环境中&#xff0c;我们要让某一个服务注册到Nacos中&#xff0c;我们首先要引入一个依赖&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId>&l…

Nacos客户端实例注册源码分析

实例客户端注册入口

流程图:
在这里插入图片描述
实际上我们在真实的生产环境中,我们要让某一个服务注册到Nacos中,我们首先要引入一个依赖:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

在引入这个依赖以后,我们要找到SpringBoot自动装配文件META-INF/spring.factories文件
在这里插入图片描述
然后再通过SpingBoot的自动装配(首先找到)来加载EnableAutoConfiguration对应的类,然后这里我们就能看见很多Nacos相关的内容,那我们怎么能知道这个服务在注册的时候具体走的时候哪一个,其实一般这种文件我们都会找“Auto”关键子的文件来进行查看,然后我们现在要了解的是客户端的注册,所以我们要找“NacosServiceRegistryAutoConfiguration”。
在这里插入图片描述
然后在当前这个类中会有很多的Bean组件,这些都是Spring容器启动时候自动注入的,一般情况下可能我们会看一下每一个Bean组件初始化具体干了什么,但是实际上这里最核心的是“NacosAutoServiceRegistration”

/*** @author xiaojing* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>*/
@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

其实这个类就是注册的核心,所以我们来看一下它的继承关系:
在这里插入图片描述
通过这里我们可以清楚的知道:
NacosAutoServiceRegistration继承了AbstractAutoServiceRegistration而这个类型实现了ApplicationListener接口,所以我们由此得出一般实现ApplicationListener接口的类型都会实现一个方法"onApplicationEvent",这个方法会在项目启动的时候触发.

public void onApplicationEvent(WebServerInitializedEvent event) {bind(event);
}@Deprecated
public void bind(WebServerInitializedEvent event) {ApplicationContext context = event.getApplicationContext();if (context instanceof ConfigurableWebServerApplicationContext) {if ("management".equals(((ConfigurableWebServerApplicationContext) context).getServerNamespace())) {return;}}this.port.compareAndSet(0, event.getWebServer().getPort());this.start();
}

然后在start()方法中调用register()方法来注册服务

public void start() {if (!isEnabled()) {if (logger.isDebugEnabled()) {logger.debug("Discovery Lifecycle disabled. Not starting");}return;}// only initialize if nonSecurePort is greater than 0 and it isn't already running// because of containerPortInitializer belowif (!this.running.get()) {this.context.publishEvent(new InstancePreRegisteredEvent(this, getRegistration()));register();if (shouldRegisterManagement()) {registerManagement();}this.context.publishEvent(new InstanceRegisteredEvent<>(this, getConfiguration()));this.running.compareAndSet(false, true);}}

serviceRegistry.register

分析到这里,我们已经知道了真实服务注册的入口和具体调用那个方法来注册,那我们再来分析一下register这个方法

protected void register() {this.serviceRegistry.register(getRegistration());
}

但是这里要注意serviceRegistry实际上是一个接口,所以我们来看一下它的具体实现类NacosServiceRegistry:
在这里插入图片描述
找到这个实现类然后我们来查看register方法,到这里其实大家应该已经明白了,因为这里调用了我们上节课讲过的registerInstance注册实例方法

@Override
public void register(Registration registration) {if (StringUtils.isEmpty(registration.getServiceId())) {log.warn("No service to register for nacos client...");return;}NamingService namingService = namingService();String serviceId = registration.getServiceId();String group = nacosDiscoveryProperties.getGroup();//构建instance实例Instance instance = getNacosInstanceFromRegistration(registration);try {//向服务端注册此服务namingService.registerInstance(serviceId, group, instance);log.info("nacos registry, {} {} {}:{} register finished", group, serviceId,instance.getIp(), instance.getPort());}catch (Exception e) {log.error("nacos registry, {} register failed...{},", serviceId,registration.toString(), e);// rethrow a RuntimeException if the registration is failed.// issue : https://github.com/alibaba/spring-cloud-alibaba/issues/1132rethrowRuntimeException(e);}
}

调用接口

其实到这里大家应该已经明白Nacos客户端的服务注册过程了,但是其实再给大家补充一点,就是其实注册本身就是访问了Nacos提供的一个接口,我们可以在官网上看到
在这里插入图片描述
那我们可以通过deBug来看一下,在NacosServiceRegistry中的register方法中,在注册实例方法中打断点
在这里插入图片描述
然后在NamingService的实现类NacosNamingService中registerInstance方法中打断点
在这里插入图片描述
然后进入到这个registerService方法中进行查看,就会发现这里就会把实例信息放到散列表中然后调用reqApi方法来发送请求访问接口/nacos/v1/ns/instance
在这里插入图片描述
总结:

在这里插入图片描述

http://www.yidumall.com/news/50220.html

相关文章:

  • 温州网站建设大全百度快速排名用什
  • 昆明做网站建设找谁seo赚钱暴利
  • 平顶山网站关键词优化网络营销策划书怎么写
  • 商城网站怎么做推广方案成品短视频网站源码搭建
  • 珠海手机建站模板深圳seo网站推广方案
  • 统计网站建设程序软件开发工具
  • 网站开发实施方案进度模板建站哪个平台好
  • 什么网站百度收录快seo网站排名优化快速排
  • 邯郸网站建设公司排名怎么网上宣传自己的产品
  • 嵩明网站建设1000个关键词
  • 网页设计实训报告800字aso应用商店优化原因
  • 网站首页栏目怎么做朝阳区seo搜索引擎优化怎么样
  • 泰安网站建设网络营销的四个策略
  • 做网站还有市场吗北京网优化seo公司
  • 三只松鼠网站推广策略赣州seo
  • 做网站图片处理问题视频外链在线生成
  • 东莞市公租房申请网站-建设网百度账号免费注册
  • ubuntu系统做网站如何快速搭建一个网站
  • 甘肃做高端网站的公司南京seo推广优化
  • 重庆长寿网站建设上海专业的seo公司
  • 如何把自己电脑做网站服务器2023知名品牌营销案例100例
  • 网站推广视频的服务方案什么叫做seo
  • 建设团队网站关键词小说
  • 百度站长验证网站策划推广活动方案
  • 做电影网站哪个系统好百度账号管理
  • 红色页面网站百度seo推广价格
  • 网站建设项目经理招聘b站免费推广app大全
  • 网站建设所需服务器费用网站如何做关键词优化
  • 做酒店经理的一些网站百度引擎
  • web做网站怎么添加图片搜图片找原图