Nacos
支持基于DNS
和基于RPC
的服务发现,可以作为注册中心、配置中心(动态配置)、动态DNS
服务。
官方网址、下载地址、启动步骤
nacos-server-1.3.1.zip
startup.cmd -m standalone
访问http://localhost:8848/
,默认账户密码都是nacos
,至此注册中心就起来了~~
搭建maven工程,引入nacos依赖,加依赖,写配置,写注解
POM文件
<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.0modelVersion>
<groupId>michael.spica.nacosgroupId>
<artifactId>michael-spica-nacosartifactId>
<version>0.0.1-SNAPSHOTversion>
<packaging>jarpackaging>
<name>michael-spica-nacosname>
<description>Demo project for Spring Bootdescription>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.3.1.RELEASEversion>
<relativePath/>
parent>
<properties>
<java.version>1.8java.version>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
<skipTests>trueskipTests>
properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>Hoxton.SR5version>
<type>pomtype>
<scope>importscope>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-alibaba-dependenciesartifactId>
<version>0.9.0.RELEASEversion>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-openfeignartifactId>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<optional>trueoptional>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
<exclusions>
<exclusion>
<groupId>org.junit.vintagegroupId>
<artifactId>junit-vintage-engineartifactId>
exclusion>
exclusions>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
配置文件:
bootstrap.yml
spring:
application:
name: michael-spica-nacos
cloud:
# Nacos相关配置
nacos:
discovery:
server-addr: 127.0.0.1:8848 # 注册中心服务地址
register-enabled: true # 默认开启自动注册
config:
server-addr: 127.0.0.1:8848
file-extension: yml # 配置文件后缀名
group: DEFAULT_GROUP # 默认 DEFAULT_GROUP
encode: UTF-8 # 默认 UTF-8
enabled: true
profiles:
active: dev # dev|qa|pre|prod
application.yml
server:
port: 8070
启动类:
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class MichaelSpicaNacosApplication {
public static void main(String[] args) {
SpringApplication.run(MichaelSpicaNacosApplication.class, args);
}
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
@FeignClient(value = "michael-spica-nacos-provider")
public interface NacosProviderClient {
@GetMapping("/api/test")
String test();
}
@RestController
@RequestMapping("/api/config")
@RefreshScope // 开启配置文件动态刷新
public class ConfigController {
@Value("${username:123}")
private String username;
@GetMapping(path = "/test")
public String test() {
return String.format("username value: %s", username);
}
}
@RestController
@RequestMapping("/api/test")
public class TestController {
@Autowired
private NacosProviderClient client;
@GetMapping
public String test() {
return "Hello, SpringCloud alibaba, I'm coming.";
}
@GetMapping("/client")
public String testClient() {
return "@FeignClient:" + client.test();
}
}
POM文件
<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.0modelVersion>
<groupId>michael.spica.nacos.providergroupId>
<artifactId>michael-spica-nacos-providerartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>michael-spica-nacos-providername>
<description>Demo project for Spring Bootdescription>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.3.1.RELEASEversion>
<relativePath/>
parent>
<properties>
<java.version>1.8java.version>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
<skipTests>trueskipTests>
properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>Hoxton.SR5version>
<type>pomtype>
<scope>importscope>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-alibaba-dependenciesartifactId>
<version>0.9.0.RELEASEversion>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<optional>trueoptional>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
<exclusions>
<exclusion>
<groupId>org.junit.vintagegroupId>
<artifactId>junit-vintage-engineartifactId>
exclusion>
exclusions>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
配置文件:
bootstrap.yml
spring:
application:
name: michael-spica-nacos-provider
cloud:
# Nacos相关配置
nacos:
discovery:
register-enabled: true # 默认开启自动注册
server-addr: 127.0.0.1:8848 # 注册中心服务地址
config:
server-addr: 127.0.0.1:8848
file-extension: yml # 配置文件后缀名
group: DEFAULT_GROUP # 默认 DEFAULT_GROUP
encode: UTF-8 # 默认 UTF-8
enabled: true
profiles:
active: dev # dev|qa|pre|prod
application.yml
server:
port: 8071
启动类:
@SpringBootApplication
@EnableDiscoveryClient
public class MichaelSpicaNacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(MichaelSpicaNacosProviderApplication.class, args);
}
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
@RestController
@RequestMapping("/api/config")
@RefreshScope // 开启配置文件动态刷新
public class ConfigController {
@Value("${username:123}")
private String username;
@GetMapping(path = "/username")
public String get() {
return String.format("username value: %s", username);
}
}
@RestController
@RequestMapping("/api/test")
public class TestController {
@Autowired
private RestTemplate restTemplate;
@GetMapping
public String test() {
return "Hello, test3.";
}
@GetMapping("/restTemplate")
public String testRestTemplate() {
return restTemplate.getForObject("http://michael-spica-nacos/api/test", String.class);
}
}