为某网站做网站推广策划方案,网页美工培训班,全屏网站尺寸,网站制作昆山目录
基本介绍
代码实战
架构说明
RequestOriginParser的实现类
网关添加请求头
配置授权规则 基本介绍
授权规则可以对请求方来源做判断和控制。 很多时候#xff0c;我们需要根据调用来源来判断该次请求是否允许放行#xff0c;这时候可以使用 Sentinel 的来源…目录
基本介绍
代码实战
架构说明
RequestOriginParser的实现类
网关添加请求头
配置授权规则 基本介绍
授权规则可以对请求方来源做判断和控制。 很多时候我们需要根据调用来源来判断该次请求是否允许放行这时候可以使用 Sentinel 的来源访问控制黑白名单控制的功能。来源访问控制根据资源的请求来源origin限制资源是否通过若配置白名单则只有请求来源位于白名单内时才可通过若配置黑名单则请求来源位于黑名单时不通过其余的请求通过。 授权规则可以对调用方的来源做控制有白名单和黑名单两种方式。 白名单来源origin在白名单内的调用者允许访问 黑名单来源origin在黑名单内的调用者不允许访问 来源访问控制规则AuthorityRule非常简单主要有以下配置项
resource资源名即限流规则的作用对象。limitApp对应的黑名单/白名单不同 origin 用 , 分隔如 appA,appB。strategy限制模式AUTHORITY_WHITE 为白名单模式AUTHORITY_BLACK 为黑名单模式默认为白名单模式。
比如我们希望控制对资源 test 的访问设置白名单只有来源为 appA 和 appB 的请求才可通过则可以配置如下白名单规则
AuthorityRule rule new AuthorityRule();
rule.setResource(test);
rule.setStrategy(RuleConstant.AUTHORITY_WHITE);
rule.setLimitApp(appA,appB);
AuthorityRuleManager.loadRules(Collections.singletonList(rule));
Sentinel是通过RequestOriginParser这个接口的parseOrigin来获取请求的来源的。
public interface RequestOriginParser {/*** 从请求request对象中获取origin获取方式自定义*/String parseOrigin(HttpServletRequest request);
} 这个方法的作用就是从request对象中获取请求者的origin值并返回。
默认情况下sentinel不管请求者从哪里来返回值永远是default也就是说一切请求的来源都被认为是一样的值default。因此我们需要自定义这个接口的实现让不同的请求返回不同的origin。 代码实战
架构说明 一个请求必须经由gateway网关添加请求头key为originvalue为gateway才能被访问service否则被sentinel阻塞限制访问。 RequestOriginParser的实现类
再service服务中我们定义一个RequestOriginParser的实现类
Component
public class HeaderOriginParser implements RequestOriginParser {Overridepublic String parseOrigin(HttpServletRequest request) {// 1.获取请求头String origin request.getHeader(origin);// 2.非空判断if (StringUtils.isEmpty(origin)) {origin blank;}return origin;}
} 我们会尝试从request-header中获取origin值。 网关添加请求头
既然获取请求origin的方式是从reques-header中获取origin值我们必须让所有从gateway路由到微服务的请求都带上origin头。
利用一个GatewayFilter来实现AddRequestHeaderGatewayFilter。修改gateway服务中的application.yml添加一个defaultFilter
spring:cloud:gateway:default-filters:- AddRequestHeaderorigin,gatewayroutes:# ...略
这样从gateway路由的所有请求都会带上origin头值为gateway。而从其它地方到达微服务的请求则没有这个头。
配置授权规则
添加一个授权规则放行origin值为gateway的请求。 SentinelHystrixresilience4j隔离策略信号量隔离并发线程数限流线程池隔离/信号量隔离信号量隔离熔断降级策略基于响应时间、异常比率、异常数基于异常比率基于异常比率、响应时间实时统计实现滑动窗口LeapArray滑动窗口基于 RxJavaRing Bit Buffer动态规则配置支持多种数据源支持多种数据源有限支持扩展性多个扩展点插件的形式接口的形式基于注解的支持支持支持支持限流基于 QPS支持基于调用关系的限流有限的支持Rate Limiter流量整形支持预热模式、匀速器模式、预热排队模式不支持简单的 Rate Limiter 模式系统自适应保护支持不支持不支持控制台提供开箱即用的控制台可配置规则、查看秒级监控、机器发现等简单的监控查看不提供控制台可对接其它监控系统