SpringCloud Alibaba Nacos

Nacos 是什么?

一句话: Nacos 就是注册中心[替代 Eureka]+配置中心[替代 Config]

Nacos 下载&运行

环境要求: Java8/Maven 3.2.x+

解压,运行 bin/startup.cmd

浏览器 http://localhost:8848/nacos 用户名密码都为nacos

将服务注册到nacos

1.在父项目引入spring-cloud-alibaba 依赖

2.修改本模块依赖

<!-- 在微服务模块引入 nacos-discovery starter -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.创建application.yml
spring:
 cloud:
  nacos:
    discovery:
 server-addr: localhost:8848 # 配置 Nacos 地址
# 暴露所有监控点
 management:
  endpoints:
   web:
    exposure:
      include: '*'
4.创建著启动类+ @EnableDiscoveryClient注解 //@EnableDiscoveryClient 引入的是 Nacos 发现注解

创建服务消费方配置与上面一样

controller有变化
@RestController
@Slf4j
public class MemberNacosConsumerController {
/**
* : http://member-service-nacos-provider Nacos 要求这里的服务名要小写 , 和服
Nacos Server 中注册名保持一致
*/
public static final String MEMBER_SERVICE_NACOS_PROVIDER_URL = "http://member-service-nacos-provider" ;
@Resource
private RestTemplate restTemplate ;
@PostMapping ( "/member/nacos/consumer/save" )
public Result < Member > save ( Member member) {
return restTemplate .postForObject( MEMBER_SERVICE_NACOS_PROVIDER_URL + "/member/save" , member, Result . class );
}

nacos配置中心实例

1.在 Nacos Server 加入配置
2.进入到 Nacos Server. 加入配置
Data ID: e-commerce-nacos-config-client-dev.yaml
3.修改 pom.xml
<!--nacos-config-->
< dependency >
< groupId >com.alibaba.cloud</ groupId >
< artifactId >spring-cloud-starter-alibaba-nacos-config</ artifactId >
</ dependency >
4. 创建 application.yml
spring :
 profiles :
  active : dev # 指定环境是 dev/test/prod... dev 开发环境对应 data id
5.  创建 bootstrap.yml
server :
 port : 5000
spring :
 application :
# 这里的 name 需要参考 nacos 配置中心的 Data Id
  name : e-commerce-nacos-config-client
cloud :
 nacos :
 discovery :
  server-addr : localhost:8848 # 服务注册中心地址
 config :
  server-addr : localhost:8848 # 配置中心地址
  file-extension : yaml # 指定 yaml 格式的配置
解读:nacos 配置客户端,会根据配置,找到资源获取配置文件
也就到 localhost:8848 下的 e-commerce-nacos-config-client-dev.yaml
 配置文件 application.yml 和 bootstrap.yml 结合会得到配置文件/资源的地址
6.业务类
@RestController
@RefreshScope // @RefreshScope 是 springcloud 的原生注解,实现配置信息自动刷新
public class NacosConfigClientController {
解读 @Value("${config.ip}")
* 1. client 会拉取 Nacos Server e-commerce-nacos-config-client-dev.yaml
* config:
*
    ip: "122.11.11.11"
将config.ip赋给该属性
@Value ( "${config.ip}" )
private String configIp ;
@Value ( "${config.name}" )
private String configName ;
@GetMapping ( "/nacos/config/ip" )
public String getConfigIp () {
return configIp ;
}
@GetMapping ( "/nacos/config/name" )
public String getConfigName () {
return configName ;
}
}

注意事项

1. 注意在 Nacos Server 的配置文件的后缀是 .yaml , 而不是 .yml
2. 在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目
的正常启动 , 也就是说如果项目不能正确的获取到 Nacos Server 的配置数据,项目是启动
不了的 .[ 演示 ]
3. springboot 中配置文件的加载是存在优先级顺序的, bootstrap.yml 优先级高于
application.yml
4. @RefreshScope springcloud 原生注解,实现配置信息自动刷新 , 如果在 Nacos
Server 修改了配置数据, Client 端就会得到最新配置 [ 演示 ]

Nacos 分类配置 (实现配置隔离)

理解:只通过修改配置文件就可切换为nacos中的配置

DataID 方案

1. nacos server 创建新的配置:e-commerce-nacos-config-client-test.yaml

2.修改 application.yml

spring :
profiles :
#active: dev # 指定环境 dev/test/...
active: test # 指定环境是 test
Group 方案
1. nacos server 创建新的配置: e-commerce-nacos-config-client-dev.yaml  Group:order
2.修改 application.yml
spring :
profiles :
active: dev # 指定环境 dev/test/...
#active: test # 指定环境是 test
3.修改 bootstrap.yml
1. 增加 group 参数
spring
 application :
# 这里的 name 需要参考 nacos 配置中心的 Data Id
  name : e-commerce-nacos-config-client
cloud :
 nacos :
  discovery :
    server-addr : localhost:8848 # 服务注册中心地址
  config :
    server-addr : localhost:8848 # 配置中心地址
    file-extension : yaml # 指定 yaml 格式的配置
    group: order # 指定 group, 如果不写是默认组 DEFAULT_GROUP

Namespace 方案解决

1. nacos server 创建新的 namespace

2. nacos server 创建新的 group/dataid

3.修改 application.yml

spring :
 profiles :
  active: dev # 指定环境 dev/test/...
#active: test # 指定环境是 test

4.修改 bootstrap.yml

spring :
  application :
# 这里的 name 需要参考 nacos 配置中心的 Data Id
    name : e-commerce-nacos-config-client
cloud :
 nacos :
  discovery :
     server-addr : localhost:8848 # 服务注册中心地址
  config :
     server-addr : localhost:8848 # 配置中心地址
         file-extension : yaml # 指定 yaml 格式的配置
         group: seckill # 指 定 group 要 存 在 , 否 则 报 错 , 如 果 不 写 是 默 认 组
DEFAULT_GROUP
         namespace: e37564de-2e0a-4f79-96e9-23ac35b90936 # 阿 里 巴 巴 公 司 的
namespaceID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值