Nacos <一>

1、Nacos概述

  • 阿里巴巴开发的一款开源框架,构建云原生应用的动态服务发现,配置管理和服务管理平台。
  • 快速实现动态服务发现、服务配置、服务元数据及流量管理。

2、Nacos官网下载

https://github.com/alibaba/nacos

3、Nacos安装启动

  • 下载包(本次示例是在windows环境单机,linux环境同样操作)nacos-server-2.1.1.tar.gz,解压。
  • 进入bin目录下,执行命令 startup.cmd -m standalone

4、Nacos服务发现(注册中心)配置

  • 引入依赖
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  <version>2.2.9.RELEASE</version>
</dependency>
<!-- 新版gateway 中没有lb,需要手动添加依赖-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

注:如果使用负载,则需要引入loadbalancer依赖

  • 配置:
spring:
  cloud:
    nacos:
      discovery:
      #如果是集群环境,server-addr 后面添加所有nacos服务IP端口,用逗号隔开
        server-addr: localhost:8848
        #服务发现开启
        enabled: true
        #命名空间
        namespace: public
        #组
        group: default
        heart-beat-interval: 1000   #实例在客户端上报心跳的间隔时间 单位:毫秒
        heart-beat-timeout: 3000    #实例在不发送心跳后,健康超时时间 单位:毫秒
        ip-delete-timeout: 3000     #实例在不发送心跳后,删除实例的时间 单位:毫秒
        watch-delay: 3000
        metadata:
          preserved.heart.beat.interval: 1000
          preserved.heart.beat.timeout: 3000
          preserved.ip.delete.interval: 3000

      #连接nacos的用户名密码
      username: nacos
      password: nacos
  • 负载均衡
spring:
  cloud:
    gateway:
      routes:
        - id: r01
          order: 1
          uri: lb://服务名
          predicates:
            - Method=GET,POST
            - Path=/v1/*
          filters:
            - StripPrefix=1
    loadbalancer:
      ribbon:
          ##使用gateway官方推荐的负载均衡器ReactiveLoadBalancerClientFilter;也可以使用Ribbon的阻塞式LoadBalancerClient负载均衡器,值设置为true即可
          enabled: false
        cache:
          #设置服务缓冲有效时间,快速上下线
          ttl: 3s
        health-check:
          #健康检查初始延迟值(默认0)
          initial-delay: 0
          #健康检查的时间间隔(默认25s)
          interval: 5s
          #健康检查获取服务实例的时间间隔(默认25s)
          refetch-instances-interval: 5s
          refetch-instances: true
        retry:
          max-retries-on-same-service-instance: 0

注: 如果使用负载,则必须使用lb://服务名配置。默认使用的轮询策略(RoundBobinLoadBalancer)
如果使用ribbon进行负载,则配置如下:

spring:
  cloud:
    loadbalancer:
      ribbon:
        enabled: true
ribbon:
  ServerListRefreshInterval: 1
  • 引入注解
    在服务入口中引入 @EnableDiscoveryClient, 开启服务发现

5、Nacos配置管理(配置中心)配置

  • 引入依赖
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  <version>2.2.9.RELEASE</version>
</dependency>
  • 配置
spring:
  cloud:
    nacos:
      config:
        #nacos服务端地址,如果是集群,所有地址添加到后面用逗号分隔
        server-addr: localhost:8848 
        #配置中心需要的文件后缀
        file-extension: yaml
        extension-configs:
          #配置中心文件设置
          - dataId: gateway.yml
            group: DEFAULT_GROUP
            #修改配置中心文件生效
            refresh: true
      #连接nacos的用户名密码
      username: nacos
      password: nacos
  • 引入注解
    代码中使用到配置中心的配置时,需要引入@refreshScope,当修改配置中心的配置时能实时生效

注:
1、使用nacos作为配置中心时必须使用bootstrap.yml 或bootstrap.properties。因为bootstrap.yml的配置文件比application.yml的配置文件优先级高。
2、配置中心的命名空间和组必须和注册中心的服务所在命名空间和组一致。
3、配置中心的文件命名规则(默认):【命名空间id】 【分组】 {spring.application.name}-{spring.profiles.active}.{file-extension}

nacos管理界面:

  • 注册中心
image.png
image.png
  • 配置中心


    image.png
image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容