服务熔断原理:
Closed:关闭状态(断路器关闭),所有请求都正常访问。
Open:打开状态(断路器打开),所有请求都会被降级。Hystix 会对请求情况计数,
当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全关闭。默认失败比
例的阈值是 50%,请求次数最少不低于 20 次。
Half Open:半开状态,open 状态不是永久的,打开后会进入休眠时间(默认是 5S)。
随后断路器会自动进入半开状态。此时会释放 1 次请求通过,若这个请求是健康的,
则会关闭断路器,否则继续保持打开,再次进行 5 秒休眠计时。
(4)Feign: 远程调用组件
后台系统中, 微服务和微服务之间的调用可以通过 Feign 组件来完成.
Feign 组件集成了 Ribbon 负载均衡策略(默认开启的, 使用轮询机制), Hystrix 熔断器
(默认关闭的, 需要通过配置文件进行设置开启)
被调用的微服务需要提供一个接口, 加上@@FeignClient("url")注解
调用方需要在启动类上加上@EnableFeignClients, 开启 Feign 组件功能.
(5)Gateway: 路由/网关
对于项目后台的微服务系统, 每一个微服务都不会直接暴露给用户来调用的, 但是如果
用户知道了某一个服务的 ip:端口号:url:访问参数, 就能直接访问你. 如果再是恶意访问,
恶意攻击, 就会击垮后台微服务系统.因此, 需要一个看大门的大 boss, 来保护我们的
后台系统.
Gateway 支持过滤器功能,对请求或响应进行拦截,完成一些通用操作。
Gateway 提供两种过滤器方式:“pre”和“post”
pre 过滤器,在转发之前执行,可以做参数校验、权限校验、流量监控、日志输出、
协议转换等。
post 过滤器,在后端微服务响应之后并且给前端响应之前执行,可以做响应内容、
响应头的修改,日志的输出,流量监控等。
Gateway 还提供了两种类型过滤器
(一) GatewayFilter:局部过滤器,针对单个路由
1. GatewayFilter 局部过滤器,是针对单个路由的过滤器。
2. 在 Spring Cloud Gateway 组件中提供了大量内置的局部过滤器,对请求和响应
做过滤操作。
3. 遵循约定大于配置的思想,只需要在配置文件配置局部过滤器名称,并为其指定对
应的值,就可以让其生效.
(二) GlobalFilter :全局过滤器,针对所有路由.
1. GlobalFilter 全局过滤器,不需要在配置文件中配置,系统初始化时加载,并作用
在每个路由上。
2. Spring Cloud Gateway 核心的功能也是通过内置的全局过滤器来完成。
3. 自定义全局过滤器步骤:
1 定义类实现 GlobalFilter 和 Ordered 接口
2 复写方法
3 完成逻辑处理
(6)Spring Cloud Config
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所
以需要分布式配置中心组件。在 Spring Cloud 中,有分布式配置中心组件 spring
Cloud Config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程
Git 仓库中.