• nacos学习笔记一:nacos做注册中心和配置中心


    利用nacos做注册中心

    #1、下载nacos server端

    https://github.com/alibaba/nacos/releases

    2、启动服务

    sh startup.sh -m standalone
    
    • 1

    3、配置父类项目

    3.1配置pom

    父类项目pom文件

    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0modelVersion>
        <groupId>com.examplegroupId>
        <artifactId>demo-nacosartifactId>
        <version>0.0.1-SNAPSHOTversion>
        <name>demo-nacosname>
        <packaging>pompackaging>
        <description>demo-nacosdescription>
        
        <parent>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-parentartifactId>
            <version>2.3.2.RELEASEversion>
        parent>
        <properties>
            <maven.compiler.source>8maven.compiler.source>
            <maven.compiler.target>8maven.compiler.target>
            
            <spring-cloud.version>Hoxton.SR9spring-cloud.version>
            <spring-cloud-alibaba.version>2.2.6.RELEASEspring-cloud-alibaba.version>
        properties>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloudgroupId>
                    <artifactId>spring-cloud-dependenciesartifactId>
                    <version>${spring-cloud.version}version>
                    <type>pomtype>
                    <scope>importscope>
                dependency>
                <dependency>
                    <groupId>com.alibaba.cloudgroupId>
                    <artifactId>spring-cloud-alibaba-dependenciesartifactId>
                    <version>${spring-cloud-alibaba.version}version>
                    <type>pomtype>
                    <scope>importscope>
                dependency>
            dependencies>
    
        dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-webartifactId>
            dependency>
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
            dependency>
            <dependency>
                <groupId>org.projectlombokgroupId>
                <artifactId>lombokartifactId>
            dependency>
        dependencies>
    project>
    
    • 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
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    4、注册服务提供者【可拓展多个,过程类似】

    4.1 pom.xml

    <parent>
            <groupId>com.examplegroupId>
            <artifactId>demo-nacosartifactId>
            <version>0.0.1-SNAPSHOTversion>
        parent>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.2 配置文件

    # 服务名
    spring.application.name=nacos-provider
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    server.port=7001
    
    • 1
    • 2
    • 3
    • 4

    4.3启动类

    添加@EnableDiscoveryClient注解

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

    4.4 对外接口

    @RestController
    public class ProviderController {
        @GetMapping("/login")
        public String login(String name) {
            return "欢迎您 " + name + " 这里是7001";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    5注册服务消费者【使用ribbon做负载均】

    5.1 pom.xml

    <parent>
            <groupId>com.examplegroupId>
            <artifactId>demo-nacosartifactId>
            <version>0.0.1-SNAPSHOTversion>
        parent>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5.2 配置文件

    # 服务名
    spring.application.name=nacos-client-ribbon-8001
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    server.port=8001
    
    • 1
    • 2
    • 3
    • 4

    5.3启动类

    添加@EnableDiscoveryClient注解

    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosClientRibbon8001Application {
    
        @Bean
        @LoadBalanced
        public RestTemplate getRestTemplate() {
            return new RestTemplate();
        }
    
        public static void main(String[] args) {
            SpringApplication.run(NacosClientRibbon8001Application.class, args);
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    5.4 调用服务

    @RestController
    public class GetProviderController {
        @Resource
        RestTemplate restTemplate;
        private static final String URL = "http://nacos-provider/";
    
        @GetMapping("/login")
        public String login(String name) {
            return restTemplate.getForObject(URL + "login?name=" + name, String.class);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    6 利用nacos做注册中心

    6.1 添加依赖

    <properties>
      <java.version>1.8java.version>
      <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
      <spring-boot.version>2.3.7.RELEASEspring-boot.version>
    properties>
    
    <dependency>
      <groupId>com.alibaba.cloudgroupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    6.2配置文件

    注意配置文件最好先设置多环境,因为nacos的文件名命名规范为 applicationName-环境.文件后缀 比如【aaa-dev.properties】

    如果不指定环境可能会有问题

    • application.properties
    spring.profiles.active=dev
    
    • 1
    • application-dev.properties

      spring.application.name=nacos-config
      server.port=6001
      spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
      spring.cloud.nacos.config.server-addr=127.0.0.1:8848
      spring.cloud.nacos.config.file-extension=properties
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    6.3 获取配置

    @RestController
    @RefreshScope//动态更新
    public class DemoController {
        @Value("${name}")
        String name;
        @GetMapping("getName")
        public String getName() {
            return name;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 启动类
    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosConfig6001Application {
    
        public static void main(String[] args) {
            SpringApplication.run(NacosConfig6001Application.class, args);
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    6.4 macos配置

    配置管理–》配置列表—》右上角加号-》

    Data ID: nacos-config-dev.properties

    文件类型选properties

    配置内容:

    name=test_nacos_config
    
    • 1

    点击发布启动并访问项目

    http://localhost:6001/getName

    6.5 nacos的namespace、dataid、group

    dataid 和服务实例对应 格式固定【applicationName-环境.文件后缀】

    namespace、group :可添加多个通过配置文件划分

    spring.cloud.nacos.config.namespace=80986fb8-24c0-4d3d-b1ff-84da7fba4394
    spring.cloud.nacos.config.group=dev
    
    • 1
    • 2
  • 相关阅读:
    android Binder安全性、Unix Socket安全性研究
    UniApp 在 iOS 16 下真机自定义基座调试指南,可解决模拟器无法输出调试日志问题
    Why indigenous forest guardianship is crucial to climate action?
    智慧酒店解决方案-最新全套文件
    引入easyExcel后,导致springboot项目无法开启tomcat
    10.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏发送数据的操作
    Swagger的常见UI路径
    setTimeout和setInterval区别,以及定时器的传参功能
    如何报考华为网络工程师?
    每日三题 11.10
  • 原文地址:https://blog.csdn.net/liu1251303815/article/details/126229267