逆风
V1
2023/04/13阅读:68主题:全栈蓝
Sential简介
Sentinel
Sentinel 是一个流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形(就是限流)、流量降级等多个维度来保证服务的可用性。
设计理念
上游「流量大」通过限流控制流量匀速,发生指定异常,设置对应的降级。
下游是服务问题通过熔断降级进行控制,熔断就是断开,降级就是返回默认值。
流量控制控制的是上游,熔断降级控制的是下游。
demo
分为原生使用和注解使用。
注解是采用AOP的方式进行解耦合。
调用原生api的时候先抛出框架异常、再抛出业务异常
流控规则分为qps、线程
dashboard
C/S架构,服务端需要单独部署,客户端启动主要注册到服务端。需要配置服务端地址
自定义异常:根据异常种类,返回相应的信息。
复杂限流
关联限流
假设一个资源有读和写,当写操作超过阈值,会对读操作进行限流
关联资源访问超过阈值,对应的资源会被限流
链路
当下层接口被多个上级接口调用,会对指定的上级接口进行限流,而不会对所有接口进行限流。
源码分析
刻意对多维度进行限流,但是核心都是相同,每个解耦合的方式不太一样
-
注解:核心是AOP进行解耦,定义一个aspect,扫描对应的注解,@Around在方法执行之前,调用API -
http请求:通过拦截器进行限流 -
RestTemplate:采用和Ribbon差不多的方式,通过拦截器定制RestTemplate -
Feign:JDK动态代理,在代理方法中直接调用API
作者介绍
逆风
V1