一:Nacos 介绍

nacos整合springcloud 主要是用来做动态配置服务和服务发现管理的,更详细的介绍我就不说了 感兴趣的可以去看官网 中文介绍很友好
https://nacos.io/zh-cn/

二:Nacos 服务注册中心

1.首先引入依赖(将服务注册到nacos中去)

<!--        服务注册/发现-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.2.2.RELEASE</version>
        </dependency>
 <!--        调用远程服务时引入-->
 		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2.启动nacos 客户端
在配置文件中加上

spring:
	 cloud:
	    nacos:
	      discovery:
	        server-addr: 127.0.0.1:8848
	  application:
	    name: gulimall-member (应用名 随便取即可 )

若只想把服务注册上去, 在启动类上加入 @EnableDiscoveryClient 注解即可
若想通过nacos 远程调用别的注册在nacos 上的服务 则还需要在启动类上加
@EnableFeignClients(basePackages = “com.lcx.gulimall.member.feign”)
“()” 里不写 默认全局扫描

3.初始化两个springboot 项目 注册到服务中心

解决 Nacos 服务注册使用 Docker 容器内网 ip 问题 nacos cloud_spring cloud


解决 Nacos 服务注册使用 Docker 容器内网 ip 问题 nacos cloud_spring boot_02


注意:如果配置了 basePackages 调用远程服务的接口 必须写在该包下


启动后 在nacos服务列表中发现 即为注册成功

解决 Nacos 服务注册使用 Docker 容器内网 ip 问题 nacos cloud_加载_03

4.编写远程调用接口

解决 Nacos 服务注册使用 Docker 容器内网 ip 问题 nacos cloud_spring boot_04


解决 Nacos 服务注册使用 Docker 容器内网 ip 问题 nacos cloud_spring_05


5. 在调用端 编写一个 controller 调用CouponFeignService接口里面的方法


启动测试即可

三:Nacos 动态配置

1.使用nacos作为配置中心统一管理配置
引入依赖(这里我使用的是springcloud G 版本 注意和你的版本对应)

<dependency>
          <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>0.2.2.RELEASE</version>
     </dependency>

2.在resource文件夹下 创建一个bootstrap.yml 文件(.properties文件也可,名字要一样)

spring:
  application:
    name: gulimall-gateway
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848 #你的nacos地址
  1. 按下图步骤新建一个
data Id 就是你上面配置的应用名+.yml 或者.properties 后缀 项目在启动时会自动找到这个配置文件 并加载配置信息

解决 Nacos 服务注册使用 Docker 容器内网 ip 问题 nacos cloud_spring_06


解决 Nacos 服务注册使用 Docker 容器内网 ip 问题 nacos cloud_加载_07


启动端口是88 到这里 我们就从配置中心 读取配置成功了

4.使用指定名称空间,在实际开发过程中,我们会有多种生产环境 如 dev,test,prod 等 所以我们就可以在nacos 中多建几个名称空间 根据不同的环境 读取不同名称空间下的配置文件 就会方便很多

解决 Nacos 服务注册使用 Docker 容器内网 ip 问题 nacos cloud_spring_08


解决 Nacos 服务注册使用 Docker 容器内网 ip 问题 nacos cloud_spring boot_09

在bootstrap.yml 中加上 就可以加载指定名称空间下的配置文件 如需指定分组
仅需要在配置文件中加上最后一句话即可
spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: bc98c568-47a7-457e-af1d-6711436d7515
        group=你的组名
加载多个配置文件,在实际开发中 我们有时配置文件太大 我们把它抽取成几个配置文件夹,启动时把他们加载进来
如 我在我的名称空间下 dev 组 新建了 关于datesource.yml, mybatis.yml 以及other.yml

解决 Nacos 服务注册使用 Docker 容器内网 ip 问题 nacos cloud_spring_10


在配置文件中加上,多个配置文件 以数组形式来写(这里是.properties文件)


ps:如需开启动态刷新效果 在需要读取配置文件内容的类上加上@RefreshScope 注解即可

#指定加载那个配置文件 多选 指定加载多个配置文件
spring.cloud.nacos.config.ext-config[0].data-id=datesource.yml
#指定加载的是那个分组下的
spring.cloud.nacos.config.ext-config[0].group=dev
#是否开启自动刷新 默认是false
spring.cloud.nacos.config.ext-config[0].refresh=true


spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true

spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true

细节
1.命名空间 :配置隔离
默认public(保留空间):默认所有新增的配置都在
1.开发 ,测试,生产 :利用命名空间来做环境隔离
注意:在bootstrap.properties 配置文件中,配置需要使用那个命名空间下的配置
默认是public
spring.cloud.nacos.config.namespace=506dc447-e866-4e32-814d-200d5f1f382b
2.每一个微服务之间互相隔离,每一微服务都创建自己的命名空间,只加载自己命名空间下的所有配置
2.配置集 :所有配置的集合
3.配置集ID :DATA ID :类似文件名
4.配置分组: 默认所有的配置集都属于 DEFAULT_GROUP
组名自己取
每个微服务创建自己的命名空间,使用配置分组区分环境,dev , test , prod
三 同时加载多个配置集
1) 微服务任何配置信息,任何配置文件都可以放在配置中心中
2) 只需要在bootStrap.properties说明加载配置中心那些配置文件即可
3) @Value,@ConfigurationProperties 都可以 以前springboot 任何获取配置文件中的值 都可以使用
*/