1. 远程过程调用 OpenFeign
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2. Swagger API注释
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
3. Hystrix断路器(服务熔断降级)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
服务雪崩:多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C有调用其他微服务,这就是所谓的扇出,如扇出的链路上的某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统雪崩,所谓的雪崩效应。
Hystrix是一个用于分布式系统的延迟和容错的开源库。在分布式系统里面,许多依赖不可避免的调用失败,比如超时,异常等Hytrix能够保证在一个依赖出问题的情况下,不会导致整个服务失败,避免级联故障,以提高分布式系统的弹性。断路器本身是一种开关装置,当某个服务单元发生故障,向调用方法返回一个服务预期的,可处理的备选响应。而不是长时间等待或者抛出调用方法无法处理的异常,这样就保证了服务调用方的线程不被长时间,比必要的占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩
服务降级:服务超时或报错的时候,会返回一个预先定义的异常处理。这个应该就是服务降级。
服务降级是在客户端完成和服务端没有关系,整体资源不够用,忍痛将某些服务先关掉,待度过难关,再回来开启。
服务熔断:熔断后可以自己恢复,某些情况下服务调用失败达到阈值以后,就会触发熔断机制,此时服务就会不可用,当一段时间后系统会尝试重新访问,如果成功了,就会慢慢恢复调用。熔断要配置的参数比降级配置的参数要多。服务降级值会处理异常。我理解的熔断应该和系统负责有关,当某一段时间内系统负载过重,会造成某些服务不可用,此时系统需要降低负载,所以发生熔断,服务降级则时由于调用异常或超时后,返回一个预先定义的异常处理结果。
熔断机制是对雪崩效应的一种微服务链路保护机制,当扇出链路的某个微服务不可用或者响应时间太长,会进行服务的降级,进而熔断该节点的微服务的调用,快速返回错误的响应信息。当检测到该节点微服务响应正常后恢复调用链路,在SpringCloud框架机制通过Hystrix实现,Hystrix会监控微服务调用的状况,当失败的调用到一个阈值,缺省是 5秒内20此调用失败后就会启动熔断机制,熔断机制的注解是@HystrixCommand
服务熔断和服务降级的区别就是服务降级可以允许关闭某些服务。服务熔断不能关闭服务
服务限流:
4. Gateway微服务网关
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
可以使用各种匹配的条件将请求对应到不同的处理单元
5.Config 配置中心
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
将一些通用的配置,放到配置中心,方便修改
6.Bus消息总线
消息总线其实就是消息中间件
7.Stream
Stream的作用是用来屏蔽不同消息中间件的差异,使得两个微服务可以使用不同的消息中间件进行通讯
8.Sleuth
实现微服务调用链路监控,每条链路之间的耗时,多少链路
8.Nacos
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
Nacos集成了配置中心,注册中心的功能
9.Sentinel
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
流控,服务熔断,服务降级
10.Seata
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Spring Cloud Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Spring Cloud Seata -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
分布式事务中间件,保证分布式事务原子性的