一、Nacos
1、简介
Nacos就是注册中心+配置中心的组合 ->Nacos = Eureka+Config+Bus。
能干嘛
- 替代Eureka做服务注册中心
- 替代Config做服务配置中心
- 替代Bus做服务总线
- Nacos内嵌ribbon(负载均衡)
去哪下
- https://github.com/alibaba/nacos/releases
- 官网文档
- 解压安装包,直接运行bin目录下的startup.cmd
- 命令运行成功后直接访问http://localhost:8848/nacos,默认账号密码都是nacos
各中注册中心比较:
服务注册与发现框架 | CAP模型 | 控制台管理 | 社区活跃度 |
Eureka | AP | 支持 | 低(2.x版本闭源) |
Zookeeper | CP | 不支持 | 中 |
consul | CP | 支持 | 高 |
Nacos | AP、CP | 支持 | 高 |
2、服务注册中心(替换Eureka)
1)服务注册端:
pom依赖
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
yml:
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*'
主启动类:加上@EnableDiscoveryClient
2)服务消费端
yml
server:
port: 83
spring:
application:
name: nacos-order-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
nacos-user-service: http://nacos-payment-provider
主启动类:加上@EnableDiscoveryClient
3、服务配置中心(替换config)
3.1 基础使用
1)代码上
pom依赖:
<!--nacos-config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application。
bootstrap:
# nacos配置
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
group: DEV_GROUP
namespace: 7d8f0f5a-6a53-4785-9686-dd460158e5d4
application:
spring:
spring:
profiles:
active: dev # 表示开发环境
#active: test # 表示测试环境
2)在Nacos中添加配置信息
在 Nacos Spring Cloud中,dataId的完整格式如下:
${spring.application.name)}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
Nacos界面配置对应 - 设置DataId
3.2、命名空间、分组、DataID三者关系
Namespace+Group+Data lD三者关系?为什么这么设计?
类似Java里面的package名和类名最外层的namespace是可以用于区分部署环境的,Group和DatalD逻辑上区分两个目标对象。
默认情况:Namespace=public,Group=DEFAULT_GROUP,默认Cluster是DEFAULT
1)DataID配置方案
指定spring.profile.active和配置文件的DatalD来使不同环境下读取不同的配置
默认空间+默认分组+新建dev和test两个DatalD
- 新建dev配置DatalD
- 新建test配置DatalD
- 通过spring.profile.active属性就能进行多环境下配置文件的读取
2)Group分组方案
通过Group实现环境区分 - 新建Group
在nacos图形界面控制台上面新建配置文件DatalD
bootstrap+application
在config下增加一条group的配置即可。可配置为DEV_GROUP或TEST GROUP
3)Namespace空间方案
新建dev/test的Namespace
回到服务管理-服务列表查看
按照域名配置填写
YML
# nacos配置
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
group: DEV_GROUP
namespace: 7d8f0f5a-6a53-4785-9686-dd460158e5d4 #<------------指定namespace
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yaml
# nacos-config-client-test.yaml ----> config.info