尚硅谷2020微服务分布式电商项目《谷粒商城》-nacos、gateway、sentinel、sleuth

关注公众号:java星星 获取全套课件资料

1. Nacos概述

官方地址:https://nacos.io

github地址:https://github.com/alibaba/nacos

欢迎访问加群:1107019965,学习更多的知识交流学习

面试题:微服务间远程交互的过程?

  1. 先去注册中心查询服务的服务器地址
  2. 调用方给对方发送http请求

1.1. 什么是 Nacos

Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

1.2. 为什么是Nacos

常见的注册中心:

  1. Eureka(原生,2.0遇到性能瓶颈,停止维护)
  2. Zookeeper(支持,专业的独立产品。例如:dubbo)
  3. Consul(原生,GO语言开发)
  4. Nacos

相对于 Spring Cloud Eureka 来说,Nacos 更强大。

Nacos = Spring Cloud Eureka + Spring Cloud Config

Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。

  • 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。

  • 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

1.3. 可以干什么

Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。

Nacos主要提供以下四大功能:

  1. 服务发现和服务健康监测
  2. 动态配置服务
  3. 动态DNS服务
  4. 服务及其元数据管理

2. Nacos快速开始

结构图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uaBBX3Yr-1593400446174)(assets/1542119181336-b6dc0fc1-ed46-43a7-9e5f-68c9ca344d60.png)]

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  2. 64 bit JDK 1.8+
  3. Maven 3.2.x+

2.1. 下载及安装

你可以通过源码和发行包两种方式来获取 Nacos。

您可以从 最新稳定版本 下载 nacos-server-$version.zip 包。

  unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
  cd nacos/bin

2.2. 启动nacos服务

Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

Windows

启动命令:

cmd startup.cmd

或者双击startup.cmd运行文件。

访问:http://localhost:8848/nacos

用户名密码:nacos/nacos

在这里插入图片描述

2.3. 注册中心

首先创建两个工程:nacos-provider、nacos-consumer

在这里插入图片描述

在这里插入图片描述

创建生产者:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建消费者:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

然后,一路下一步或者ok。效果如下:

在这里插入图片描述

2.3.1. 生产者基本代码

在这里插入图片描述

ProviderController代码如下:

@RestController
public class ProviderController {
   

    @Value("${myName}")
    private String name;

    @GetMapping("hello")
    public String hello(){
   
        return "hello " + name;
    }
}

application.properties配置如下:

server.port=18070
# 自定义参数
myName=nacos

2.3.2. 生产者注册到nacos

生产者注册到nacos注册中心,步骤:

  1. 添加依赖:spring-cloud-starter-alibaba-nacos-discovery及springCloud

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    
    <!-- SpringCloud的依赖 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  2. application.properties 中配置nacos服务地址和应用名

    server.port=8070
    spring.application.name=nacos-provider
    # nacos服务地址
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    # 自定义参数
    myName=nacos
    
  3. 通过Spring Cloud原生注解 @EnableDiscoveryClient 开启服务注册发现功能

    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosProviderApplication {
         
    
        public static void main(String[] args) {
         
            SpringApplication.run(NacosProviderApplication.class, args);
        }
    
    }
    

效果:

在这里插入图片描述

2.3.3. 消费端基本代码

在这里插入图片描述

ConsumerController代码:

@RestController
public class ConsumerController {
   

    @GetMapping("hi")
    public String hi() {
   
        return "hi provider!";
    }
}

application.properties:

server.port=18080

2.3.4. 消费者注册到nacos

消费者注册到nacos跟生产者差不多,也分3步:

  1. 添加依赖:同生产者

  2. 在application.properties中配置nacos的服务名及服务地址:同生产者

  3. 在引导类(NacosConsumerApplication.java)中添加@EnableDiscoveryClient注解:同生产者

效果:

在这里插入图片描述

2.3.5. 使用feign调用服务

在这里插入图片描述
以前我们使用feign来远程调用,这里也一样。引入feign的依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值