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


    目录

    • ?? 个人主页:

    • **?? 版权:**本文由【】原创、在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)

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

    • org.springframework.cloud spring-cloud-build 2.3.5.RELEASE

    2.2:服务提供者Provider

    2.2.1:搭建provider项目

    创建项目:nacos_provider_21

    添加依赖:

    org.springframework.boot spring-boot-starter-web
    
    
        com.alibaba.cloud
        spring-cloud-starter-alibaba-nacos-discovery
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建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 );
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    @RestController
    public class EchoController {
        @Resource
        private HttpServletRequest request;
        @GetMapping("/tudou")
        public String tudou() {
            int serverPort = request.getServerPort();
            return "你好nacos服务,我是 " + ":" + serverPort;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 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

    添加依赖:

    org.springframework.boot spring-boot-starter-web
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
    
        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        
        
            org.springframework.boot
            spring-boot-starter-webflux
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        
    
    • 1
    • 2
    • 3
    • 4
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-sentinel
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建配置文件 :

    #端口号
    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 );
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    远程调用的配置类:

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

    写个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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.3.3:消费方访问服务

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

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

    看一下nacos注册中心:

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

  • 相关阅读:
    SpringAOP
    源码解析系列:ConcurrentHashMap(2) - put方法和扩容
    Java要抛弃祖宗的基业,Java程序员危险了!
    ELK日志分析系统的详细介绍与部署
    Unity如何查找两个transform最近的公共parent
    007_补充_ Pytorch 反向传播和Neural ODE的反向传播
    python3 阿里云api进行巡检发送邮件
    php 支持mssqlserver
    问:未来5年的IT互联网行业,就业形势会是什么样的?
    坦克大战①
  • 原文地址:https://blog.csdn.net/m0_67392409/article/details/126116169