1.下载nacos
链接:https://pan.baidu.com/s/1t4pNVQ2X5etwpIoN4H7VGw
提取码:5alh
百度网盘的版本是1.1.4
还有一个是1.3.2
下载完毕后直接解压文件即可!
2. 启动nacos
进入到nacos的bin目录当中,cmd打开命令行,输入:
startup.cmd -m standalone
当你看到这个页面的时候表示nacos已经启动了,接下来我们需要访问下。http://localhost:8848/nacos/#/login
看到这个页面表示我们已经进入nacos,默认的账号密码都是nacos
3. 创建springboot项目,然后添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
<!--spring cloud Hoxton.SR1-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud alibaba 2.1.0.RELEASE-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
4. 配置application文件
spring:
application:
name: nacos-payment-provider #这个相当于是你服务端的名称,可以在nacos中看到
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*' #* 可以用来表示所有的端点,暴露所有的端点让
* 在YAML中有特殊的含义,所以如果想使用include或者exclude包含所有的端点时要加上双引号
5. 启动类上添加EnableDiscoveryClient 的注解
@EnableDiscoveryClient 开启服务的注册与发现功能
#创建控制器
这时启动你的项目你会发现你的nacos上出现了你的nacos-payment-provider
至此我们的服务者模块已经创建完毕!
6. 创建消费者模块,引入关键依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
<dependency>
<groupId>com.cy.springcloud</groupId>
<artifactId>springCloud8081</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
#这个是你的服务者的模块,因为你需要用现在的消费者,调用你的服务者提供的接口
#启动类添加@EnableDiscoveryClient注解
#修改配置文件
server:
port: 83
spring:
application:
name: nacos-order-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
nacos-user-service: http://nacos-payment-provider
实现RestTemplate接口
#创建控制器
@Resource
private RestTemplate restTemplate;
@Value("${service-url.nacos-user-service}")
private String serverURL;
@GetMapping(value = "/consumer/payment/nacos/{id}")
public String paymentInfo(@PathVariable("id") Long id)
{
return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
}
//此时的return 调用restTemplate的接口去调用你提供的8080/payment/nacos接口,这个接口就是刚才写的服务者的接口
#此时我们访问消费者提供的接口!
使用了@LoadBalanced的作用
因为spring-cloud-starter-alibaba-nacos-discovery内含netflix-ribbon包
1.开启负载均衡的功能:开启负载均衡很简单,只需要在RestTemplate的bean上再添加一个@LoadBalanced注解即可。
2.由于加了@LoadBalanced注解,使用RestTemplateCustomizer对所有标注了@LoadBalanced的RestTemplate Bean添加了一个LoadBalancerInterceptor拦截器。利用RestTempllate的拦截器,spring可以对restTemplate bean进行定制,加入loadbalance拦截器进行ip:port的替换,也就是将请求的地址中的服务逻辑名转为具体的服务地址。
3、另外当spring容器中有多个相同类型的bean的时候,可以通过@LoadBalanced来进行区分,以便在注入的时候明确表明你要注入具体的哪个bean,消除歧义。
4、@LoadBalanced就是一个修饰符,和@Qualifier一样,标注了@Qualifier("invalid")的user bean都会自动注入到Bean、List和Map中去。
7. 配置nacos的namespace以及DataId
# Nacos中的dataid的组成格式及与SpringBoot配置文件中的匹配规则
之所以需要配置spring.application.name,是因为它是构成Nacos配置管理dataId 字段的一部分。
${prefix}-${spring-profile.active}.${file-extension}
prefix默认为spring.application.name的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。
spring.profile.active即为当前环境对应的 profile,详情可以参考 Spring Boot文档。注意:当spring.profile.active为空时,对应的连接符 - 也将不存在,datald 的拼接格式变成${prefix}.${file-extension}
file-exetension为配置内容的数据格式,可以通过配置项spring .cloud.nacos.config.file-extension来配置。目前只支持properties和yaml类型。
通过Spring Cloud 原生注解@RefreshScope实现配置自动更新。
# 最后公式为:
${spring.application.name)}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
修改配置文件
添加bootstrap,yml文件
# nacos配置
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
group: DEV_GROUP
namespace: 4460a2c1-eddf-4c49-98e8-2049159ea3a2
修改配置文件application.yml
spring:
profiles:
active: dev # 表示开发环境
#active: test # 表示测试环境
#active: info
ps:自己懒得写了,直接拿的阳哥的图!
这个对应的就是你bootstrap里边的group,bootstrap里边你的file-extension是什么,你在nacos中 添加配置列表时就选择什么类型
你的bootstrap文件中的namespace就是你在命名空间中创建好的命名空间ID,这两个都可以作为你nacos查询配置的唯一标识。
测试
启动前需要在nacos客户端-配置管理-配置管理栏目下有对应的yaml配置文件
运行主启动类
调用接口查看配置信息 - http://localhost:3377/config/info
自带动态刷新修改下Nacos中的yaml配置文件,再次调用查看配置的接口,就会发现配置已经刷新。