仲灏小栈 仲灏小栈
首页
大前端
后端&运维
其他技术
生活
关于我
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

仲灏

诚意, 正心, 格物, 致知
首页
大前端
后端&运维
其他技术
生活
关于我
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Java

  • Docker

  • Jenkins

  • Nacos

    • 认识nacos
    • 初步学习Nacos
    • SQL

    • Nginx

    • Windows

    • Linux

    • 虚拟机

    • Git

    • 网络

    • 其他

    • 后端&运维
    • Nacos
    仲灏
    2023-09-17
    目录

    初步学习Nacos

    # Nacos简介

    在 Spring Cloud Netflix 阶段我们采用 Eureka 做作为我们的服务注册与发现服务器,现利用 Spring Cloud Alibaba 提供的 Nacos 组件替代该方案。

    Nacos 官网 (opens new window)

    Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

    Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

    nacos注册中心工作流程

    img

    # 3.2.2 Nacos安装

    docker run --restart=always --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
    
    1

    查看nacos日志信息:docker logs nacos

    访问地址

    http://ip:8848/nacos

    nacos的默认端口号是8848,珠穆朗玛峰的高度也是8848米呦!默认账号密码是nacos/nacosimg

    # 3.2.3 Nacos注册中心使用

    1)在资源中导入nacos演示工程

    2)顶级父工程添加依赖包

    <!-- nacos注册中心依赖包 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!-- 监控检查-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    2)nacos-web工程添加配置文件bootstrap.yml

    spring:
      application:
        name: nacos-web
      cloud:
        nacos:
          discovery:
            server-addr: 192.168.200.128:8848
    server:
      port: 9100
    #健康检查
    management:
      endpoints:
        web:
          exposure:
            include: "*"
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    3)nacos-web工程添加启动类

    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosWebApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(NacosWebApplication.class,args);
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8

    4)nacos-web工程新建InfoController

    @RestController
    public class InfoController {
        @Value("${server.port}")
        private String port;
        @Value("${key:''}")
        private String key;
        @GetMapping(value = "/echo/{message}")
        public String echo(@PathVariable(value = "message") String message) {
            return "Hello Nacos Discovery " + message + ", i am from port " + port;
        }
        @GetMapping(value = "/config")
        public String config() {
            return "Hello Nacos Config get "+key ;
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    5)启动服务并查看效果img

    6)修改端口,查看nacos集群支持imgimg

    # 3.2.5 Nacos配置中心使用

    # 3.2.5.1 基础使用

    1)顶级父工程添加依赖

    <!-- nacos配置中心依赖包 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>c 
    </dependency>
    
    1
    2
    3
    4
    5

    2)核心配置信息

    注意:
        配置文件必须是bootstrap.properties或者bootstrap.yml,如果配置application.properties或者application.yml会导致加载不到配置.
    
    1
    2
    spring:
      application:
        name: nacos-web
      cloud:
        nacos:
          discovery:
            server-addr: 192.168.200.140:8848
          config:
            server-addr: 192.168.200.140:8848
            file-extension: yml #指定文件扩展名,默认为properties
    server:
      port: 9100
    #全局健康检查
    management:
      endpoints:
        web:
          exposure:
            include: "*"
    #日志
    logging:
      level:
        org.springframework.web: debug
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22

    新建配置

    配置文件名称 : 默认和 spring.application.name一致

    文件后缀 :默认是 properties

    nacos支持6种文件格式img

    测试config接口

    http://127.0.0.1:9100/config

    @GetMapping(value = "/config")
    public String config() {
        return "Hello Nacos Config get "+key ;
    }
    
    1
    2
    3
    4
    # 3.2.5.2 动态刷新

    Nacos Config Starter 默认为所有获取数据成功的 Nacos 的配置项添加了监听功能,在监听到服务端配置发生变化时会实时触发 org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 方法 。

    如果需要对 Bean 进行动态刷新,参照 Spring 和 Spring Cloud 规范。推荐给类添加 @RefreshScope 进行自动刷新

    # 3.2.5.4 多环境支持

    我们在做项目开发的时候,可能会存在多种环境,并且每一种环境所设置的配置都是不同的,所以我们可能会在线上手工修改这些配置信息。同时 Spring 中为我们提供了 Profile 这个功能。我们只需要在启动的时候添加一个虚拟机参数,激活自己环境所要用的 Profile 就可以了。

    操作起来很简单,只需要为不同的环境编写专门的配置文件,如:application-dev.yml、application-prod.yml, 启动项目时只需要增加一个命令参数 --spring.profiles.active=环境名称 即可。

    测试环境 test

    开发环境 dev

    生产环境 prod

    支持不同环境配置

    nacos可以同时支持多环境配置。只需要在nacos配置中心中根据dataId进行区分即可。dataId 完整的拼接格式如下

    在 Nacos Config Starter 中,dataId 完整的拼接格式如下

    ${prefix}-${spring.profiles.active}.${file-extension}
    
    1
    • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
    • spring.profiles.active 即为当前环境对应的 profile
    • file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。 目前只支持 properties 类型。

    1)修改bootstrap.yml

    spring:
      profiles:
        active: dev #开发环境
      application:
        name: nacos-web
      cloud:
        nacos:
          discovery:
            server-addr: 192.168.200.140:8848
          config:
            server-addr: 192.168.200.140:8848
            file-extension: yml #后缀
            prefix: nacos-web  #前缀
    server:
      port: 9100
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    2)nacos中新增配置信息img

    # 3.2.5.5 配置共享
    # 3.2.5.5.1 不同环境下配置信息共享

    在开发中,虽然可以在不同环境下使用不同的配置文件,但是有一些配置是通用的,需要在不同的环境下,都进行生效。

    1. 当开发环境为:dev时。img
    2. 当开发环境为:test时。img

    根据上述测试,可以发现,不同的开发环境下都会去加载nacos-web.yml,也就是没有指定特定环境的文件。那么对于通用配置就可以设置在这个文件中。

    更新nacos配置中心的nacos-web.yml。img

    InfoController中获取该值img

    环境为test:访问并获取结果img

    环境为dev:访问并获取结果img

    # 3.2.5.5.2 不同应用间配置信息共享

    在实际项目中,常常需要不同应用间配置共享。比如redis连接信息,很多服务都需要,那么就可以把这部分信息交给Nacos进行管理并且实现配置共享,从而实现配置的重用。

    1)Nacos中新建common.ymlimg

    2)修改nacos-web工程配置文件,添加

    spring:
      application:
        name: nacos-web
      cloud:
        nacos:
          discovery:
            server-addr: 192.168.200.128:8848
          config:
            server-addr: 192.168.200.128:8848
            file-extension: yml #指定文件扩展名,默认为properties
            prefix: nacos-web
            
            
            #添加共享配置的dataId,如多个使用逗号分隔,并且越靠后,优先级越高
            #文件后缀名不能少,只支持yaml,yml,properies
            shared-dataids: common.yml
            #哪些共享配置支持动态刷新,如多个使用逗号分隔
            refreshable-dataids: common.yml
            
            
      profiles:
        active: dev #开发环境
    server:
      port: 9100
    management:
      endpoints:
        web:
          exposure:
            include: "*"
    #日志
    logging:
      level:
        org.springframework.web: debug
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33

    3)InfoController中获取该值img

    4)导入demo工程

    5)Nacos中创建example工程对应配置文件img

    web工程访问结果如下:img

    example访问结果如下:

    • img
    上次更新: 2023/09/17, 20:06:58
    认识nacos
    redis 笔记

    ← 认识nacos redis 笔记→

    最近更新
    01
    vim日常使用记录
    04-02
    02
    滑动窗口最大值
    04-02
    03
    有效的字母异位词
    04-02
    更多文章>
    Theme by Vdoing | Copyright © 2021-2025 izhaong | github | 蜀ICP备2021031194号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式