【笔记于学习尚硅谷课程所作】

1、简介

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

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

结合SpringCloud Alibaba我们最终的技术搭配方案:

  • SpringCloud Alibaba-Nacos:注册中心(服务发现/注册)
  • SpringCloud Alibaba-Nacos:配置中心(动态配置管理)
  • SpringCloud-Ribbon:负载均衡
  • SpringCloud-Feign:声明式HTTP客户端(调用远程服务)
  • SpringCloud Alibaba-Sentinel:服务容错(限流、降级、熔断)
  • SpringCloud-Gateway:API 网关(webflux 编程模式)
  • SpringCloud-Sleuth:调用链监控
  • SpringCloud Alibaba-Seata:原Feescar, 即分布式事务解决方案

在gulimall-common项目的pom.xml中引入spring-cloud-alibaba-dependencies

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2、Nacos

2.1下载

1.下载nacos-server:https://github.com/alibaba/nacos/releases

2.启动nacos-server(启动bin中的startup.cmd)

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

4.使用默认的nacos/nacos登陆

2.2 注册中心

1.在common项目中导入依赖

<!--服务注册/发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

2.在项目中配置application.yml

	application:
   		name: gulimall-coupon
   		
cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

3.启动类添加注解@EnableDiscoveryClient

2.3 配置中心

1…在common项目中导入依赖

<!--配置中心来做配置管理-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

2.在resources目录下添加配置文件bootstrap.properties

spring.application.name=gulimall-coupon

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

3.在配置中心添加gulimall-coupon.properties,可在里面实时更改配置

4.在调用属性的controller上添加@RefreshScope:动态获取和刷新,@Value("${配置项名}"):获取配置

5.优先使用配置中心的配置

2.4配置中心细节

  • 命名空间:配置隔离,默认public(保留空间)
  • 配置集:所有的配置的集合
  • 配置集id:Data ID
  • 配置分组:默认所有的配置集都属于:DEFAULT_GROUP

本次项目:每个微服务创建自己的命名空间,使用配置分组区分环境

3、远程调用Feign

1.引入feign的依赖(快速搭建项目时引入过)

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2.单独创建一个包feign,在包内声明接口,告诉SpringCloud这个接口需要调用远程服务

3.声明接口的每个方法都是调用的远程服务的哪个请求

@FeignClient("gulimall-coupon")
public interface CouponFeignService {

    @RequestMapping("/coupon/coupon/t")
    public R t();
}

4.开启远程调用的注解:@EnableFeignClients(basePackages = “com.hanhan.gulimall.coupon.feign”)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐