nacos服务注册与发现配置 | 青训营笔记

167 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天

nacos在微服务领域的应用

  • 服务发现和服务健康监测(使服务更容易注册,并通过DNS或HTTP接口发现其他服务,还提供服务的实时健康检查,以防 止向不健康的主机或服务实例发送请求。 )
    1. 支持基于DNS和基于RPC的服务发现。服务提供者使用原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
    2. Nacos提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
  • 动态配置服务
    1. 以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
    2. 消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
    3. 置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
    4. 提供了一个简洁易用的UI (控制台样例 Demo) 帮助管理所有的服务和应用的配置。
    5. Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,能更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
  • 动态 DNS 服务
    1. 动态 DNS 服务支持权重路由,更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能更容易地实现以 DNS 协议为基础的服务发现,消除耦合到厂商私有服务发现 API 上的风险。
    2. Nacos 提供了一些简单的 DNS APIs TODO ,管理服务的关联域名和可用的 IP:PORT 列表
  • 服务及其元数据管理
    1. 从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。

nacos下载及配置

  • 根据当前springcloud或者springcloudalibaba版本选择对应的nacos版本进行下载

image.png 由于springcloudalibaba2022.0.0.0-RC1版本所支持的nacos版本为2.2.1-RC,但是github上未提供该版本nacos的zip包下载

image.png 所以我选择了当下较新的2.2.10-RC1版本的springcloudalibaba,下载了nacos2.1.1版本

  • 本地运行nacos

进入nacos\bin目录,进入cmd页面,输入startup.cmd -m standalone运行nacos(因为能力有限,选择单体多端口进行微服务开发,也可以进入nacos的配置文件进行更改,我觉得输命令也没啥就没深入了)

image.png

浏览器输入localhost:8848/nacos进入nacos控制面板

image.png

  • 在后端需要服务发现和服务配置的子模块中添加依赖
     <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

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

  • 配置命名空间(若使用默认的public可以省略此步骤)

image.png

  • 在配置文件中进行配置

此处一定要将配置文件从application.yml改为bootstrap.yml不然读取不到nacos的配置文件

//bootstrap文件

spring:
  application:
    name: service-user
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        namespace: star-blog
        group: star-blog
      config:
        namespace: star-blog
        #group为public情况下可以省略
        group: star-blog
        file-extension: yaml
        #是否支持动态刷新
        refresh-enabled: true
        shared-configs:
          - data-id: common.yaml
            #group为public情况下可以省略
            group: star-blog
            #是否支持动态刷新
            refresh: true
  #手动指定开发环境
  profiles:
    active: dev
  • nacos端已经发现服务

image.png

  • 双服务启动

此处选择allow multiple instance

image.png 再点击左上角复制出一个服务

image.png

最后添加一个环境变量将这个服务与原来的服务区别开

image.png

image.png

进入nacos可以发现服务的两个实例均被注册

image.png

  • 服务配置 点击此处进行配置

image.png 从上到下依次为当前模块配置,当前模块开发环境配置,当前模块测试环境配置、共享配置

image.png

其中共享配置由此处指定

image.png

设置本地优先级最高,利于开发测试

image.png