1、下载安装nacos
下载地址:https://github.com/alibaba/nacos/releases/tag/1.4.1
下载之后解压,到bin目录下运行 startup.cmd
命令
浏览器输入 localhost:8848/nacos进入Nacos的控制面板
一、服务注册中心【生产者】
1、导入pom坐标
在父pom中导入一下坐标
<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>
在子pom中导入坐标
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringBoot整合Web组件 -->
<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>
2、 编写application.yml配置文件
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*'
3、 编写主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderAlibabaMain9001 {
public static void main(String[] args) {
SpringApplication.run(ProviderAlibabaMain9001.class, args);
}
}
服务注册信息如下:
二、服务注册中心【消费者】
1、 在子pom文件中加入坐标
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringBoot整合Web组件 -->
<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>
2、 编写application.yml配置文件
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
3、 编写主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class OrderNacosMain83 {
public static void main(String[] args) {
SpringApplication.run(OrderNacosMain83.class, args);
}
}
4、 编写config配置类,定义使用RestTemplate调用,注意一定要加上@LoadBalanced注解实现负载均衡
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
5、 编写控制器类
@RestController
public class OrderNacosController {
@Autowired
private RestTemplate restTemplate;
@Value("${service-url.nacos-user-service}")
private String serverURL;
@GetMapping(value = "/consumer/nacos/{id}")
public String paymentInfo(@PathVariable("id") Long id)
{
return restTemplate.getForObject(serverURL+"/nacosAli/" + id, String.class);
}
}
实现效果如下:
再次刷新可以看到默认使用的是【论循RoundRobinRule】负载均衡
三、服务配置中心
1、 子pom中进入坐标
<!--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>
2、 编写application.yml、bootstrap.yml配置文件
在application.yml文件中主要定义的是对开发模式的配置,全局配置
spring:
profiles:
active: dev # 表示开发环境
#active: test # 表示测试环境
#active: info
在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: 8ee4bef9-cda8-4ffb-a00c-717b39250302
# Nacos中dataid的匹配规则【组成格式】
# ${
spring.application.name}-${
spring.profile.active}.${
spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yaml
# nacos-config-client-test.yaml ----> config.info
注意:一定要在Nacos的图形化界面中定义配置列表,其中定义配置信息
3、 主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigClient3377 {
public static void main(String[] args) {
SpringApplication.run(NacosConfigClient3377.class, args);
}
}
4、 控制器类,如果需要自动刷新配置需要加上注解@RefreshScope
当我们修改Nacos中的配置的时候,会自动更新配置到服务中