第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第1张图片

SpringCloud Alibaba

1.简介

Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。

依托Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第2张图片

地址:GitHub - alibaba/spring-cloud-alibaba: Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.

SpringCloud Alibaba-Nacos[作为注册中心]

Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。他是使用java编写,需要依赖java环境

如何使用 Nacos Discovery Starter 完成 Spring Cloud 应用的服务注册与发现:spring-cloud-alibaba/readme-zh.md at master · alibaba/spring-cloud-alibaba · GitHub

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第3张图片

需要在gulimall-common中的pom.xml下导入的依赖


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>gulimall1-wareartifactId>
        <groupId>com.doudou.gulimall1groupId>
        <version>0.0.1-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>gulimall-commonartifactId>
    <description>每个微服务公共的依赖, bean,工具类等description>

    <properties>
        <maven.compiler.source>8maven.compiler.source>
        <maven.compiler.target>8maven.compiler.target>
    properties>
    <dependencies>
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>3.4.3.1version>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.16.18version>
        dependency>
        
        <dependency>
            <groupId>org.apache.httpcomponentsgroupId>
            <artifactId>httpcoreartifactId>
            <version>4.4.14version>
        dependency>
        <dependency>
            <groupId>commons-langgroupId>
            <artifactId>commons-langartifactId>
            <version>2.6version>
        dependency>
        <dependency>
            <groupId>io.renrengroupId>
            <artifactId>renren-fastartifactId>
            <version>3.0.0version>
            <scope>compilescope>
        dependency>


        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.23version>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>servlet-apiartifactId>
            <version>3.0-alpha-1version>
            <scope>providedscope>
        dependency>
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>


    dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-alibaba-dependenciesartifactId>
                <version>2.2.3.RELEASEversion>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>


project>

1.下载nacos-server

下载地址:Releases · alibaba/nacos · GitHub

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第4张图片

2.启动nacos-server

  • 双击bin中的startup.cmd文件
  • 访问localhost:8848/nacos/
  • 使用默认的nacos/nacos进行登录

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第5张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第6张图片

3.注册微服务

1.修改pom.xml文件,引入Nacos Discovery Starter 这里主要是在gulimall-common里面进行配置

 <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>

2.在应用的application.yml中配置Nacos Server地址

 cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  application:
    name: 模块名字

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第7张图片

3.使用@EnableDiscoveryClient开启服务注册功能

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第8张图片

4.启动nacos,然后再启动IDEA,观察nacos服务列表是否已经注册上服务。

注意:一定要启动nacos,再启动IDEA,每个应用都应该有名字,这样才能注册上去

注册成功的显示页面:

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第9张图片

Feign声明式远程调用

简介

Feign是一个声明式的HTTP客户端,它的目的就是让远程调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。

Feign整合了Ribbon(负载均衡)和Hystric(服务熔断),可以让我们不再需要显示地使用这两个组件。

SpringCloudFeign在NetflixFeign的基础上扩展了对SpringMVC注解的支持,在其实现下,我们只需要创建一个接口并用注解的方式来配置它,即完成对服务提供方的接口绑定。简化了SpringCloudRibbon自行封装服务调用客户端的开发量。

远程调用测试:

首先是要导入feign的依赖包,因为创建模块的时候已经勾选了feign所有pom.xml中自动有依赖包

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第10张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第11张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第12张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第13张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第14张图片

把下面这两个进行启动,然后访问浏览器页面:

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第15张图片

浏览器访问:localhost:8000/member/member/coupons

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第16张图片

Nacos作为配置中心

把这个依赖包复制到gulimall-common中的pom.xml中

   <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
        dependency>

测试

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第17张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第18张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第19张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第20张图片

浏览器中访问的页面:localhost:7000/coupon/coupon/test

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第21张图片

动态获取数据:

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第22张图片

在这个页面进行修改数据

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第23张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第24张图片

查看浏览器页面,已经动态刷新成功

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第25张图片

命名空间

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的Group或Data ID的配置。Namespace的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第26张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第27张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第28张图片

可以用命名空间做环境隔离

现在Nacos里面创建命名空间, 然后把生成的命令空间ID配置到bootstrap.properties中

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第29张图片

这个时候访问的就是命名空间prop里面的内容:

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第30张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第31张图片

命名空间基于微服务进行隔离

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第32张图片

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)_第33张图片

B站学习网址:全网最强电商教程《谷粒商城》对标阿里P6/P7,40-60万年薪_哔哩哔哩_bilibili

你可能感兴趣的:(spring,spring,boot)