• 谷粒商城--整合SpringCloud Alibaba


    SpringCloud

    更多SpringCloud相关内容关注我这篇文章,这篇文章只做基本的整合没有概念!
    https://blog.csdn.net/qq_45714272/article/details/123699797

    前言

    谷粒商城专栏:https://blog.csdn.net/qq_45714272/category_11939728.html
    Github地址:https://github.com/YuyanCai/mall-study

    版本选择

    不用和老师讲的一模一样,按照官网对照版本即可!
    image-20220729165125383

    image-20220728163730187

    这里要注意的是其他模块也要改springboot的版本,都为2.3.2.rekease

    Nacos

    1、启动Nacos

    image-20220728230611716

    2、将微服务注册到 nacos 中

    mall-ommon模块进行引入

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4

    这样所有的引入common模块的其他模块就都有这个服务发现了,接下来还需要两步

    • 在需要将微服务加到注册中心的启动类上加注解@EnableDiscoveryClient

    • 改模块配置文件

      • spring:
            cloud:
                nacos:
                  discovery:
                    server-addr: localhost:8848 #nacos地址
        
        • 1
        • 2
        • 3
        • 4
        • 5

    3、测试

    image-20220728232800873

    image-20220728232808671

    Feign

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

    例如:想要获取当前会员领取到的所有优惠券。先去注册中心找优惠券服务, 注册中心调一台优惠券服务器给会员,会员服务器发送请求给这台优惠券服务器,然后对方响应。

    下面我们看它是怎么用的:

    1、引入open-feign

    前期建模块的时候我们已经引入过了

    2、在调用方的主函数头上标注注解打开远程调用,并指定远程调用接口的位置

    @SpringBootApplication
    @EnableDiscoveryClient //标注启动服务发现
    @EnableFeignClients(basePackages = "com.caq.mall.member.feign")
    public class MallMemberApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MallMemberApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3、编写远程调用接口

    1. 通过@FeignClient(“mall-coupon”)指定远程调用哪个微服务
    2. 方法为要调用微服务功能的的签名部分(路径要写全

    那么当我们调用这个接口的方法时,他就会去注册中心中找远程服务mall-coupon所在位置,最后调用/coupon/coupon/member/list这个请求对应的方法

    package com.caq.mall.member.feign;
    
    import com.caq.common.utils.R;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @FeignClient("mall-coupon")
    public interface CouponFeignService {
    
        @RequestMapping("/coupon/coupon/member/list")
        public R memberCoupons();
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4、测试

    被调用方:为优惠卷微服务新添加一个功能,这个功能就是访问这个请求时会返回优惠卷的信息以List的形式

    image-20220729000325703

    调用方:注入服务,写一个请求来获取用户信息和优惠卷信息

    image-20220729000448573

    结果如下:

    image-20220728235357961

    配置中心

    配置中心就是把配置文件写在Nacos中,当你修改配置中心内容时项目不需要重启项目即可根据配置文件实现实时更新

    官方文档演示:

    https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md

    过程如下:

    image-20220729074959340

    1、引入依赖

    common模块

    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    2、创建bootstrap.properties

    所有配置文件中优先级最高

    服务启动后会先读取这个文件,读取后就会去从nacos配置中心加载mall-coupon.properties文件

    spring.application.name=mall-coupon
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    
    • 1
    • 2

    3、配置中心定义新配置文件

    其中,DataID必须为微服务名.properties

    配置的内容什么都可以

    image-20220729084603849

    4、测试

    • 在Controller加上@RefreshScope来动态获取配置数据

    image-20220729084827766

    image-20220729084910918

    配置中心修改配置再刷新

    image-20220729084943351

    NameSpace

    命名空间就是用来隔离资源的

    什么情况下会用到呢?

    你生产环境想用这一套配置,开发环境想用另一套配置。那么就可以把配置文件放到不同的命名空间中

    1、新建命名空间

    image-20220729090043943

    配置文件

    image-20220729090207468

    2、bootstrap.properties指定命名空间

    微服务启动的时候会先去bootstrap.properties加载,然后根据配置去Nacos配置中心找到文件

    image-20220729090431390

    3、测试

    这个配置就是我prop命名空间定义的配置文件

    image-20220729090643591

    Group

    一般Group和Namespace配合使用

    解决方案为:每个微服务创建自己的命名空间,使用配置分组区分环境

    分组在创建配置文件的时候直接进行创建即可

    1、创建微服务NameSpace并创建分组

    image-20220729094413879

    2、bootstrap.properties指定分组

    spring.application.name=mall-coupon
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    spring.cloud.nacos.config.namespace=8c4aa2e1-412b-4992-90d7-b74cf3abbef1
    spring.cloud.nacos.config.group=11
    
    • 1
    • 2
    • 3
    • 4

    3、测试

    image-20220729093831023

    加载多配置集

    配置相关的如果都放到一个配置文件中会很乱难维护

    所以把配置文件进行拆分,spring相关的放spring配置文件,mybatis相关的放mybatis配置文件…

    Nacos也可以做到

    1、抽取出多个配置文件

    image-20220729095020493

    其他配置文件同理

    image-20220729095049304

    2、bootstrap.properties指定加载多配置集

    这里的spring.cloud.nacos.config.extension-configs[0].data-id意思就是说,集合里的元素是一个个数组,数组里有是一个个对象所以第一个元素可以赋值多次

    下面配置也是同理

    # 配置中心加载配置文件
    spring.application.name=mall-coupon
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    spring.cloud.nacos.config.namespace=8c4aa2e1-412b-4992-90d7-b74cf3abbef1
    spring.cloud.nacos.config.group=11
    
    # 加载多配置集
    spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
    spring.cloud.nacos.config.extension-configs[0].group=11
    spring.cloud.nacos.config.extension-configs[0].refresh=true
    
    spring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yml
    spring.cloud.nacos.config.extension-configs[1].group=11
    spring.cloud.nacos.config.extension-configs[1].refresh=true
    
    spring.cloud.nacos.config.extension-configs[2].data-id=other.yml
    spring.cloud.nacos.config.extension-configs[2].group=11
    spring.cloud.nacos.config.extension-configs[2].refresh=true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    3、测试

    我们注释掉所有本地的yml配置并重启

    image-20220729095923691

    image-20220729102516969

    总结

    微服务任何配置信息,任何配置文件都可以放在配置中心中

    线上环境的时候我们可以把所有配置都放在配置中心,微服务中只保留一个bootstrap.properties文件说明加载配置中心哪些配置文件即可

    GateWay网关

    image-20220729124135801

  • 相关阅读:
    解压缩和压缩命令
    TetheringService 启动流程
    vue 一键导出数据为excel文件并附带样式 十分简单
    2023福建师范大学计算机考研信息汇总
    java入参为对象的(非基本数据类型int/float等)修改属性会影响原始对象
    制售《原神》外挂非法获利200万,外挂的危害有多大?
    离散数学笔记——集合
    Android学习笔记 1.6 Android应用结构分析
    计算机毕业论文微信小程序毕业设计开题报告ssm在线学习平台小程序+后台管理系统|前后分离VUE[包运行成功]
    SpringBoot内置工具类之断言Assert的使用与部分解析
  • 原文地址:https://blog.csdn.net/qq_45714272/article/details/126059481