SpringCloud Alibaba之Nacos
Nacos是一个易于使用的动态服务发现,配置和服务管理平台,用于构建云本机应用程序。
使用Spring Cloud Alibaba Nacos Discovery,您可以基于Spring Cloud的编程模型快速访问Nacos服务注册功能。
服务注册/发现
服务发现是微服务体系结构中的关键组件之一。在这样的体系结构中,手动为每个客户端配置服务列表可能是一项艰巨的任务,并且使动态扩展极为困难。Nacos Discovery帮助您自动将服务注册到Nacos服务器,并且Nacos服务器会跟踪服务并动态刷新服务列表。另外,Nacos Discovery注册服务实例的某些元数据,例如主机,端口,运行状况检查URL,Nacos主页。有关如何下载和启动Nacos的详细信息,请参考Nacos网站。https://nacos.io/zh-cn/docs/quick-start.html
引入Nacos Discovery进行服务注册/发现
<dependency>
<groupId> com.alibaba.cloud </ groupId>
<artifactId> spring-cloud-starter-alibaba-nacos-discovery </ artifactId>
</ dependency>
Nacos Discovery服务调用
Nacos Discovery与Netflix Ribbon,RestTemplate或OpenFeign集成在一起,用于服务调用(默认轮询)
Nacos服务启动
下载Nacos
https://nacos.io/zh-cn/docs/quick-start.html
(具体版本以及配置请到nacos 官网进行查看 )
我们这里使用window安装
安装完成 到bin目录
Windows
启动命令:
cmd startup.cmd
或者双击startup.cmd运行文件。
nacos server 启动后访问 http://localhost:8848/nacos
进入我们的仪表盘
启动应用程序(Nacos注册)
pom
<dependencies>
<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>
<!--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>
<!--日常通用jar包配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
application.yml
server:
port: 3377
spring:
application:
name: nacos-config
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
management:
endpoints:
web:
exposure:
include: '*'
controller
@RestController
public class EchoController {
@GetMapping(value = "/echo/{string}")
public String echo(@PathVariable String string) {
return "Hello Nacos Discovery " + string;
}
}
SpringBootApplication启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderDemoApplication {
public static void main(String[] args) {
SpringApplication.run(NacosProviderDemoApplication.class, args);
}
}
Spring Cloud Alibaba Nacos config(Nacos 服务配置)
Nacos是一个易于使用的动态服务发现,配置和服务管理平台,用于构建云本机应用程序。
使用Spring Cloud Alibaba Nacos Config可基于Spring Cloud的编程模型快速访问Nacos配置管理功能。
Nacos Config进行配置
pom 依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
Nacos配置项
客服端
bootstrap.yml 配置文件
server:
port: 3377
spring:
application:
name: nacos-config
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
file-extension: yaml
server-addr: 127.0.0.1:8848
application.yml
spring:
profiles:
active: dev
controller
@RestController
@RefreshScope
public class ConfigController {
@Value("${config.info}")
private String configInfo;
@GetMapping("configInfo")
public String info(){
return configInfo;
}
}
SpringBootApplication启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigMain3377 {
public static void main(String[] args) {
SpringApplication.run(NacosConfigMain3377.class,args);
}
}
同时支持动态配置(修改配置不用重启服务)
我们这里就不演示了
配置文件级别的支持配置
Data ID:
我们前面配置的DataID 是采用了
${spring.application.name}-${profile}. ${file-extension:properties}
nacos-config也就是${spring.application.name}
dev 就是 ${profile}
yaml就是. ${file-extension:properties}
支持自定义组
修改bootstrap.yml
server:
port: 3377
spring:
application:
name: nacos-config
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
file-extension: yaml
server-addr: 127.0.0.1:8848
#添加我们刚才添加的组
group: DEV_GROUP
支持自定义命名空间
切换到配置列表同时切换空间
添加配置
发布
复制上面的命名空间id修改我们的
bootstrap.yml
server:
port: 3377
spring:
application:
name: nacos-config
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
file-extension: yaml
server-addr: 127.0.0.1:8848
# namespace id
namespace: fa0f94a4-5b2d-42a2-a3b4-7a4303d2d08a