springcloud-nacos简述

Spring Cloud alibaba: nacos服务注册中心,配置中心

服务注册中心

1.项目父工程添加springcloudalibaba依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>${spring-cloud-alibaba.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

2.将想要暴露的服务对应的pom文件中添加如下依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

3.工程相应yml文件配置

spring:
  application:
    name: content-api # 服务名称
  cloud:
    nacos:
      server-addr: 192.168.101.65:8848
      discovery:
        namespace: dev402  # 命名空间 要和nacos的相对应
        group: xuecheng-plus-project # 分组

配置完毕后启动content服务,nacos中观察。

配置中心

需要配置的服务中要引入nacos的config依赖

  <!--nacos配置中心需要加入的依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

Data Id 的组成(三部分)

第一部分:application.yaml中配置的应用名,即spring.application.name的值

第二部分:环境名,通过spring.profiles.active指定

第三部分:配置文件 的后缀,目前nacos支持properties、yaml等格式类型。

上面所说的三部分都是要在本地的yaml配置文件中配置的,正因为配置了这三部分服务启动的时候可以从nacos中获取到这个服务的配置的信息,即先去找content-api-dev.yaml这个配置文件。具体配置的优先级后面会说。

spring:
  application:
    name: content-service
  cloud:
    nacos:
      server-addr: 192.168.101.65:8848
      discovery:
        namespace: dev402
        group: xuecheng-plus-project
      config:
        namespace: dev402
        group: xuecheng-plus-project
        file-extension: yaml
        refresh-enabled: true

#profiles默认为dev
  profiles:
    active: dev

配置成功后可以看到控制台中打印NacosRestTemplate.java通过Post方式与nacos服务端交互读取配置信息。

 

 下面直接把完整的配置发出来自己,看一下。我全注释一下,简单东西简单说

server:
  servlet:
    context-path: /content # 服务请求时映射url前缀
  port: 6304 #端口号
#微服务配置
spring:
  application:
    name: content-api # 服务名Data Id 第一部分
  cloud:
    nacos:
      server-addr: 192.168.101.65:8848 # nacos地址,请确保服务可以正常访问
      discovery:   #服务注册的相关配置信息 
        namespace: dev402 # 在nacos页面中创建的命名空间
        group: xuecheng-plus-project # 服务所属分组
      config:   #配置文件相关信息
        namespace: dev402 # 命名空间
        group: xuecheng-plus-project # 服务所属分组
        file-extension: yaml # 程序应该使用 YAML 格式的文件作为配置文件
        refresh-enabled: true
        extension-configs: # 直接引入其他配置文件需要配置extension-configs
          - data-id: content-service-${spring.profiles.active}.yaml
            group: xuecheng-plus-project
            refresh: true
        shared-configs: # 公共配置用这个shared-configs:
          - data-id: swagger-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
          - data-id: logging-${spring.profiles.active}.yaml
            group: xuecheng-plus-common
            refresh: true
#  直接引用content-service-dev.yaml的数据库配置 但是理论上api层面不应包含数据库相关配置,引用也不行
#  datasource:
#    driver-class-name: com.mysql.cj.jdbc.Driver
#    url: jdbc:mysql://192.168.101.65:3306/gogs?serverTimezone=UTC&userUnicode=true&useSSL=false&
#    username: root
#    password: mysql
  #profiles默认为dev 环境名的Data Id 第二部分
  profiles:
    active: dev

 配置优先级

 项目启动首先加载bootstrap.yml,拿到nacos的请求地址与id获取到远程的nacos配置

其次加载本地的application.yml配置,并与nacos拉取到的配置合并

最后进行spring容器的创建、bean的加载......

配置文件的有限级:

项目应用名配置文件(data ID) > 扩展配置文件(extension-configs)  > 共享配置文件(shared-configs) > 本地配置文件(其他application.yml)。

配置本地优先

需求:有时候我们在测试程序时直接在本地加一个配置进行测试。

正常在idea的服务配置换个端口就可以但是由于受优先级影响,他会优先去nacos中查找相关服务配置,也就是说我们启动服务就会报错端口被占用。

解决办法:

#配置本地优先 
spring:
 cloud:
  config:
    override-none: true

 

导入配置

如果我们已经有了配置文件的zip包可以直接在nacos中进行配置的导入。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那山川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值