SpringCloud Alibaba 之 Nacos服务注册和配置中心
Nacos简介
为什么叫Nacos naming configuration service
是什么
一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos就是注册中心 + 配置中心的组合
Nacos = Eureka + Config + Bus
能干嘛
https://nacos.io/zh-cn/ 查看手册 https://nacos.io/zh-cn/index.html
github上
去哪下
https://github.com/alibaba/nacos/releases/tag/2.0.3 手册页面可以查看各个版本信息,里面有相关组件
各种注册中心比较
Nacos AP 原则 与Eureka相同,而Zookeeper和Consul都是CP原则
安装并运行Nacos
环境要求:本地Java8+ Maven 环境已经OK
先去官网下载Nacos
https://github.com/alibaba/nacos/releases
演示使用 tag 1.1.4
进入相关文件夹,打开cmd, 输入startup.cmd
1.4.1版本 打开 startup.cmd -m standalone 参考 https://nacos.io/zh-cn/docs/quick-start.html
命令运行成功后直接访问:http://localhost:8848/nacos
默认账号密码都是nacos
Nacos作为服务注册中心演示
springcloud alibaba使用2.2.1版本 GA
官方文档:指导文件 https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/en-us/index.html
nacos改用了1.4.1
基于Nacos的服务提供者
新建Module : cloudalibaba-provider-payment9001
POM: 1. 父POM 添加内容
<!--spring cloud alibaba 2.1.0.RELEASE-->
<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>
该Module的POM添加内容
<dependencies>
<!--SpringCloud alibaba 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>
<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>
</dependency>
</dependencies>
YML
server:
port: 9001
spring:
application:
name: cloudalibaba-provider-payment9001
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # 配置nacos地址
management:
endpoints:
web:
exposure:
include: '*'
management部分用于图标展示
主启动
@EnableDiscoveryClient
@SpringBootApplication
public class PaymentMain9001 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain9001.class, args);
}
}
业务类
@RestController
public class PaymentController {
@Value("${server.port}")