SpringCloud Alibaba核心组件Nacos【认识和安装Nacos&快速入门】第1章

简介: 该篇文章主要介绍了:什么是nacos,nacos下载安装一些操作的步骤以及过程中的问题,最后服务消费方和提供方快速入门nacos

 1,Nacos注册中心

国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。

1.1:认识nacos

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。

image.gif编辑

    • Nacos用于服务的注册与发现服务的配置管理
    • Nacos提供了简单易用的Web Console。可以帮助开发者快速的实现服务发现服务配置管理服务元数据等需求。
    • 官方文档

    https://nacos.io/zh-cn/docs/what-is-nacos.html

    • 基本架构及概念
    概念 描述
    服务 (Service) 服务是指一个或一组软件功能
    服务注册中心 (Service Registry) 服务注册中心,它是服务,其实例及元数据的数据库。 服务实例在启动时注册到服务注册表,并在关闭时注销。
    服务元数据 (Service Metadata) 服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据
    服务提供方 (Service Provider) 提供可复用和可调用服务的应用方
    服务消费方 (Service Consumer) 发起对某个服务调用的应用方
    配置 (Configuration) 在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。
    配置管理 (Configuration Management) 在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理。
    名字服务 (Naming Service) 提供分布式系统中所有对象(Object)、实体(Entity)的“名字”到关联的元数据之间的映射管理服务

    1.2:下载(在官网地址下载压缩包)

    Releases · alibaba/nacos · GitHub

    image.gif编辑

    1.3:安装

    1.3.1:解压(对压缩包进行解压)

    image.gif编辑

    注意:安装不允许在中文空格目录下  (我想百分之九十九的软件大家都不会安装在中文目录下)

    1.3.2:要求

    要求:操作系统的位数(32位/64位),和JDK的位数一致的(一定保持位数一致)

    操作系统: image.gif编辑

    JDK:(黑窗口打出命令:java-version即可查看)

    image.gif编辑  

    如果操作系统的版本号与JDK的版本不一致,异常如下:

    image.gif编辑

    1.3.3:一些常见错误:

    1)删除data目录重试

    如果无法正常运行,删除 data目录后,重新运行

    image.gif编辑

    2)必须配置JAVA_HOME

    image.gif编辑

      • 提示:没有配置JAVA_HOME,且需要JDK的版本为JDK8及其以上。

      3)unable to start embedded tomcat

      image.gif编辑

        • 不能成功启动tomcat
        • 解决方案:更换JDK

        1.4:启动

        1.4.1:启动

        image.gif编辑

        image.gif编辑

        注意:使用startup.cmd -m standalone

        image.gif编辑

        启动成功:

        image.gif编辑

        1.4.2:启动异常:集群启动

        运行异常:(因为nacos默认运行方式)

        image.gif编辑

          • cmd运行 startup.cmd 错误提示“nacos is starting with cluster” (nacos以集群的方式的运行)

          image.gif编辑

          1.5:WEB控制台

          1.5.1:获得控制台的访问路径

          这是我的地址:http://192.168.0.107:8848/nacos/index.html

          image.gif编辑

          1.5.2:登录

          账号:nacos
          密码:nacos

          image.gif编辑

          1.5.3:控制台管理界面

          image.gif编辑

          2,Nacos快速入门

            • 参考官方文实例档

            Nacos Spring Cloud 快速开始

            2.1:搭建父项目

              • 项目名:
              • nacos-parent-01(像我这目录结构太乱其他板块都是之前测试用的,最后把标记的三个创建出来就ok)
              • image.gif编辑
              • 添加坐标:复制进去进行自动下载:

              <parent>

                 <groupId>org.springframework.cloud</groupId>

                 <artifactId>spring-cloud-build</artifactId>

                 <version>2.3.5.RELEASE</version>

              </parent>

              <properties>

                 <spring.cloud.version>Hoxton.SR12</spring.cloud.version>

                 <spring.cloud.alibaba.version>2.2.7.RELEASE</spring.cloud.alibaba.version>

                 <mybatis.plus.starter.version>3.4.0</mybatis.plus.starter.version>

                 <durid.starter.version>1.1.10</durid.starter.version>

                 <swagger.version>2.7.0</swagger.version>

                 <jwt.jjwt.version>0.9.0</jwt.jjwt.version>

                 <jwt.joda.version>2.9.7</jwt.joda.version>

              </properties>

              <dependencyManagement>

                 <dependencies>

                     <!-- Spring Dependencies -->

                     <dependency>

                         <groupId>org.springframework.boot</groupId>

                         <artifactId>spring-boot-dependencies</artifactId>

                         <version>${spring-boot.version}</version>

                         <type>pom</type>

                         <scope>import</scope>

                     </dependency>

                     <!-- Spring cloud Dependencies-->

                     <dependency>

                         <groupId>org.springframework.cloud</groupId>

                         <artifactId>spring-cloud-dependencies</artifactId>

                         <version>${spring.cloud.version}</version>

                         <type>pom</type>

                         <scope>import</scope>

                     </dependency>

                     <!-- Spring cloud alibaba Dependencies-->

                     <dependency>

                         <groupId>com.alibaba.cloud</groupId>

                         <artifactId>spring-cloud-alibaba-dependencies</artifactId>

                         <version>2.2.7.RELEASE</version>

                         <type>pom</type>

                         <scope>import</scope>

                     </dependency>


                     <!-- mybatis-plus -->

                     <dependency>

                         <groupId>com.baomidou</groupId>

                         <artifactId>mybatis-plus-boot-starter</artifactId>

                         <version>${mybatis.plus.starter.version}</version>

                     </dependency>


                     <!-- Druid连接池 -->

                     <dependency>

                         <groupId>com.alibaba</groupId>

                         <artifactId>druid-spring-boot-starter</artifactId>

                         <version>${durid.starter.version}</version>

                     </dependency>

                     <!--swagger2-->

                     <dependency>

                         <groupId>io.springfox</groupId>

                         <artifactId>springfox-swagger2</artifactId>

                         <version>${swagger.version}</version>

                     </dependency>

                     <dependency>

                         <groupId>io.springfox</groupId>

                         <artifactId>springfox-swagger-ui</artifactId>

                         <version>${swagger.version}</version>

                     </dependency>

                 </dependencies>

              </dependencyManagement>

              2.2:服务提供者Provider

              2.2.1:搭建provider项目

              创建项目:nacos_provider_21

              添加依赖:

              <dependencies>

                 <!-- web 启动类 -->

                 <dependency>

                     <groupId>org.springframework.boot</groupId>

                     <artifactId>spring-boot-starter-web</artifactId>

                 </dependency>


                 <!-- nacos 服务发现 -->

                 <dependency>

                     <groupId>com.alibaba.cloud</groupId>

                     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

                 </dependency>

              </dependencies>


              创建yml文件

              server:

               port: 9999               #端口号


              spring:

               application:

                 name: service-provider          #服务名

               cloud:

                 nacos:

                   discovery:

                     server-addr: 127.0.0.1:8848   #nacos服务地址

              2.2.2:创建服务

              启动类:

              @SpringBootApplication      
              @EnableDiscoveryClient      //这个注解你要是不写,那指定不算入门成功
              public class TestNacosProviderApplication {
                  public static void main(String[] args) {
                      SpringApplication.run(TestNacosProviderApplication.class, args );
                  }
              }

              image.gif

              写个controller提供一个访问的程序:

              @RestController
              public class EchoController {
                  @Resource
                  private HttpServletRequest request;
                  @GetMapping("/tudou")
                  public String tudou() {
                      int serverPort = request.getServerPort();
                      return "你好nacos服务,我是爱吃豆的土豆 " + ":" + serverPort;
                  }
              }

              image.gif

              2.2.3:访问服务

              http://localhost:9999/tudou

              image.gif编辑

              看一下编辑器控制台输出的结果:

              image.gif编辑

              通过Nacos控制台查看  

              image.gif编辑

              2.2.4:nacos服务注册失败

              image.gif编辑

              控制台出现这种错误不要慌:是你的nacos服务没有开启,拒绝了访问

              2.3:服务消费者Consumer

              2.3.1:搭建consumer项目

              项目名称:nacos_consumer_21

              添加依赖:

               <dependencies>

                     <!-- web 启动类 -->

                     <dependency>

                         <groupId>org.springframework.boot</groupId>

                         <artifactId>spring-boot-starter-web</artifactId>

                     </dependency>


                     <!-- nacos 服务发现 -->

                     <dependency>

                         <groupId>com.alibaba.cloud</groupId>

                         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

                     </dependency>


                     <!-- openfeign 远程调用 -->

                     <dependency>

                         <groupId>org.springframework.cloud</groupId>

                         <artifactId>spring-cloud-starter-openfeign</artifactId>

                     </dependency>

                     <dependency>

                         <groupId>org.springframework.boot</groupId>

                         <artifactId>spring-boot-starter-webflux</artifactId>

                     </dependency>

              <!--        ### 整合Feign* -->

                     <dependency>

                         <groupId>org.springframework.cloud</groupId>

                         <artifactId>spring-cloud-starter-openfeign</artifactId>

                     </dependency>

              <!--        Sentinel-->

                     <dependency>

                         <groupId>com.alibaba.cloud</groupId>

                         <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>

                     </dependency>

                 </dependencies>

              创建配置文件 :

              #端口号

              server:

               port: 8071


              spring:

               application:

                 name: service-consumer          #服务名

               cloud:

                 nacos:

                   discovery:

                     server-addr: localhost:8848   #nacos服务地址

                 sentinel:

                   transport:

                     dashboard: 127.0.0.1:18080

              feign:

               sentinel:

                 enabled: true


              2.3.2:创建服务

              创建启动类:

              @SpringBootApplication
              @EnableDiscoveryClient  //服务发现
              public class TestNacosConsumerApplication {
                  public static void main(String[] args) {
                      SpringApplication.run(TestNacosConsumerApplication.class, args );
                  }
              }

              image.gif

              远程调用的配置类:

              @Component
              public class RestTemplateConfig {
                  @LoadBalanced   //负载均衡(通过服务名访问服务)该注解相关文章在微服务专栏查看
                  @Bean
                  public RestTemplate restTemplate() {
                      return new RestTemplate();
                  }
              }

              image.gif

              写个controller(这里的url是通过服务名进行访问的提供方)

              @RestController
              public class TestController {
                  @Resource
                  private RestTemplate restTemplate;
                  @GetMapping("/tudouconsumer")
                  public String tudouconsumer(){
                     String url="http://service-provider/tudou";  \\可以看到是通过服务名称进行访问的提供方
                      return restTemplate.getForObject(url,String.class);
                  }
              }

              image.gif

              2.3.3:消费方访问服务

              首先服务方和消费方的服务都进行启动

              image.gif编辑

              通过浏览器进行访问消费方的controller,通过消费方的controller中的方法进行访问提供方的controller(成功访问):

              image.gif编辑

              看一下nacos注册中心:

              image.gif编辑

              相关文章
              |
              1月前
              |
              Cloud Native Java Nacos
              springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
              通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
              304 14
              |
              1月前
              |
              人工智能 SpringCloudAlibaba 自然语言处理
              SpringCloud Alibaba AI整合DeepSeek落地AI项目实战
              在现代软件开发领域,微服务架构因其灵活性、可扩展性和模块化特性而受到广泛欢迎。微服务架构通过将大型应用程序拆分为多个小型、独立的服务,每个服务运行在其独立的进程中,服务与服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式有助于提升系统的可维护性、可扩展性和开发效率。
              292 1
              |
              7天前
              |
              负载均衡 Dubbo Java
              Spring Cloud Alibaba与Spring Cloud区别和联系?
              Spring Cloud Alibaba与Spring Cloud区别和联系?
              |
              1月前
              |
              前端开发 Java Nacos
              🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
              本文介绍了如何使用Spring Cloud Alibaba 2023.0.0.0技术栈构建微服务网关,以应对微服务架构中流量治理与安全管控的复杂性。通过一个包含鉴权服务、文件服务和主服务的项目,详细讲解了网关的整合与功能开发。首先,通过统一路由配置,将所有请求集中到网关进行管理;其次,实现了限流防刷功能,防止恶意刷接口;最后,添加了登录鉴权机制,确保用户身份验证。整个过程结合Nacos注册中心,确保服务注册与配置管理的高效性。通过这些实践,帮助开发者更好地理解和应用微服务网关。
              101 0
              🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
              |
              3月前
              |
              JSON Java Nacos
              SpringCloud 应用 Nacos 配置中心注解
              在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
              456 28
              |
              2月前
              |
              人工智能 安全 Java
              AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
              本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
              258 4
              |
              3月前
              |
              SpringCloudAlibaba 负载均衡 Dubbo
              【SpringCloud Alibaba系列】Dubbo高级特性篇
              本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
              【SpringCloud Alibaba系列】Dubbo高级特性篇
              |
              3月前
              |
              存储 SpringCloudAlibaba Java
              【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
              一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
              【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
              |
              3月前
              |
              SpringCloudAlibaba JavaScript Dubbo
              【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
              本文介绍了 Dubbo-Admin 的安装和使用步骤。Dubbo-Admin 是一个前后端分离的项目,前端基于 Vue,后端基于 Spring Boot。安装前需确保开发环境(Windows 10)已安装 JDK、Maven 和 Node.js,并在 Linux CentOS 7 上部署 Zookeeper 作为注册中心。
              【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
              |
              3月前
              |
              SpringCloudAlibaba Dubbo Java
              【SpringCloud Alibaba系列】Dubbo基础入门篇
              Dubbo是一款高性能、轻量级的开源Java RPC框架,提供面向接口代理的高性能RPC调用、智能负载均衡、服务自动注册和发现、运行期流量调度、可视化服务治理和运维等功能。
              【SpringCloud Alibaba系列】Dubbo基础入门篇

              热门文章

              最新文章