• 八、Sentinel服务保护框架


    服务保护

    服务接口保护的方案有:黑名单和白名单、对IP实现限流/熔断机制、服务降级、服务隔离机制。

    服务限流:在高并发的情况下,客户端的请求数量超出我们设置的阈值,开启自我保护机制。直接执行服务降级的方法,不执行业务逻辑,走本地fallback方法。

    服务降级:在高并发的情况下,为了防止用户一直等待,采用限流或者熔断机制,保护我们的服务,不执行业务逻辑,走本地fallback方法。

    服务雪崩效应

    默认情况下,tomcat/jetty服务器只会有一个线程池处理所有接口的请求。这样的话就是在高并发的情况下, 如果客户端所有的请求都堆积到同一个接口上,那么会产生该服务器的所有的线程都在处理该接口,可能会导致其他的接口无法访问,短暂没有线程去访问。

    解决方案:

    服务隔离机制:线程池隔离或者信号量隔离机制。

    线程池隔离:每个接口都有自己独立的线程池维护我们的请求,每个线程池互不影响,缺点:占用服务器内存非常大。

    信号量隔离:设置处理每个服务的线程数量的阈值,超出该线程数量,则拒绝访问。

    Sentinel控制台

    我们可以使用代码来管理项目,但是配置写死显然不好。这里直接用控制台来管理项目,可以实现动态配置管理项目。

    首先 下载Sentinel 的jar包。然后使用下面命令启动控制台

    java -Dserver.port=8718 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dcsp.sentinel.api.port=8719 -jar sentinel-dashboard.jar
    

    后端启动

    nohup java -Dserver.port=8718 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dcsp.sentinel.api.port=8719 -jar sentinel-dashboard.jar &
    

    导入依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-alibaba-sentinel</artifactId>
        <version>0.2.2.RELEASE</version>
    </dependency>
    

    配置文件

    cloud:
        nacos:
          discovery:
            server-addr: ip:port
        sentinel:
          transport:
            dashboard: ip:port
          eager: true
    

    进入控制台就可以增删规则了

    不过要注意的是,如果接口没有使用@SentinelResource注解,那么资源名就是访问接口的路径,如果使用了@SentinelResource注解,那么资源名就是注解指定的名称。

    控制台与注解结合使用,可以指定限流、降级/熔断时候的处理方法。

  • 相关阅读:
    gridview列前加复选框需要注意的一点
    为什么日历控件放在panel无法显示出来
    表格翻页
    The SDK platform-tools version ((21)) is too old to check APIs compiled with API 23
    win7怎么安装和启动 jboss
    (转)如何制作nodejs,npm “绿色”安装包
    Can't use Subversion command line client: svn
    (转)Android自定义属性时format选项( <attr format="reference" name="background" /> )
    本地拒绝服务漏洞修复建议
    (转)Android 读取联系人(详细)
  • 原文地址:https://www.cnblogs.com/ylcc-zyq/p/13162949.html
Copyright © 2020-2023  润新知