Nacos Client2.2.9源码启动问题
迪丽瓦拉
2025-06-01 19:42:16
0

Nacos Client2.2.9源码启动问题

1、开启服务端

源码启动,推荐使用稳定版本作为 服务端。

我是用了最新的2.2.1的nacos版本处理了一些问题,现在启动成功

image-20230321210455736

nacos首页

http://192.168.3.111:8848/nacos/index.html

2、配置客户端client

直接一个springboot项目。

写一个controller

image-20230321210605529

2.1 把当前springboot升级为springCloud项目

maven的pom配置修改

springboot 版本  2.3.12.RELEASE
Spring Cloud Version  Hoxton.SR12
Spring Cloud Alibaba Version 2.2.9.RELEASE

如我的配置

org.springframework.bootspring-boot-starter-parent2.3.12.RELEASE com.shinenacosClientDemo0.0.1-SNAPSHOTnacosClientDemonacosClientDemo1.8org.springframework.bootspring-boot-starter-webcom.alibaba.cloudspring-cloud-starter-alibaba-nacos-discoveryjsr305com.google.code.findbugsorg.projectlomboklomboktrueorg.springframework.bootspring-boot-starter-testtestorg.junit.vintagejunit-vintage-engineorg.springframework.cloudspring-cloud-dependenciesHoxton.SR12pomimportcom.alibaba.cloudspring-cloud-alibaba-dependencies2.2.9.RELEASEpomimport

2.1 配置yaml

server:port: 10001
spring:application:name: nacosClientDemo//注册服务地址cloud:nacos:server-addr: 192.168.3.111:8848

image-20230321213249534

注册成功

再通过一个client启动一个微服务。

image-20230321215452226

image-20230321215439455

3、看看client注册做了什么

3.1、client 注册时,如何打断点

3.1.1、找这个服务发现的包。
3.1.2 下面的spring.factories
3.1.3 下面的NacosDiscoveryAutoConfiguration

同命名下面的 自动配置

com.alibaba.cloud.nacos.discoveryNacosDiscoveryAutoConfiguration

image-20230321220909894

3.1.4 点进去发现配置文件
public class NacosDiscoveryAutoConfiguration {public NacosDiscoveryAutoConfiguration() {}@Bean@ConditionalOnMissingBeanpublic NacosDiscoveryProperties nacosProperties() {return new NacosDiscoveryProperties();}@Bean@ConditionalOnMissingBeanpublic NacosServiceDiscovery nacosServiceDiscovery(NacosDiscoveryProperties discoveryProperties, NacosServiceManager nacosServiceManager) {return new NacosServiceDiscovery(discoveryProperties, nacosServiceManager);}
}
3.1.5关键重点是 nacosServiceDiscovery

我的是版本有点问题。

应该是NacosServiceRegistryAutoConfiguration,

3.1.6 NacosServiceRegistryAutoConfiguration,

NacosAutoServiceRegistration

image-20230321222331645

最后没有到http,太搞笑了。

走的是grpc的代理方法。

那应用是跟踪哪个类?

这里,我提供两种方法。

1、代码分析法,如果有多个实现类,肯定在前面的某个步骤会去创建该类,因为这个类不会无缘无故的就产生的。计算机的程序代码是很规范的,你要他怎么做,他才怎么做,不会无故产生,俗话说事出反常必有妖。
2、断点调试法,这个方法简单粗暴,只要你debug一下,跟着debug进去,到哪个类处理,那就是哪个类处理。
我们还是倒回来看下,通过代码分析具体一下。还记得上面说的创建NamingService吗,这里我们进去看下这个NamingService的具体的实现方法NacosNamingService的构造方法。

有一个初始化方法。获取代理模式

   private void init(Properties properties) throws NacosException {ValidatorUtils.checkInitParam(properties);this.namespace = InitUtils.initNamespaceForNaming(properties);InitUtils.initSerialization();InitUtils.initWebRootContext(properties);initLogName(properties);this.changeNotifier = new InstancesChangeNotifier();NotifyCenter.registerToPublisher(InstancesChangeEvent.class, 16384);NotifyCenter.registerSubscriber(changeNotifier);this.serviceInfoHolder = new ServiceInfoHolder(namespace, properties);this.clientProxy = new NamingClientProxyDelegate(this.namespace, serviceInfoHolder, properties, changeNotifier);}

这个代理执行器。

代理模式的作用就是这个意思。

要执行的具体方法都在这个代理执行器里面。

    private NamingClientProxy getExecuteClientProxy(Instance instance) {return instance.isEphemeral() ? grpcClientProxy : httpClientProxy;}

可以看到如果是临时实例,就是用 grpc

永久实例,就用httpClientProxy。

image-20230321230555417

3.1.6 重点是那个代理类

3.1.7 重点是 instance.isEphemeral()是否是临时实例

决定是走 http还是走grpc

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...