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

举报
爱吃豆的土豆 发表于 2022/09/25 02:17:54 2022/09/25
【摘要】 目录 💂 个人主页: 爱吃豆的土豆🤟 版权: 本文由【爱吃豆的土豆】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 🏆人必有所执,方能有所成! 🐋希望大家多多支持😘一起进步呀! 1,Nacos注册中心 1.1:认识nac...

目录

  • 💂 个人主页: 爱吃豆的土豆
  • 🤟 版权: 本文由【爱吃豆的土豆】原创、在CSDN首发、需要转载请联系博主
  • 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦
  • 🏆人必有所执,方能有所成!

  • 🐋希望大家多多支持😘一起进步呀!

1,Nacos注册中心

1.1:认识nacos

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

1.3:安装

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

1.3.2:要求

1.3.3:一些常见错误:

1.4:启动

1.4.1:启动

1.4.2:启动异常:集群启动

1.5:WEB控制台

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

1.5.2:登录

1.5.3:控制台管理界面

 2,Nacos快速入门

2.1:搭建父项目

项目名:

添加坐标:复制进去进行自动下载:

2.2:服务提供者Provider

2.2.1:搭建provider项目

2.2.2:创建服务

2.2.3:访问服务

2.2.4:nacos服务注册失败

2.3:服务消费者Consumer

2.3.1:搭建consumer项目

2.3.2:创建服务

2.3.3:消费方访问服务


1,Nacos注册中心

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

1.1:认识nacos

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

  • 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

1.3:安装

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

 

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

1.3.2:要求

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

操作系统:

 

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

   

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

1.3.3:一些常见错误:

1)删除data目录重试

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

 

2)必须配置JAVA_HOME

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

 3)unable to start embedded tomcat

  • 不能成功启动tomcat

  • 解决方案:更换JDK

1.4:启动

1.4.1:启动

 

 

注意:使用startup.cmd -m standalone

 

启动成功: 

 

1.4.2:启动异常:集群启动

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

 

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

1.5:WEB控制台

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

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

 

1.5.2:登录

账号:nacos
密码:nacos

1.5.3:控制台管理界面

 2,Nacos快速入门

  • 参考官方文实例档

Nacos Spring Cloud 快速开始

2.1:搭建父项目

  • 项目名:

  • nacos-parent-01(像我这目录结构太乱其他板块都是之前测试用的,最后把标记的三个创建出来就ok)

  •  

  • 添加坐标:复制进去进行自动下载:

  • <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:创建服务

启动类:


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

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


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

2.2.3:访问服务

http://localhost:9999/tudou

 

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

 

通过Nacos控制台查看  

 

2.2.4:nacos服务注册失败

 控制台出现这种错误不要慌:是你的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:创建服务

创建启动类:


  
  1. @SpringBootApplication
  2. @EnableDiscoveryClient //服务发现
  3. public class TestNacosConsumerApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(TestNacosConsumerApplication.class, args );
  6. }
  7. }

远程调用的配置类:


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

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


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

2.3.3:消费方访问服务

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

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

看一下nacos注册中心:

文章来源: qianxu.blog.csdn.net,作者:爱吃豆的土豆,版权归原作者所有,如需转载,请联系作者。

原文链接:qianxu.blog.csdn.net/article/details/125800831

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。