• SpringCloud Alibaba Nacos注册中心官方文档——快速开始


    一、前言

    本篇笔记是我根据SpringCloud Alibaba Nacos官方文档学习整理而来,主要是对Nacos注册中心的部署、Nacos Server的动态配置及Nacos Server的服务注册与发现的一个官方Demo的学习,Demo很简单,主要是为了先搭建我的第一个微服务工程,若是也有在自学微服务的码友,可以互勉,互相进步!
    Nacos官方文档地址:https://nacos.io/zh-cn/docs/quick-start.html

    二、Nacos注册中心部署

    1.下载最新的Nacos:

    2.解压nacos-server-1.4.3.tar.gz:tar -xvf nacos-server-$version.tar.gz
    3. 进入解压后的bin文件夹中并执行启动命令:cd nacos/bin

    • Linux:sh startup.sh -m standalonebash startup.sh -m standalone
    • Windows:startup.cmd -m standalone

    4.测试:访问http://localhost:8848/nacos/,进入Nacos 注册中心页面,用户名密码均为nacos
    5. 关闭nacos注册中心:Linux:sh shutdown.sh Windows:shutdown.cmd
    【注意】 :

    • 启动命令中standalone表示单机启动,新版Nacos默认是集群启动,故需要加上该参数;
    • 也可以直接打开startup.sh,将export MODE="cluster"改为export MODE=“standalone”;

    三、Nacos Spring Cloud快速开始

    主要从以下两个方面来演示:

    1. 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
    2. 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

    3.1 创建父工程版本依赖

    1. 新建空的Maven项目(删除src)命名为springcloud,然后在pom中配置依赖作为父依赖;


      4.0.0

      org.myapps
      springcloud
      1.0-SNAPSHOT
      
      
          springcloud-nacos-7001
          nacos-config-8001
          springcloud-nacos-consumer-8080
      
      
      
      pom
      
      
      
      
          
              
              
                  org.springframework.cloud
                  spring-cloud-dependencies
                  2021.0.0
                  pom
                  import
              
              
              
                  org.springframework.boot
                  spring-boot-dependencies
                  2.6.3
                  pom
                  import
              
              
              
                  com.alibaba.cloud
                  spring-cloud-alibaba-dependencies
                  2021.1
                  pom
                  import
              
          
      
      
      • 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

    3.2 Nacos Server配置动态变更

    1. 在父工程下新建Module,命名为nacos-config-8001,并添加依赖(版本继承父依赖版本)

      org.springframework.boot spring-boot-starter-web com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config
    2. Nacos 配置管理 dataId字段格式:$ {prefix}-$ {spring.profiles.active}.$ {file-extension};

    • prefix默认为spring.application.name的值,也可以通过spring.cloud.nacos.config.prefix来配置;
    • spring.profiles.active为当前环境对应的 profile,当spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension};
    • file-exetension为配置内容的数据格式,可以通过spring.cloud.nacos.config.file-extension来配置。目前只支持 properties(默认)和 yaml 类型。
    1. 在 bootstrap.properties 中配置 Nacos Server 的地址和应用名;

      spring.profiles.active=dev #指定开发环境
      spring.cloud.nacos.config.server-addr=127.0.0.1:8848 #nacos注册中心地址
      spring.application.name=nacos-config #应用名,对应dataId字段的prefix
      spring.cloud.nacos.config.file-extension=properties #默认就是properties,可不配置,或配置为yaml
      #dataId的prefix=nacos-config,spring.profiles.active=dev,file-extension=properties,最终dataId=nacos-config-dev.properties

      spring.cloud.nacos.config.namespace=Public #默认为Public命名空间,可省略
      spring.cloud.nacos.config.group=DEFAULT_GROUP #指定配置群组,若是Public命名空间,则可省略

    2. Controller层通过原生注解@RefreshScope实现配置自动更新;

      @RestController
      @RequestMapping(“/config”)
      @RefreshScope //实现配置的自动更新
      public class ConfigController {
      @Value(“${userLocalCache:false}”)
      private boolean useLocalCache;
      @RequestMapping(“/get”)
      public boolean get(){
      return useLocalCache;
      }
      }

    3. 发布配置:dataId为nacosConfig.properties,内容为useLocalCache=true;
      在这里插入图片描述

    4. 测试:访问http://localhost:8080/config/get,返回结果为true。

    3.3 Nacos Server注册与发现

    3.3.1创建服务提供者

    1. 在父工程下新建Module,命名为springcloud-nacos-7001,并添加依赖(版本继承子父依赖版本);



      springcloud
      org.myapps
      1.0-SNAPSHOT

      4.0.0
      springcloud-nacos-7001




      org.springframework.boot
      spring-boot-starter-web



      com.alibaba.cloud
      spring-cloud-starter-alibaba-nacos-discovery


      com.alibaba.nacos
      nacos-client


    2. 配置提供者的服务器信息及注册中心信息;

      server:
      port: 7001 #服务提供者的服务器端口号7001
      spring:
      application:
      name: nacos-server-provider #服务提供者在注册中心的实例名称
      cloud:
      nacos:
      discovery:
      server-addr: 127.0.0.1:8848 #要注册到注册中心的地址

    3. Controller层;

      @RestController
      @RequestMapping(“/provider”)
      public class NacosProviderController {
      //SpringCloud定义了DiscoveryClient接口用于服务发现,可获取注册中心所有的服务实例
      @Resource
      private DiscoveryClient discoveryClient;
      @GetMapping(“/getService”)
      public List getService(){
      List list = discoveryClient.getInstances(“nacos-server-provider”);
      return list;
      }
      @GetMapping(“/get/{text}”)
      public String hello(@PathVariable(“text”) String text){
      return "Welcome to Nacos , "+text;
      }
      }

    4. 启动类添加注解@EnableDiscoveryClient, 用于开启服务注册发现功能;

      @SpringBootApplication
      @EnableDiscoveryClient //开启服务注册发现功能
      public class NacosProvider7001 {
      public static void main(String[] args) {
      SpringApplication.run(NacosProvider7001.class,args);
      }
      }

    5. 运行启动类,将服务提供者注册到Nacos注册中心,可访问http://localhost:8848/nacos/,查看是否成功注册进服务中心。

    3.3.2创建服务消费者

    1. 在父工程下新建Module,命名为springcloud-nacos-consumer-8080,并添加依赖(继承父依赖版本);



      springcloud
      org.myapps
      1.0-SNAPSHOT

      4.0.0
      springcloud-nacos-consumer-80




      org.springframework.boot
      spring-boot-starter-web



      com.alibaba.cloud
      spring-cloud-starter-alibaba-nacos-discovery


      com.alibaba.nacos
      nacos-client


    2. 配置消费者的服务器信息及注册中心信息;

      server:
      port: 8080 #服务消费者的服务器端口号8080
      spring:
      application:
      name: nacos-server-consumer #注册中心服务器实例名称
      cloud:
      nacos:
      discovery:
      server-addr: 127.0.0.1:8848 #要注册到注册中心的地址

    3. 配置RestTemplateConfig,将RestTemplate交给Bean容器管理;

      @Configuration
      public class RestTemplateConfig {
      @Bean
      public RestTemplate getRestTemplate(){
      return new RestTemplate();
      }
      }

    4. Controller层;

      @RestController
      @RequestMapping(“/consumer”)
      public class NacosConsumerController {
      @Resource
      private RestTemplate restTemplate; //注入RestTemplate
      @GetMapping(“/getService”)
      public List getService(){
      return restTemplate.getForObject(“http://localhost:7001/provider/getService”, List.class);
      }
      @GetMapping(“/get/{text}”)
      public String hello(@PathVariable(“text”) String text){
      return restTemplate.getForObject(“http://localhost:7001/provider/get/” + text, String.class);
      }
      }

    5. 启动类添加注解@EnableDiscoveryClient, 用于开启服务注册发现功能

      @SpringBootApplication
      @EnableDiscoveryClient //开启服务注册发现功能
      public class NacosConsumer8080 {
      public static void main(String[] args) {
      SpringApplication.run(NacosConsumer8080.class,args);
      }
      }

    6. 运行启动类,将服务消费者注册到Nacos注册中心,可访问http://localhost:8848/nacos/

    7. 测试:

    【注意】 :测试之前要保证开启Nacos、开启服务提供者和服务消费者。

    四、总结

    Nacos服务注册中心为SpringCloud Alibaba中的一个环节,主要用于不同服务之间的解耦,可以将来自不同服务器上的服务都发布到注册中心,满足后并发的需求。

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    Windows安装Python
    Overleaf论文排版踩坑记录
    实操|风控模型中常用的这三种预测方法与多分类场景的实现
    【推导】线性变换的矩阵表达式
    虚拟内存原理与技术
    机械臂外参标定
    Discuz IIS上传附件大于28M失败报错Upload Failed.修改maxAllowedContentLength(图文教程)
    论文阅读:BGE M3-Embedding——通过自知识提取实现多语言、多功能、多粒度的文本嵌入
    2024-Pop!_OS新版本,新桌面环境的消息
    Vue09/Vue 配置二级路由实现路由嵌套 、组件缓存 keep-alive 和 keep-alive属性方法及两个钩子函数
  • 原文地址:https://blog.csdn.net/m0_67392409/article/details/126116131