zoukankan      html  css  js  c++  java
  • 服务注册和配置中心使用之Nacos

    一、Nacos

    1.1 Nacos介绍

    Nacos 是阿里提供的组件, 致力于发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助实现动态服务发现、服务配置管理、服务及流量管理。

    1.2 安装 Nacos

    这里我们采用 Docker 形式安装:

    # 拉取镜像
    docker pull nacos/nacos-server 
    # 创建容器
    docker run --name nacos -d -p 8848:8848 -e MODE=standalone nacos/nacos-server
    

    访问[http://192.168.205.10:8848/nacos] ,输入用户名/密码 nacos/nacos ,就进入nacos 的控制台了:

    二、Nacos应用

    2.1 注册中心应用

    1. 新建 nacos-client 模块 添加相关依赖:
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.0.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
    </properties>
    
    <dependencyManagement>
        <dependencies>
            <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>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <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>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
    1. 在配置文件 resources/application. yml 中添加相关配置:
    server:
      # 指定运行端口
      port: 8800
    
    spring:
      application:
        # 指定服务名称
        name: nacos-client
      cloud:
        nacos:
          discovery:
            server-addr: 192.168.205.10:8848
    
    
    management:
      endpoint:
        health:
          # 显示应用健康信息
          show-details: always
      endpoints:
        web:
          exposure:
            include: "*"
    
    1. 在启动类上添加 @EnableDiscoveryClient 注解
    @EnableDiscoveryClient
    @SpringBootApplication
    public class NacosClientApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(NacosClientApplication.class, args);
        }
    
    }
    

    4) 启动项目,查看 nacos 控制台服务列表

    2.2 配置中心应用

    1. 新建 nacos-config 模块 添加相关依赖:
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.0.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
    </properties>
    
    <dependencyManagement>
        <dependencies>
            <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>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>        
    </dependencies>
    
    1. 新建 bootstrap.yml 配置文件
    server:
      # 指定运行端口
      port: 8800
    
    spring:
      application:
        # 指定服务名称
        name: nacos-config
      cloud:
        nacos:
          config:
            # 设置配置中心地址
            server-addr: 192.168.205.10:8848
            # 设置配置文件后缀
            file-extension: yaml
    
    

    注:bootstrap.yml 先于 application.yml 加载,所以需要在这个文件中配置

    1. 新建 Config 类,用于读取注册中心配置属性
    @Component
    // @RefreshScope 注解可以实现动态刷新属性
    @RefreshScope
    public class Config {
    
        // : 后面的值,表示默认缺省值
        @Value("${name:}")
        private String name;
        @Value("${age:0}")
        private Integer age;
    
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    

    4) 新建 HelloController 用于获取配置值

    @RestController
    public class HelloController {
    
    
        @Autowired
        private Config config;
    
        @GetMapping("/getConfig")
        public String getConfig() {
            return "name="+config.getName() +";age="+config.getAge();
        }
    
    }
    

    5)启动项目,访问 http://localhost:8800/getConfig

    name=;age=0
    

    可以看到现在,因为我们目前还没有对这些属性进行配置,所以返回的是默认缺省值。

    6)访问[http://192.168.205.10:8848/nacos] 添加配置文件

    注: DataId 命名规则为 ({prefix}-){spring.profiles.active}.${file-extension}

    * prefix 默认为 spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix 来配置。
    
    * spring.profiles.active 即为当前环境对应的 profile,可以通过配置项 spring.profiles.active 来配置。
    
    * file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
    
    注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 prefix.{prefix}.prefix.{file-extension}
    
    1. 再次访问 http://localhost:8800/getConfig

    注意:不需要重新启动应用

    name=李四;age=18
    

    可以看到已经动态刷新值了。

  • 相关阅读:
    search方法的使用
    边界字符的使用
    重复数量限定符
    常用匹配符
    使用JS快速读取TXT文件
    基于jq和纯js的 读取本地.txt文件的方法
    Linux中的du和df命令
    HSSFWorkbook
    el表达式
    eclipse 导入web项目时常见错误
  • 原文地址:https://www.cnblogs.com/markLogZhu/p/13491395.html
Copyright © 2011-2022 走看看