42、SpringCloud Alibaba Nacos 注册中心和配置中心
1、创建两个服务提供者cloudalibaba-provider-payment9001 和 cloudalibaba-provider-payment9002 服务消费者cloudalibaba-consumer-order83 实现基于Nacos为注册中心的负载均衡调用
2、创建 cloudalibaba-provider-payment9001 服务提供者
编写pom.xml添加依赖
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.atguigu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
编写application.yml 配置文件
server: port: 9001 spring: application: name: alibaba-provider-payment cloud: nacos: discovery: server-addr: 8.129.215.115:8848 management: endpoints: web: exposure: include: "*"
编写主启动类
@SpringBootApplication @EnableDiscoveryClient public class NacosPaymentMain9001 { public static void main(String[] args) { SpringApplication.run(NacosPaymentMain9001.class, args); } }
编写controller业务类
@RestController public class PaymentController { @Value("${server.port}") private String serverPort; @GetMapping(value = "/payment/nacos/{id}") public String paymentNacos(@PathVariable("id")Integer id) { return "webcome to Nacos ServerPort: " + serverPort +"\t" + "id: "+ id; } }
创建 cloudalibaba-provider-payment9001 服务提供者 和上面一样,只修改端口号就省略
3、创建cloudalibaba-consumer-order83 服务消费者
编写pom.xml添加依赖
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.atguigu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
编写application.yml配置文件
server: port: 83 spring: application: name: alibaba-consumer-order cloud: nacos: discovery: server-addr: 8.129.215.115:8848 management: endpoints: web: exposure: include: "*" provider-service: payment-url: http://alibaba-provider-payment
编写主启动类
@SpringBootApplication @EnableDiscoveryClient public class NacosOrderApplication83 { public static void main(String[] args) { SpringApplication.run(NacosOrderApplication83.class,args); } }
编写RestTempalte 配置类
@Configuration public class RestConfig { @Bean @LoadBalanced public RestTemplate restTemplate () { return new RestTemplate(); } }
编写controller 业务类,消费者服务调用生产者服务
@RestController @Slf4j public class NacosOrderController { @Resource private RestTemplate restTemplate; @Value("${provider-service.payment-url}") private String paymentServiceUrl; @GetMapping(value = "/consumer/payment/nacos/{id}") public String paymentInfo(@PathVariable("id") Integer id) { String result = restTemplate.getForObject(paymentServiceUrl + "/payment/nacos/" + id, String.class); return result; } }
测试地址:http://localhost:83/consumer/payment/nacos/666
4、使用Nacos的配置中心 创建cloudalibaba-config-client3377 主要演示如何使用配置中心,和自动动态刷新功能
编写pom.xml添加依赖
<dependencies>
<!-- Nacos 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Nacos 注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.atguigu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
编写bootstrap.yml 配置文件 公共的配置信息 并在Nacos 控制窗口配置管理新建一个文件alibaba-config-client-dev.yaml 文件
server: port: 3377 spring: application: name: alibaba-config-client cloud: nacos: discovery: server-addr: 8.129.215.115:8848 #注册中心地址 config: server-addr: 8.129.215.115:8848 #配置中心地址 file-extension: yaml #后缀名 management: endpoints: web: exposure: include: "*"
alibaba-config-client-dev.yaml 内容
config:
info: from nacos config center alibaba-config-client-dev.yaml,version = 2
编写application.yml 自己独有的配置信息
spring:
profiles:
active: dev #使用哪个环境 dev sit prod
编写主启动类
@SpringBootApplication @EnableDiscoveryClient public class NacosConfigClientMain3377 { public static void main(String[] args) { SpringApplication.run(NacosConfigClientMain3377.class, args); } }
编写controller 业务类
@RestController @RefreshScope //自动刷新 public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping(value = "/config/info") public String getConfigInfo () { return configInfo; } }
测试地址:http://localhost:3377/config/info 然后 修改alibaba-config-client-dev.yaml 文件的内容 验证是否动态刷新
5、Nacos 配置中心的分类配置
根据data-id 读取不同的配置文件:默认命名空间+ 默认分组 + data-id 读取配置

springcloud alibaba 版本是2.2.1 以下版本的配置

5、最重要的:Nacos 集群配置 和 持久化配置
搭建步骤参考:https://www.cnblogs.com/dw3306/p/12961353.html 我就不记录了
需要在Linux 上有 Mysql nginx 3个Nacos的节点
已经下载好了nacos了 进入自己的网盘,下载的版本为:1.2.0

浙公网安备 33010602011771号