Nacos(服务注册与服务配置)

news/2025/2/12 13:49:57/

安装Nacos

官网下载Nacos安装包并解压,直接运行bin目录下的startup.cmd -m standalone(standalone:单机模式,非集群)。

访问地址:http://localhost:8848/nacos  账号密码默认为nacos

Nacos Discovery服务注册中心

新建生产者模块:
package com.wen.cloud.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
public class PayGateWayController
{@Value("${server.port}")private String serverPort;@GetMapping(value = "/pay/nacos/{id}")public String getPayInfo(@PathVariable("id") Integer id){return "nacos registry, serverPort: "+ serverPort+"\t id"+id;}
}

导入依赖:

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

yml文件配置:

server:port: 9001spring:application:name: nacos-payment-providercloud:nacos:discovery:server-addr: localhost:8848 #配置Nacos地址
新建消费者模块:

导入依赖:

 <!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--loadbalancer--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>

测试类:

package com.wen.cloud.controller;import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
public class OrderNacosController
{@Resourceprivate RestTemplate restTemplate;@Value("${service-url.nacos-user-service}")private String serverURL;@GetMapping("/consumer/pay/nacos/{id}")public String paymentInfo(@PathVariable("id") Integer id){String result = restTemplate.getForObject(serverURL + "/pay/nacos/" + id, String.class);return result+"\t"+"    我是OrderNacosController83调用者。。。。。。";}
}

配置restTemplate

package com.wen.cloud.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;@Configuration
public class RestTemplateConfig
{@Bean@LoadBalanced //赋予RestTemplate负载均衡的能力public RestTemplate restTemplate(){return new RestTemplate();}
}

yml文件配置:

server:port: 83spring:application:name: cloudalibaba-consumer-nacos-order83cloud:nacos:discovery:server-addr: localhost:8848 #配置Nacos地址
#消费者将要去访问的微服务名称(nacos微服务提供者叫什么你写什么)
service-url:nacos-user-service: http://nacos-payment-provider
测试:

nacos注册中心

负载均衡

Nacos config服务配置中心:

通过Nacos和spring-cloud-starter-alibaba-nacos-config实现中心化全局配置的动态变更。

导入依赖:

<!--bootstrap--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
修改配置文件application和bootStrap(bootStrap优先级大于application)

application:

server:port: 3377spring:profiles:active: dev # 表示开发环境#active: prod # 表示生产环境#active: test # 表示测试环

bootStrap


# nacos配置
spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服务注册中心地址config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yaml #指定yaml格式的配置# nacos端配置文件DataId的命名规则是:
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# 本案例的DataID是:nacos-config-client-dev.yaml
测试类:
package com.wen.cloud.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class NacosConfigClientController
{@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo() {return configInfo;}
}
nacos端配置文件匹配规则:

${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

由此可以的得出配置文件名:nacos-config-client-dev.yaml

测试:


http://www.ppmy.cn/news/1381396.html

相关文章

一文读懂回流(重排)重绘

回流与重绘 回流重绘是指在网页中进行布局、样式等操作时&#xff0c;浏览器需要重新计算元素的位置和大小&#xff08;回流&#xff09;以及重新绘制元素的样式&#xff08;重绘&#xff09;的过程。这个过程会消耗很多的计算资源&#xff0c;因此需要尽量减少回流和重绘的次…

【测试开发学习历程】重定向、管道与环境变量

前言&#xff1a;测试开发的学习已经开启第三周的学习了。 奋斗至此&#xff0c;内容已稍有难度。 发现每一点都有其深挖的地方&#xff0c;但读书在某些方面来讲要不求甚解&#xff0c;如果只在一点深挖&#xff0c;那可能进度很难提的上来。 继续加油&#xff01;&#xf…

ChatGPT国内能用吗?中国用户怎么才能使用ChatGPT?

与ChatGPT类似的国内网站&#xff0c;他们都能提供和ChatGPT相似的能力&#xff0c;而且可以在国内直接使用。 点击直达方式 百科GPT官网&#xff1a;baikegpt.cn ChatGPT是基于GPT-3.5架构的语言模型的一个实例&#xff0c;由OpenAI开发。以下是ChatGPT的发展历史&#xff1…

Java外观模式源码剖析及使用场景

外观模式 一、介绍二、家庭影院项目案例使用三、Java API或框架中应用分析三、Spring框架ApplicationContext源码 一、介绍 外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供了一个统一的高层接口,使得子系统更加容易使用。外观模式定义了一个高层接…

UE5数字孪生系列笔记(二)

智慧城市数字孪生系统 制作流云动画效果 首先添加一个图像在需要添加流云效果的位置 添加动画效果让其旋转 这个动画效果是程序开始就要进行的&#xff0c;所以要在EventConstruct中就可以启动这个动画效果 添加一个一样的图像在这里&#xff0c;效果是从此处进行放大消散 添…

TIOBE 3月编程排行榜出炉:遥遥领先,霸榜第一!

哈喽呀~又到了每个月的语言排行榜啦&#xff01; TIOBE 3月编程语言也已经公布&#xff0c;具体有啥新变化呢&#xff1f;快和我一起往下看~ Python遥遥领先&#xff0c;霸榜第一 先来看看本月排行榜top5的表现。毫无疑问&#xff0c;Python依然遥遥领先&#xff1a; Python 第…

Caffeine本地缓存快速上手教程,通俗易懂

1. 概述 使用缓存的优点是可以减少直接访问数据库的压力。Caffeine是目前单机版缓存性能最高的&#xff0c;提供了最优的缓存命中率。用法和java中的map集合比较类似&#xff0c;底层使用一个ConcurrencyHashMap来保存所有数据&#xff0c;可以理解为一个增强版的map集合&…

linux使用samba实现共享文件夹

在Linux上设置共享文件夹可以使用多种方法&#xff0c;这里我将介绍一种基于Samba的方法&#xff0c;因为Samba是一个在Linux和Windows系统之间实现文件共享的流行工具。 以下是在Linux上设置共享文件夹的一般步骤&#xff1a; 安装Samba&#xff1a; sudo apt update sudo …