Nacos注册与配置中心:使用详讲

注册

  • 所有组件配置步骤-大三步
    • 依赖
    • yaml配置
    • 配置类,注解的使用(nacos客户端没有)
  • 逐步完成

1. 引入依赖

<!--nacos-注册抓取-client-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2. yaml配置

spring:    
# cloud配置
  cloud:
    # nacos中注册发现的功能
    nacos:
      #填写服务端地址
      discovery:
        # 填写nacos的服务端地址
        server-addr: localhost:8848
        # 属性1:当前启动进程是永久实例还是临时实例(true 临时实例 默认)
        ephemeral: true
        # 属性2:macos实例的ip地址 (只有在众多服务器的时候使用 ->被别人访问时使用,<可被外界访>.)
        # ip: 127.0.0.1
        # 属性3:命名空间 (:后面是创建命名空间的id值),开发环境的隔离
        namespace: 22233727-d5d1-4fea-9328-edf609a9afcb
        # 属性4:分组 (主要是对版本进行分组,eg:1版本在一组,2版本在一组) 版本的隔离
        group: 1.0
        # 属性5:服务心跳检查 :永久实例不会剔除(nacos会主动问,查看是否存在),临时实例会剔除(主动发出心跳请求)
        # 心跳检查的隔离时间
        heart-beat-interval: 5
        # 超时心跳删除时间
        ip-delete-timeout: 20
  • 临时实例,永久实例
    • 同一个服务,可以启动多个实例,形成一个服务集群.
    • 当前启动进程是永久实例还是临时实例 true 表示临时实例 false表示永久实例
    • spring.cloud.nacos.discovery.ephemeral=fasle
    • 永久实例:nacos永远不删除的注册信息,就是永久实例.
    • 临时实例:暂时为某些应用,环境准备的扩容实例,就是定义为临时实例.
    • 例如: 淘宝每一个功能都是一个服务,而且具备多个实例,平日访问是固定流量,所以使用永久实例支持,如果双11来临,流量激增,需要增加临时实例,等待11完成,删除临时实例
  • 客户端实例的ip地址
    • 服务器ip地址有多个,因为配置多个网卡,有的网卡是外部访问的,有的网卡是局域网网卡,所以客户端web实例在nacos注册希望被别人访问调用一般会考虑是内部调用还是外部调用.
    • 为了防止springboot自动读取的ip地址未必满足实例相互调用的需求,一般情况下,认为确定到底是哪个ip地址,填充到这个属性,携带到nacos.
    • spring.cloud.nacos.discovery.ip=xx.xx.xx.xx
  • 服务心跳检测
    • 后续服务实例和nacos服务端会保持一个心跳检测的机制.如果心跳检测结果失败,nacos就会认为这个实例不健康,会剔除实例或者保存不健康状态.

    • 永久实例:故障,宕机.不会在心跳检测时,保持健康状态,但是不会剔除.

    • 临时实例:故障,宕机,就会在一段时间之后,进行剔除.

    • spring.cloud.nacos.discovery.heart-beat-interval=5 spring.cloud.nacos.discovery.ip-delete-timeout=20

设置命名空间

  1. 开启Nacos服务之后用浏览器进入:http://localhost:8848/nacos/该网站
  2. 默认情况下,只有public公用命名空间.
    请添加图片描述
  3. 创建完新的命名空间,可以在服务列表中看到隔离的注册信息
    在这里插入图片描述
  • 分组配置
  • 在同一个命名空间注册的服务实例,可以进行分组操作.主要功能之一–灰度发布.
  • 简单介绍一下灰度发布: 开发项目,项目发布的特点两个 一个是持续发布,一个是版本发布. 持续发布特点中,有灰度发布的概念.
    在这里插入图片描述

注册信息在nacos中的内存状态

在这里插入图片描述

总结nacos的服务注册发现机制

  • nacos结构:
    • 角色2个: 服务端(nacos-server进程),客户端(spring cloud整合到web应用组件)
  • nacos功能:
    • 服务注册: 在微服务中,服务注册目的,是为了让别的服务发现,获取当前服务信息
    • 服务发现: 为了调用别的服务,从而在nacos进行信息的抓取

配置中心

应用场景

  • 在微服务开发过程中,yaml文件 json文件 properties文件,非常多的冗余重复的内容.不方便统一管理.
  • 例如: 开发环境连接的redis 110.99.88.77:8999.20多个服务,全部在开发环境指向这个redis.用了2天,运维提示服务器崩溃了. redis环境换了 111.99.88.77:8999.
  • 需求: 将重复的配置,提取到通用的管理平台-nacos

配置中心运行结构

在这里插入图片描述

远程配置:

1. 在本地进程添加config 依赖 和bootstrap依赖

<!--clint config nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--spring版本大于2.3.x,需要认为引入-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

2. 需要引入一个bootstrap.yaml文件

  • 上面的bootstrap依赖,就是为了让springboot启动的时候加载这个bootstrap.yaml文件的.
  • bootstrap.yaml 能够被springboot加载,并且先于 application.yaml文件加载的.
  • application.yaml启动进程的参数配置.
  • bootstrap.yaml收集环境信息的参数配置. 读取到远程文件配置内容,放回application.yaml使用.
    如果远程读的数据和application.yaml冲突的. application.yaml会覆盖远程读取的.
spring:
  profiles:
    #开启不同环境
    active: dev
---
spring:
  config:
    activate:
      on-profile: dev
      #告诉bootstrap 远程配置中心nacso的地址 和我们尧都区的配置文件(先读默认的)
  application:
    # 所有的application.name 都是远程名称
    name: csmall-cart 
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        #文件支持的类型 (默认properties   txt json yaml xml html)
        file-extension: yaml
        # 前缀,默认是服务名称,不想使用默认值可以自定义
        # prefix:
        #多环境允许的 命名空间的id
        namespace: 22233727-d5d1-4fea-9328-edf609a9afcb
        #持续发布汇总,保证灰度发布
        #group: 1.0
        #是否支持刷新,远程配置一旦修改,本地进程内存数据是否刷新,如果为true则不需要刷新
        refresh-enabled: true
        #读取指定文件 里面是List集合  
        shared-configs:
          - data-id: datasource.yaml
            group: 1.0
            refresh-enable: true
          - data-id: mybatis.yaml
            group: 1.0
            refresh-enable: true
          - data-id: nacos.yaml
            group: 1.0
            refresh-enable: true
---

这种配置方式,读取文件的逻辑
在这里插入图片描述

  • 通过bootstrap+nacosconfig配置,默认读取的文件格式
  • {spring.application.name}-{spring.profiles.active}.{file-extension}
  • 服务名称-环境名称.文件后缀扩展
  • 对于当前stock服务,应该在nacos中准备一个文件 csmall-stock-dev.yaml
  • 没有指定具体的命名空间,没有指定分组
    请添加图片描述
  • 填写具体的文件信息
    在这里插入图片描述

案例练习

使用:#读取指定的文件 shared-configs:

  • 同时读取远程一个配置了datasource的属性文件,datasource.yaml,
  • 同时读取远程一个配置了nacos注册信息的属性文件,
  • nacos.yaml同时读取远程mybatis配置,mybatis.yaml
    将公共配置文件中存在以上三个配置提取到配置列表
    请添加图片描述
  • datasource.yaml
    请添加图片描述
  • mybatis.yaml
    请添加图片描述
  • nacos.yaml请添加图片描述
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学废Java

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

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

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

打赏作者

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

抵扣说明:

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

余额充值