利用nacos做注册中心
#1、下载nacos server端
https://github.com/alibaba/nacos/releases
2、启动服务
sh startup.sh -m standalone
3、配置父类项目
3.1配置pom
父类项目pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo-nacos</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo-nacos</name>
<packaging>pom</packaging>
<description>demo-nacos</description>
<!-- 指定父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<!-- 选择SpringCloud和Alibaba版本的时候,一定要参考官网的建议,否则会有问题 -->
<spring-cloud.version>Hoxton.SR9</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
4、注册服务提供者【可拓展多个,过程类似】
4.1 pom.xml
<parent>
<groupId>com.example</groupId>
<artifactId>demo-nacos</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
4.2 配置文件
# 服务名
spring.application.name=nacos-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
server.port=7001
4.3启动类
添加@EnableDiscoveryClient注解
@SpringBootApplication
@EnableDiscoveryClient
public class NacosProvider7001Application {
public static void main(String[] args) {
SpringApplication.run(NacosProvider7001Application.class, args);
}
}
4.4 对外接口
@RestController
public class ProviderController {
@GetMapping("/login")
public String login(String name) {
return "欢迎您 " + name + " 这里是7001";
}
}
5注册服务消费者【使用ribbon做负载均】
5.1 pom.xml
<parent>
<groupId>com.example</groupId>
<artifactId>demo-nacos</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
5.2 配置文件
# 服务名
spring.application.name=nacos-client-ribbon-8001
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
server.port=8001
5.3启动类
添加@EnableDiscoveryClient注解
@SpringBootApplication
@EnableDiscoveryClient
public class NacosClientRibbon8001Application {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(NacosClientRibbon8001Application.class, args);
}
}
5.4 调用服务
@RestController
public class GetProviderController {
@Resource
RestTemplate restTemplate;
private static final String URL = "http://nacos-provider/";
@GetMapping("/login")
public String login(String name) {
return restTemplate.getForObject(URL + "login?name=" + name, String.class);
}
}
6 利用nacos做注册中心
6.1 添加依赖
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties>
<!--引入config依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
6.2配置文件
注意配置文件最好先设置多环境,因为nacos的文件名命名规范为 applicationName-环境.文件后缀 比如【aaa-dev.properties】
如果不指定环境可能会有问题
- application.properties
spring.profiles.active=dev
-
application-dev.properties
spring.application.name=nacos-config server.port=6001 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.file-extension=properties
6.3 获取配置
@RestController
@RefreshScope//动态更新
public class DemoController {
@Value("${name}")
String name;
@GetMapping("getName")
public String getName() {
return name;
}
}
- 启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfig6001Application {
public static void main(String[] args) {
SpringApplication.run(NacosConfig6001Application.class, args);
}
}
6.4 macos配置
配置管理–》配置列表—》右上角加号-》
Data ID: nacos-config-dev.properties
文件类型选properties
配置内容:
name=test_nacos_config
点击发布启动并访问项目
http://localhost:6001/getName
6.5 nacos的namespace、dataid、group
dataid 和服务实例对应 格式固定【applicationName-环境.文件后缀】
namespace、group :可添加多个通过配置文件划分
spring.cloud.nacos.config.namespace=80986fb8-24c0-4d3d-b1ff-84da7fba4394 spring.cloud.nacos.config.group=dev