sentinel 整合spring cloud限流


sentinel 整合spring cloud限流

          

spring cloud基于http进行服务调用,大致过程如下:

服务提供端:提供http接口,并向服务中心注册服务信息

服务消费端:将服务端的http接口作为本地服务,从注册中心读取服务提供端信息,使用feign发起远程调用

     

                

                                   

相关依赖

        <!-- 服务注册与发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

       <!-- sentinel限流 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

          

              

                                   

示例

             

为简化处理,直接对url接口进行限流,不做服务调用

                         

         

application.yml

spring:
  application:
    name: hello-sentinel
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    sentinel:
      transport:
        dashboard: localhost:8081

限流可使用本地配置、或者sentinel dashboard配置

           

HelloController

@RestController
public class HelloController {

    @SentinelResource(value = "hello", blockHandler = "blockHandle")
    @RequestMapping("/hello")
    public String hello(){
        return "hello";
    }

    public String blockHandle(BlockException e){
        e.printStackTrace();
        return "被限流了";
    }
}

        

************

本地限流配置

           

                         

               

CustomFlowRule

public class CustomFlowRule implements InitFunc {

    @Override
    public void init() throws Exception {
        List<FlowRule> flowRules = new ArrayList<>();

        FlowRule flowRule = new FlowRule();
        flowRule.setResource("hello");
        flowRule.setCount(1);
        flowRule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_DEFAULT);
        flowRules.add(flowRule);

        FlowRuleManager.loadRules(flowRules);
    }
}

         

META-INF/services/com.alibaba.csp.sentinel.init.InitFunc

com.example.demo.rule.CustomFlowRule

     

jmeter 测试

             

             

             

2022-03-27 22:30:50.534  INFO 1791 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2022-03-27 22:30:50.547  INFO 1791 --- [           main] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP hello-sentinel 192.168.5.11:8080 register finished
2022-03-27 22:30:50.557  INFO 1791 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 2.227 seconds (JVM running for 2.824)
2022-03-27 22:31:04.044  INFO 1791 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-03-27 22:31:04.044  INFO 1791 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2022-03-27 22:31:04.049  INFO 1791 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 5 ms
INFO: Sentinel log output type is: file
INFO: Sentinel log charset is: utf-8
INFO: Sentinel log base directory is: /Users/huli/logs/csp/
INFO: Sentinel log name use pid is: false
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException

               

************

sentinel dashboard配置限流

     

启动sentinel dashboard

java -Dserver.port=8081 -Dcsp.sentinel.dashboard.server=localhost:8081 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
 
参数说明:
-Dserver.port=8081:指定控制台启动端口
-Dcsp.sentinel.dashboard.server:指定控制台地址和端口
-Dproject.name=sentinel-dashboard:指定控制台项目名称

                 

 localhost:8081,控制台配置流控策略

             

             

说明:若需使用本地降级方法,需在下方的hello配置流控规则

           

jmeter 测试

             

             

             

2022-03-28 08:50:29.165  INFO 853 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2022-03-28 08:50:29.198  INFO 853 --- [           main] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP hello-sentinel 192.168.5.11:8080 register finished
2022-03-28 08:50:29.210  INFO 853 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 3.315 seconds (JVM running for 4.03)
2022-03-28 08:52:05.792  INFO 853 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-03-28 08:52:05.793  INFO 853 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2022-03-28 08:52:05.802  INFO 853 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Completed initialization in 9 ms
INFO: Sentinel log output type is: file
INFO: Sentinel log charset is: utf-8
INFO: Sentinel log base directory is: /Users/huli/logs/csp/
INFO: Sentinel log name use pid is: false
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException
com.alibaba.csp.sentinel.slots.block.flow.FlowException

      

            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
启动哨兵(Startup Sentinel)是一款简单好用的开机启动项管理软件。软件能实时检测现在系统内所有的开机启动项,被修改的启动项能立刻显示。支持黑/白名单管理,加入白名单的程序即使被删除启动项也能启动;加入黑名单的程序再次加入时会被拒绝。如果对这方面有需求的可以下载体验下  怎么讲程序设置为开机启动设置为开机启动 设置开机启动的方法很多,最常用的是修改注册表,但是注册表这东西一般人都不会用,小编就叫大家一个最实用的方法,任何人都会。 1.先把你要启动的文件建个快捷方式放在桌面上; 2.然后用鼠标拖起(接下几步都不要放键); 3.拖到"开始"按钮,稍停,等自动弹出开始菜单; 4.等开始菜单弹出后,然后按"程序->启动"方向慢慢拖动.注意的是,每次拖到目标项后,要稍停,等鼠标停稳后再向下一项拖动.等拖到"启动"项后更是这样,等停稳后再松开左键; 怎么紧张开机自动启动软件: 用Windows命令禁止软件的自动启动 这个方法相对来说就比较简单一些。点击“开始”—“运行”(或者直接用WIN R也可以),接着输入“msconfig”敲回车。在系统配置实用程序的窗口中选择“启动”的页面。在这里列出了很多开机时候自动启动的程序,你可以把它们前面的小勾取消就可以了,点确定。接着,系统会提示你是否要重新启动,因为只有重新启动以后才能生效。 修改注册表彻底禁止软件的自动启动 有的朋友常会发现,明明禁止了某软件的启动,可是它有自动加载了,很是烦人。遇到这种情况我们可以用修改注册表来彻底禁止软件的自动启动。这种方法一般不推荐刚刚接触电脑的新手,因为稍有不慎你就可能出错,从而使系统出错而崩溃。 点击“开始”—“运行”输入“regedit”打开注册表编辑器,切换到 HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun先清理掉你不想启动的程序,注意不要乱删,出了问题本人概不负责。 然后在Run上点右键—权限—高级—添加—输入everyone—确定。然后把设置数值的拒绝勾上(其他都不要勾,这样不会影响到你想要启动的程序)然后确定。同样的方法把HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun也搞定。 特点:Startup Sentinel可方便用户想要确保他们的PC运行时是以最高速度,并提供最佳的性能。它可以帮助用户分析在Windows启动时运行的应用程序和那些不是绝对需要的操作系统的功能可以被禁用。用户还可以添加所谓的黑名单,这将防止他们在未来运行的具体方案。 开机的哨兵截图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值