大家好,我是Milo,今天给大家介绍下SpringBoot是如何继承Sentinel实现界面流控的Sentinel控制台是我上一篇阿里出品的Sentinel控制台是什么?在文章中,我们已经介绍了如何准备Sentinel控制台。可以直接参考;Sentinel客户端项目搭建首先,我们来创建一个测试项目。这里初始化项目的url建议填阿里云的地址,会有惊喜😅http://start.aliyun.com接下来就是常规操作了,一路next,注意下图位置的提示:就像你之前创建项目一样,这里只需要勾选Sentinel#128517128640;创建项目后,我们发现在pom文件中引入了如下依赖。有的朋友看了网上的博客,也会有下面的方法,指定版本号com.alibaba.cloudspring-cloud-starter-alibaba-sentinel2.1.0.RELEASE如果你使用我推荐的阿里云的Url,你会发现Sentinel的版本号定义了父项目,所以不用担心Cloud的各个组件的兼容性spring-boot.version}pomimport</dependency>com.alibaba.cloudspring-cloud-alibaba-dependencies${spring-cloud-alibaba.version}pomimport打开项目配置文件,你会发现它已经自动帮我们添加了配置,真是超级方便👏server.port=8083#应用名spring.application.name=springcloud-sentinel#Sentinel控制台地址spring.cloud.sentinel.transport.dashboard=localhost:8080#取消Sentinel控制台延迟加载#默认Sentinel客户端第一次调用时会初始化,开始向控制台发送心跳包#配置sentinel.eager=true时,取消Sentinel控制台的懒加载功能spring.cloud.sentinel.eager=true#如果有多个套网络,无法正确获取本地IP,需要使用以下参数设置IP地址当前机器的ss可以被管理控制台从外部访问#spring.cloud.sentinel.transport.client-ip=#sentinelconfigurespring.application.name=frmsspring.cloud.sentinel.transport.dashboard=localhost:8080spring.cloud.sentinel.transport.heartbeat-interval-ms=500如何以编程方式定义资源定义官网提供的demopackagecom.milo.sentinel;importcom.alibaba.csp.sentinel.Entry;importcom.alibaba.csp.sentinel.SphU;importcom.alibaba.csp.sentinel.slots.block.BlockException;importcom.alibaba.csp.sentinel.slots.block.RuleConstant;importcom。alibaba.csp.sentinel.slots.block.flow.FlowRule;importcom.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importjava。util.ArrayList;importjava.util.List;/***项目入口*@authorMiloLee*@date2021-3-2019:07**/@SpringBootApplicationpublicclassSentinelApplication{publicstaticvoidmain(String[]args){SpringApplication.run(SentinelApplication.class,args);//Configurationrules.initFlowRules();while(true){//从1.5.0版本开始,可以直接使用try-with-resources特性try(Entryentry=SphU.entry("HelloWorld")){//通过受保护的逻辑Thread.sleep(300);System.out.println("helloworld");}catch(BlockException|InterruptedExceptionex){//处理流控逻辑System.out.println("blocked!");}}}privatestaticvoidinitFlowRules(){Listrules=newArrayList<>();FlowRulerule=newFlowRule();rule.setResource("HelloWorld");rule.setGrade(RuleConstant.FLOW_GRADE_QPS);//设置limitQPSto20.rule.setCount(20);rules.add(rule);FlowRuleManager.loadRules(rules);}}注解定义@SpringBootApplicationpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ServiceApplication.class,args);}}@ServicepublicclassTestService{@SentinelResource(value=“sayHello”)name);}}@SentinelResource注解用于标识资源是受限还是降级。上例中注解的属性sayHello表示资源名称。启动控制台java-Dserver.port=8080-Dcsp.sentinel.dashboard.server=localhost:8080-Dproject.name=sentinel-dashboard-jarsentinel-dashboard-1.8.1.jar控制台配置规则我们使用的控制台操作下面用编程定义的一个例子。当您启动我们的服务时,我们会发现除了sentinel-dashboard之外,还多了一个milolee-sentinel。这是我们的服务。它的名字其实对应的就是我们配置文件中定义的应用名称:#应用名称spring.application.name=milolee-sentinel点击机器列表。如果你能在这里找到你的机器,它就成功启动了。实时监控集群点链路流控规则配置为我们的资源HelloWorld配置流控规则,它的QPS(requestspersecond)为1,如图:通过查看实时监控,我们发现降级规则配置已经生效。向我们的资源HelloWorld添加降级规则配置。如果QPS大于1,平均响应时间大于20ms,则接口down时,接口2秒无法访问,然后自动恢复。目前,这些规则只在内存状态下生效。应用重启后,规则将丢失。在后续文章中,我们将继续研究动态规则💯关于控制台的使用,可以参考官方文档了解更多详情https://sentinelguard.io/zh-cn/docs/dashboard.html