nacos 节点挂了,如何调用

nacos 节点挂了,如何调用,第1张

nacos ->依靠figen+ribbion 拦截器 服务发现调用NacosNamesServisegetAllInstances在第一次调用时候会缓存一份到本地

同时会开启延时1s定时任务更新

comalibabacloudnacosdiscoveryNacosDiscoveryClientAutoConfiguration#nacosDiscoveryClient

注册了NacosDiscoveryClient ,这是一个实现了DiscoveryClient服务发现的类

comalibabacloudnacosdiscoveryNacosDiscoveryClient#getInstances

获取所有服务,调用

comalibabanacosclientnamingNacosNamingService#selectInstances(javalangString, javalangString, boolean)

新版本NacosWatch不再监控,拓展点······

拓展知识点:

public class NacosWatch implements ApplicationEventPublisherAware, SmartLifecycle {

事件监听类:

public abstract class AbstractAutoServiceRegistration<R extends Registration>

      implements AutoServiceRegistration, ApplicationContextAware,

      ApplicationListener<WebServerInitializedEvent> {

ApplicationEventPublisherAware 事件发布

SmartLifecycle 是一个接口。当Spring容器加载所有bean并完成初始化之后,会接着回调实现该接口的类中对应的方法(start()方法)。

comalibabacloudnacosdiscoveryNacosWatch#nacosServicesWatch

前置文章:

一、Spring Cloud-Erueka服务注册&发现

二、Spring Cloud-Nacos服务注册&发现

tips:Ctrl + F定位到所需内容快速阅读吧。

①常规项目:项目启动→读取applicationyml配置文件→创建Spring IOC容器→加载Bean;

②Nacos配置中心项目:项目启动→读取Nacos配置中心文件→读取applicationyml配置文件→创建Spring IOC容器→加载Bean;

注意 :此处的问题是Nacos server-addr相关配置在applicationyml中,所以引入bootstrapyml配置,来提前加载Nacos配置中心所需配置。

③Nacos配置中心项目:项目启动→读取bootstrapyml配置文件→读取Nacos配置中心文件→读取applicationyml配置文件→创建Spring IOC容器→加载Bean;

注意 :SpringCloud2020及以后的版本默认不启用 bootstrap 配置,我们需要在pom里面显式地引入,以开启bootstrapyml配置文件读取的支持。

user服务读取配置中心配置三要素:

①spring-application-name:应用名称-userservice;

②spring-profiles-active:配置文件环境-dev(代表开发环境develop);

③file-extension:文件扩展名-yaml;

配置中心处,配置文件完整名称:userservice-devyaml

①配置管理→配置列表→➕

②编写userservice-devyaml配置文件

①@Value注解注入配置属性

②方法内读取配置

在对应的@Value注解使用的类上使用@RefreshScope注解

编写Config类:prefix = "pattern" + [field] dateformat,与配置文件patterndateformat 对应即可。

配置优先级 :[spring-application-name][spring-profiles-active][file-extension]>[spring-application-name][file-extension]>本地配置;

即:服务名-环境类型yaml>服务名yaml>本地配置。

如果配置不同,则合并,相同则优先级高的覆盖优先级低的。

另外:extension-configs的加载后于shared-configs。

以上即为Nacos配置管理的基础内容,感谢阅读。

参考资料

《Spring Microservices in Action》

《Spring Cloud Alibaba 微服务原理与实战》

《B站 尚硅谷 SpringCloud 框架开发教程 周阳》

为方便理解与表达,这里把 Nacos 控制台和 Nacos 注册中心称为 Nacos 服务器(就是 web 界面那个),我们编写的业务服务称为 Nacso 客户端;

Nacos 客户端将自己注册进 Nacos 服务器。《1 服务如何注册进 Nacos 注册中心》主要从 Nacos 客户端角度解释如何发送信息给 Nacos 服务器;《2 Nacos 服务器注册服务》主要从 Nacos 服务器角度解释注册原理;

《3 客户端查询所有服务实例》将从服务消费者和提供者的角度,解释服务消费者如何获取提供者的所有实例。服务消费者和提供者都是 Nacos 的客户端;

《4 客户端监听 Nacos 服务器以动态获取服务实例》从消费者客户端角度出发监听 Nacos 服务器,以动态获知提供者的变化;

首先启动Nacos,按照上篇文章的步骤,启动Nacos服务和项目,访问Nacos的web页面。确保项目中的服务都注册到注册中心当中了。在applicationyml同级目录下添加bootstrapyml,在Spring boot项目中bootstrapyml会比applicationyml优先初始化,所以我们需要在bootstrapyml中引入Nacos官方指定的配置文件即可(上篇文章中已经把Nacos作为配置中心的配置写入了applicationyml,现在只需要把它从applicaitonyml中剪切出来即可, 其中的spring:application:name会作为Nacos中新增配置时的Data ID,需要留意 ),再新增属性gorup进行分组测试,如下图

接着打开Nacos的服务的web页面,打开配置管理->配置列表,点击右侧新增按钮,进行新增。

Data ID: bootstrapyml配置文件中spring:application:name对应的名称

Group:指定分组(便于不同环境下的项目配置管理,因为笔者这里属于测试,所以填写的是和上文中的配置文件中group对应的test一致);

描述:针对于该配置的描述;

配置格式:配置文件的格式,要和Data ID中的后缀格式一致(这里笔者用的是yml,那么下面就选择yaml,注意该位置也可以选择properties,但是必须和上面bootstrapyml文件中的file-extension的值相匹配);

配置内容:具体的配置内容(这里笔者将项目中的applicationyml中的配置全部拷贝至其中);

测试启动consumer服务,在applicationyml中为空的时候,项目启动端口还是如Nacos配置中的9011,说明项目依赖Nacos的配置中心成功,其他服务如法炮制即可:

新增一个测试Controller,然后加上@RefreshScope注解,表明该Controller中的配置数据为自动刷新

编辑Nacos中的配置文件consumer新增相关参数type: test,访问Controller,返回test。效果如下图:

将Nacos中consumeryml文件的type: test修改为type: prod,在不重启项目的情况下重新访问对应的controller,效果如下图:

因为Dubbo是属于各个服务之间都要公用的依赖,所以将其引入cloud-common当中,详细的版本可以去 mvnrepository 搜索合适自己项目的

引入依赖后需要编写消费者服务中的配置文件,将Dubbo服务注册至Nacos,新增如下内容,其中subscribed-services指的是生产者服务,prot:-1指的是端口随机,registry:address:指的是Dubbo对应的注册中心那这里就应该设置为Nacos

接下来新增接口服务,项目类型为Maven项目,在项目中新增一个接口。并在cloud-provider(生产者)和cloud-consumer(消费者)pomxml文件中都引入该模块

在生产者实际服务中实现该接口对应的方法

在服务消费者的Controller中引入该Service,并在该Service上加入@Reference注解,注意在引入jar包的时候选择带有Dubbo的,不要使用Jdk原生的

编写消费者服务中测试Dubbo调用的接口,进行测试,测试结果如下图:

以上就是关于nacos 节点挂了,如何调用全部的内容,包括:nacos 节点挂了,如何调用、Spring Cloud-Nacos配置管理、微服务架构 | *3.5 Nacos 服务注册与发现的源码分析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9584362.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存