Sentionel流控授权规则

这篇具有很好参考价值的文章主要介绍了Sentionel流控授权规则。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

很多时候,我们需要根据调用来源来判断该次请求是否允许放行,这时候可以使用 Sentinel 的来源访问控制的功能。来源访问控制根据资源的请求来源(origin)限制资源是否通过:

  • 若配置白名单,则只有请求来源位于白名单内时才可通过;
  • 若配置黑名单,则请求来源位于黑名单时不通过,其余的请求通过。

例如:活动和订单都会调用用户系统获取用户信息,我们可以将活动设置为黑名单

Sentionel流控授权规则,sentinel,python,数据库,开发语言

Sentionel流控授权规则,sentinel,python,数据库,开发语言
上面的【资源名】和【授权类型】不难理解,但是【流控应用】怎么填写呢?

其实这个位置要填写的是来源标识,Sentinel提供了RequestOriginParser 接口来处理来源。
只要Sentinel保护的接口资源被访问,Sentinel就会调用RequestOriginParser 的实现类去解析访问来源。

第1步: 自定义来源处理规则
 @GetMapping("/test")
    public String threads1(){
    try{
           System.out.println(System.currentTimeMillis());
            Thread.sleep(3000);
           System.out.println(System.currentTimeMillis());
        }catch (InterruptedException e){
            e.printStackTrace();
        }
        return "测试流控效果===授权规则test";
    }
@Component
public class RequestOriginParserDefinition implements RequestOriginParser{
    @Override
    public String parseOrigin(HttpServletRequest request) { 
        String serviceName = request.getParameter("serviceName"); 
        return serviceName;
    }
}

Sentionel流控授权规则,sentinel,python,数据库,开发语言

第2步: 授权规则配置

这个配置的意思是只有serviceName=app不能访问(黑名单)
Sentionel流控授权规则,sentinel,python,数据库,开发语言
正常测试

Sentionel流控授权规则,sentinel,python,数据库,开发语言
异常测试:
Sentionel流控授权规则,sentinel,python,数据库,开发语言

在feign中将参数设置进去

openFeign的应该,涉及到拦截器
当我们请求的时候,对服务消费者进行拦截,将项目名称或者拦截参数设置到请求头中,在服务消费者中做授权规则限制。

服务消费者添加拦截器

添加拦截器

public class FeignAuthRequestInterceptor  implements RequestInterceptor {
    private String serviceName;

    public FeignAuthRequestInterceptor(String serviceName) {
        this.serviceName = serviceName;
    }
    @Override
    public void apply(RequestTemplate template) {
        template.header("serviceName",serviceName);
    }
}

注册拦截器

@Configuration
public class FeignConfig {
    @Value("${spring.application.name}")
    private String serviceName;

    /**
     * 自定义拦截器
     * @return
     */

    @Bean
    public FeignAuthRequestInterceptor feignAuthRequestInterceptor(){
        return new FeignAuthRequestInterceptor(serviceName);
    }
}
spring
 application:
     name: msb-order
服务提供者设置规则
@Component
public class RequestOriginParserDefinition implements RequestOriginParser {
    @Override
    public String parseOrigin(HttpServletRequest httpServletRequest) {
        String serviceName =httpServletRequest.getHeader("serviceName");

        return serviceName;
    }
}
添加规则

Sentionel流控授权规则,sentinel,python,数据库,开发语言

正常请求
Sentionel流控授权规则,sentinel,python,数据库,开发语言
请求被拦截
Sentionel流控授权规则,sentinel,python,数据库,开发语言文章来源地址https://www.toymoban.com/news/detail-550065.html

这个请求的异常对于实际应用非常的不友好,我们应该做统一的异常处理

到了这里,关于Sentionel流控授权规则的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Sentinel授权规则和规则持久化

    大家好我是苏麟 , 今天说说Sentinel规则持久化. 授权规则 授权规则可以对请求方来源做判断和控制。 授权规则 基本规则 授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式。 白名单:来源(origin)在白名单内的调用者允许访问 黑名单:来源(origin)在黑名单内

    2024年02月08日
    浏览(52)
  • 【微服务】Feign 整合 Sentinel,深入探索 Sentinel 的隔离和熔断降级规则,以及授权规则和自定义异常返回结果

    在前文中,介绍了 Sentinel 的流控模式和流控效果,然而限流只是一种预防措施,虽然可以尽量避免因为并发问题而引起的服务故障,但服务仍然可能因其他因素而发生故障。为了将这些故障控制在一定范围内,以避免雪崩效应的发生,我们需要依赖线程隔离(舱壁模式)和熔

    2024年02月08日
    浏览(39)
  • Sentinel 流控-链路模式

    A B C 三个服务 A 调用 C B 调用 C C 设置流控 -链路模式 - 入口资源是 A 链路 入口 A 问题: 为啥没有流控处理的消息而是访问报错??? 分析:        1.  使用 注解 @SentinelResource 则无法使用全局异常处理        2. 增加注解 blockHandler 属性以及方法 再次访问 可以正常返回流

    2024年02月21日
    浏览(38)
  • 服务流控(Sentinel)

    限流实现 注册流控规则 效果呈现 引入依赖 增加切面 启动类 配置类 注解使用 增加流控规则 效果

    2024年02月20日
    浏览(33)
  • Sentinel服务熔断和流控

    Sentinel ​ 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以 流量 为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 源码地址:https://github

    2024年02月09日
    浏览(39)
  • SpringCloudAlibaba之Sentinel(一)流控篇

    为什么使用Sentinel,这是一个高可用组件,为了使我们的微服务高可用而生 我们的服务会因为什么被打垮? 一,流量激增    缓存未预热,线程池被占满 ,无法响应 二,被其他服务拖垮,比如第三方的接口响应慢 三,异常没有处理:缓存击穿,缓存穿透等等 总之而言:系

    2024年02月14日
    浏览(34)
  • Sentinel限流--流控模式与限流效果

    簇点链路就是项目内的调用链路(controller - servcie - mapper ),链路中被监控的每个接口就是一个资源。 默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint),Endpoint可以理解为controller中的每一个方法,每一个端点(Endpoint)就是调用链路中的一个资源。 流控、熔断等都是

    2024年02月17日
    浏览(41)
  • Spring Cloud Gateway 整合 sentinel 实现流控熔断

            在微服务架构中,网关层可以屏蔽外部服务直接对内部服务进行调用,对内部服务起到隔离保护的作用,网关限流,顾名思义,就是通过网关层对服务进行限流,从而达到保护后端服务的作用。         Sentinel 从 1.6.0 版本开始就提供了 Spring Cloud Gateway 的适配

    2023年04月23日
    浏览(47)
  • SpringCloudAlibaba微服务实战系列(三)Sentinel1.8.0+流控

    Sentinel被称为分布式系统的流量防卫兵,是阿里开源流量框架,从 服务限流、降级、熔断等 多个纬度保护服务。Sentinel同时提供了简洁易用的控制台,可以看到接入应用的秒级数据,并可以在控制台设置一些规则保护应用。它比Hystrix支持的范围广泛,如Spring Cloud、Dubbo、gRP

    2024年02月16日
    浏览(38)
  • Sentinel的另外三种流控模式(附代码详细介绍)

    前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍Sentinel的其他三种流控模式,后续文章将详细介绍Sentinel的其他知识。 如果文章有什么需要改进的地方还请大佬不吝赐教 👏👏。 小威在此先感谢各位大佬啦~~🤞🤞 🏠个人主页:小威要向

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包