Springboot整合 Spring Cloud Alibaba Sentinel

SpringBoot整合Sentinel springboot 整合 sentinel 简单示例 pom.xml 中添加依赖 <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>1.8.0</version> </dependency> 编写 Controller @Controller p 阅读详情
AI摘要

本文详细介绍了Sentinel流量治理组件的使用,包括下载控制台、整合SpringCloudAlibaba、实时监控、流控规则、熔断降级、热点参数限流、系统规则及规则持久化等内容,旨在帮助开发者提升微服务的稳定性和可用性。

1.Sentinel介绍

官方文档地址:
https://sentinelguard.io/zh-cn/docs/introduction.html
https://github.com/alibaba/Sentinel/wiki/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件。通过流控规则限制流量速率与并发,熔断规则依据异常比例/异常数或慢调用比例触发服务熔断,热点规则针对高频参数实施精细化限流,系统规则基于系统负载(如CPU、内存)动态调控流量以保障整体稳定性。

流控规则(阈值类型:QPS/并发线程数,阈值数值,模式:直接/关联/链路,效果:快速失败/Warm Up/排队等待)、熔断规则(策略:慢调用比例/异常比例/异常数。设置最大RT【最大响应时间】/比例阈值/熔断时长/最小请求数/统计时长)、热点规则(参数级QPS阈值及例外配置)和系统规则(LOAD/CPU/平均RT等全局阈值触发自适应限流),实现多维度流量管控与系统稳定性保障。

2.下载Sentinel控制台

注:根据版本关系选择Sentinel版本
https://sca.aliyun.com/docs/2023/overview/version-explain/?spm=5176.29160081.0.0.748065cbd69hSu
控制台下载地址:https://github.com/alibaba/Sentinel/releases
本人Spring Cloud Alibaba版本是 2023.0.0.0-RC1所以选择Sentinel版本为sentinel-dashboard-1.8.6.jar

在这里插入图片描述

3.启动Sentinel控制台

通过命令:java -jar .\sentinel-dashboard-1.8.6.jar
默认端口为8080
访问控制台http://localhost:8080/#/login。 账密默认为sentinel/sentinel

启动日志:

在这里插入图片描述
在这里插入图片描述

设置端口为8088 以及 修改账密为 test/123456 启动Sentinel
Powershell窗口
java ‘-Dserver.port=8088’ ‘-Dsentinel.dashboard.auth.username=test’ ‘-Dsentinel.dashboard.auth.password=123456’ -jar .\sentinel-dashboard-1.8.6.jar

cmd窗口
java -Dserver.port=8088 -Dsentinel.dashboard.auth.username=test -Dsentinel.dashboard.auth.password=123456 -jar D:\sentinel\sentinel-dashboard-1.8.6.jar

启动日志:
在这里插入图片描述

更多控制台配置项可查看地址: https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0
在这里插入图片描述

也可以写一个bat批处理文件,双击运行,不用每次都写命令:

在这里插入图片描述

在这里插入图片描述

4.整合Sentinel

1.引入SpringCloud Alibaba sentinel依赖

<dependencies>
    <!-- SpringCloud Alibaba sentinel-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
</dependencies>

2.添加yml配置,为项目模块设置sentinel控制台地址
配置好之后,先访问项目模块中的一个接口然后可在Sentinel控制台中查看

spring:
  application:
    name: @artifactId@
  profiles:
    active: ${profiles.active}
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
    sentinel:
      transport:
        dashboard: 127.0.0.1:8088
        web-context-unify: false #流控模式为链路时将调用链路放开,不进行默认收敛

在这里插入图片描述

5.Sentinel控制台规则介绍

1)实时监控

查看每个接口QPS信息
在这里插入图片描述

2)簇点链路

实时的去拉取指定客户端(显示到sentinel控制台的服务)接口的运行情况。它一共提供两种展示模式:一种用树状结构展示资源的调用链路,另外一种则不区分调用链路展示资源的实时情况。
注意: 簇点链路监控是内存态的信息,它仅展示启动后调用过的资源。

3)流控规则(flow control)

监控应用流量的QPS或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。
应用场景:应对洪峰流量:秒杀,大促,下单,订单回流处理,付费场景,Api Gateway 网关。
通常会在服务提供端进行流控。

3.1)QPS

每秒请求数,就是说服务器在一秒的时间内处理了多少个请求。

设置每秒超过2个请求便进行流控:
在这里插入图片描述

多余的请求被流控:
在这里插入图片描述

自定义流控信息:
@SentinelResource注解介绍:https://github.com/alibaba/Sentinel/wiki/%E6%B3%A8%E8%A7%A3%E6%94%AF%E6%8C%81

@GetMapping("/testUser")
    @SentinelResource(value = "testUser",blockHandlerClass = {BlockHandler.class},blockHandler = "flowBlockHandler")
    public AjaxResult user() {
        AjaxResult ajax = AjaxResult.success();
        return ajax;
    }
public class BlockHandler {

    public static AjaxResult flowBlockHandler(BlockException blockException){
        AjaxResult ajax = AjaxResult.error("服务器繁忙,请稍后再试");
        return ajax;
    }

}

流控信息如下:
在这里插入图片描述

3.2)并发线程数

并发数控制通常在调用端进行配置。
用于保护业务线程池不被慢调用耗尽。Sentinel并发控制不负责创建和管理线程池,而是简单统计当前请求上下文的线程数目(正在执行的调用数目),如果超出阈值,新的请求会被立即拒绝。
QPS设置1和并发线程数设置为1区别:
QPS:每秒请求数为1。
并发线程数:当我第一个请求进来,如果一直在处理中,没有响应。其他请求会被排除。等第一个请求处理完了,其他才会进来。

在这里插入图片描述

接口处理逻辑睡眠2s钟:

@GetMapping("/testUser")
    @SentinelResource(value = "testUser",blockHandlerClass = {BlockHandler.class},blockHandler = "flowBlockHandler")
    public AjaxResult user() {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        AjaxResult ajax = AjaxResult.success();
        return ajax;
    }

流控信息如下:
在这里插入图片描述

3.3)流控模式

基于调用关系的流量控制。调用关系包括调用方、被调用方;一个方法可能会调用其他方法,形成一个调用链路的层次关系。

直接:接口调用达到设置的阈值后直接被流控抛出异常。

关联:当两个接口之间具有资源争抢或者依赖关系的时候,这两个接口便有了关联。比如对数据库同一个字段的读操作和写操作存在争抢,读的速度过高会影响写的速度,写的速度过高会影响读的速度。如果放任读写操作争抢资源,则争抢本身带来的开销会降低整体的吞吐量。可使用关联限流来避免具有关联关系的资源之间过度的争抢,举例来说,read_db和write_db这两个资源分别代表数据库读写,我们可以给read_db设置限流规则来达到写优先的目的。

准备两个方法:写方法addTest、读方法getTest

	@GetMapping("/addTest")
    @SentinelResource(value = "addTest",blockHandlerClass = {BlockHandler.class},blockHandler = "flowBlockHandler")
    public AjaxResult addTest() {
        AjaxResult ajax = AjaxResult.success();
        return ajax;
    }

    @GetMapping("/getTest")
    @SentinelResource(value = "getTest",blockHandlerClass = {BlockHandler.class},blockHandler = "flowBlockHandler")
    public AjaxResult getTest() {
        AjaxResult ajax = AjaxResult.success();
        return ajax;
    }

如果addTest 接口每秒钟访问超过2次,则对getTest 进行限流。
在这里插入图片描述

借助JMeter进行测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当JMmeter执行addTest时,访问getTest。会发现getTest被流控。
在这里插入图片描述

链路:根据调用链路入口限流。
当一个业务方法被多个请求调用,可以通过配置该方法使某一个请求进行流控。

addTest 调用testFun
getTest 调用testFun

@Component
public class SysLoginService {
	@SentinelResource(value = "testFun",blockHandlerClass = {BlockHandler.class},blockHandler = "flowBlockHandler")
    public AjaxResult testFun(){
        return AjaxResult.success("业务方法");
    }
}
	@GetMapping("/addTest")
    @SentinelResource(value = "addTest",blockHandlerClass = {BlockHandler.class},blockHandler = "flowBlockHandler")
    public AjaxResult addTest() {
        return loginService.testFun();
    }

    @GetMapping("/getTest")
    @SentinelResource(value = "getTest",blockHandlerClass = {BlockHandler.class},blockHandler = "flowBlockHandler")
    public AjaxResult getTest() {
        return loginService.testFun();
    }

在这里插入图片描述

对testFun方法资源进行设置,当每秒钟超过2次调用该方法资源,则对addTest进行流控。
在这里插入图片描述

addTest被流控:

在这里插入图片描述

getTest都可以正常访问:
在这里插入图片描述

3.4)流控效果

快速失败:默认的流控效果,当QPS超过任意规则的阈值后,新的请求就会被立即拒绝,拒绝方式为抛出FlowException,这种方式适用于对系统处理能力确切已知的情况下,比如通过压测确定了系统的准确水位时。

Warm Up(激增流量):即预热/冷启动方式。当系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过“冷启动”让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。
冷加载因子:codeFactor默认为3,即请求QPS从threshold(阈值)/3开始,经预热时长逐渐升至设定的QPS阈值。

以下配置指:5秒钟后才会一次性接受10个请求:
在这里插入图片描述

多测几组会发现 结果会在设定的【预热时长】基础上加个2s左右。

第一组测试结果:
在这里插入图片描述

第二组测试结果:
在这里插入图片描述

在这里插入图片描述

排队等待(脉冲流量):会严格控制请求通过的间隔时间,即让请求以均匀的速度通过。
主要用于处理间隔性突发的流量,例如消息队列,在某一秒有大量的请求到来,而接下来的几秒钟则处于空闲状态。我们希望系统能够在接下来的空闲期间逐渐处理这些请求,而不是在第一秒直接拒绝多余的请求。
注:暂不支持QPS > 1000的场景。

通过JMeter模拟脉冲流量

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

测试结果:拒绝的QPS都为0,表明在超时时间5s内,所有的QPS都被处理。
在这里插入图片描述

进一步验证:同样的JMeter设置,改变流控效果,设置为快速失败,会发现每秒钟超过5个请求的被流控。

在这里插入图片描述

在这里插入图片描述

4)熔断降级

通常在服务消费端进行配置。

熔断降级官方介绍地址:https://github.com/alibaba/Sentinel/wiki/%E7%86%94%E6%96%AD%E9%99%8D%E7%BA%A7
概述:
除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。

4.1)熔断策略

慢调用比例:选择以慢调用比例作为阈值,需要设置允许的慢调用 RT(即最大的响应时间),请求的响应时间大于该值则统计为慢调用。当单位统计时长内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求响应时间小于设置的慢调用 RT 则结束熔断,若大于设置的慢调用 RT 则会再次被熔断。

最大RT:单位ms,当前资源接口允许的最大响应时间,大于当前设置的时间,就属于慢调用。
比例阈值:出现慢调用的比例(0-1之间),比如设置为0.1表示,10次请求出现一次就会熔断。
熔断时长:进入熔断状态的时长(单位s)。熔断时长过完之后,熔断器进入半开状态,如果再次请求响应时间大于设置的最大 RT,直接进入熔断状态。
最小请求数:最少请求的次数。
统计时长:单位ms,在这个时长之内请求的数目。

测试:在统计时长1s请求10次,如果出现1次慢调用则进入熔断。熔断时长为10s。
在这里插入图片描述

接口睡眠3s:

@GetMapping("/testUser")
    @SentinelResource(value = "testUser",blockHandlerClass = {BlockHandler.class},blockHandler = "flowBlockHandler")
    public AjaxResult user() {
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        AjaxResult ajax = AjaxResult.success();
        return ajax;
    }

通过JMeter进行测试:
猜想:JMeter请求10次,在浏览器中进行第11次调用,此时会进入熔断。10s后会进行一次请求并成功,但再次请求会直接熔断。
在这里插入图片描述

验证结果如下:
10次都请求成功
在这里插入图片描述

当我在浏览器请求第11次:
在这里插入图片描述

10s过后请求一次:请求成功
在这里插入图片描述

再进行一次请求:直接熔断
在这里插入图片描述

异常比例:当单位统计时长内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。

比例阈值:出现异常的比例(0-1之间),比如设置为0.1表示,10次请求出现一次异常就会熔断。
熔断时长:进入熔断状态的时长(单位s)。熔断时长过完之后,熔断器进入半开状态,如果再次请求还是报异常,直接进入熔断状态。
最小请求数:最少请求的次数。
统计时长:单位ms,在这个时长之内请求的数目。

和慢调用比例一样的测试方法。只是java方法体内抛出的是异常,这里就不进行测试记录了。

异常数:当单位统计时长内的异常数目超过阈值之后会自动进行熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。

异常数:出现异常的次数。
熔断时长:进入熔断状态的时长(单位s)。熔断时长过完之后,熔断器进入半开状态,如果再次请求还是报异常,直接进入熔断状态。
最小请求数:最少请求的次数。
统计时长:单位ms,在这个时长之内请求的数目。

和异常比例一样的测试方法。只是将比例换成了次数。这里就不进行测试记录了。

5)整合OpenFeign进行降级

当服务消费者 调用 服务提供者的时候,如果服务提供者发生异常,对这个服务提供者进行降级处理。

前提:nacos/sentinel/openfeign依赖都已添加。

1.yml配置文件开启OpenFeign对Sentinel的支持。

#openfeign整合sentinel
feign:
  sentinel:
    enabled: true

2.添加OpenFeign接口的fallback实现类,这个类必须实现OpenFeign的接口。
在这里插入图片描述

3.在OpenFeign接口的@FeignClient中添加fallback配置,并指向该OpenFeign接口的fallback实现类。
在这里插入图片描述

4.在服务提供者方法体中加入异常代码

@RequestMapping(value = "/feignIgnore/selectUserByUserName", method = RequestMethod.GET)
public SysUser selectUserByUserName(@RequestParam(value = "userName") String userName) {
    int a = 1/0;
    return userService.selectUserByUserName(userName);
}

测试结果:断点进入降级方法。
在这里插入图片描述

6)热点规则

热点参数限流官方地址:https://github.com/alibaba/Sentinel/wiki/%E7%83%AD%E7%82%B9%E5%8F%82%E6%95%B0%E9%99%90%E6%B5%81
在一个接口当中,某个参数的某些值访问量大,其他的值访问量平缓,这样可以针对某些访问量大的值进行流控。

以下配置为:id为5 和 6 这两个值,当每秒访问超过2次则进行限流。其他的值在每秒访问超过10次才会限流。
在这里插入图片描述

测试结果:
在这里插入图片描述
在这里插入图片描述

其他值:在第11次时被流控。
在这里插入图片描述

7)系统规则(兜底防护方案)

热点参数限流官方地址:https://github.com/alibaba/Sentinel/wiki/%E7%B3%BB%E7%BB%9F%E8%87%AA%E9%80%82%E5%BA%94%E9%99%90%E6%B5%81
Sentinel 系统自适应过载保护从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。

当遇到规则难配,强弱依赖难梳理时结合系统指标和服务容量,自适应动态调整流量。

系统规则支持以下的模式:
Load 自适应(仅对 Linux/Unix-like 机器生效):系统的 load1 作为启发指标,进行自适应系统保护。当系统 load1 超过设定的启发值,且系统当前的并发线程数超过估算的系统容量时才会触发系统保护(BBR 阶段)。系统容量由系统的 maxQps * minRt 估算得出。设定参考值一般是 CPU cores * 2.5。
CPU 使用率:当系统 CPU 使用率超过阈值即触发系统保护(取值范围 0.0-1.0),比较灵敏。
平均 RT:当单台机器上所有入口流量的平均 RT 达到阈值即触发系统保护,单位是毫秒。
并发线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。
入口 QPS:当单台机器上所有入口流量的 QPS 达到阈值即触发系统保护。

无需指定资源,直接在系统规则模块进行添加:
在这里插入图片描述

8)规则持久化

springcloud-sentinel 限流组件中文文档 资源是 Sentinel 中的核心概念之一。最常用的资源是我们代码中的 Java 方法。当然,您也可以更灵活的定义你的资源,例如,把需要控制流量的代码用 Sentinel API和包围起来即可。在下面的例子中,我们将作为资源(被保护的逻辑),用 API 包装起来。// 配置规则.// 1.5.0 版本开始可以直接利用 try-with-resources 特性// 被保护的逻辑// 处理被流控的逻辑");完成以上两步后,代码端的改造就完成了。您也可以通过我们提供的注解支持模块。 阅读详情

相关推荐

Springboot项目整合Sentinel

1.接入配置中心的情况下,优先整合配置中心,规则方便看。2.如果规则很少改动或者对于实时性不高,可以选择pull模式,实现简单改动代码量较少,相反就选择push模式。dashboard属于可以选配的一环,毕竟也要不了多少服务器成本。参考:sentinel代码 https://github.com/alibaba/Sentinel/tree/master官方文档 https://github.com/alibaba/Sentinel/wiki。

xianyuuu的博客 3161

SpringBoot集成sentinel

Sentinel 介绍 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征: 丰富的应用场景: Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等。 完备的实时监控: Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据

renhe96421的博客 1万+

用豆包辅助从头开始学习Java Spring Cloud(十五):Spring Cloud Gateway高级特性实战

本文基于Spring Cloud Alibaba 2022.0.0.0,实战Spring Cloud Gateway高阶特性:手写自定义局部过滤器实现签名校验;掌握过滤器排序机制与链路中断边界问题;实操权重、Cookie、IP多维度灰度发布;解决Sentinel异常绕过全局处理器问题;并掌握actuator监控、trace日志等线上故障排查手段,全面补齐网关生产级能力。

逸辰轩的博客 275

alibaba微服务组件sentinel

官方文档:https://sentinelguard.io/zh-cn/docs/introduction.html官方示例:https://github.com/alibaba/Sentinel/tree/master/sentinel-demo随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。资源

我的技术博客 2759

Spring Cloud Alibaba 架构-Sentinel整合nacos和gateway

sentinel官网: https://github.com/alibaba/Sentinel/wiki/%E4%B8%BB%E9%A1%B5sentinel 下载地址: https://github.com/alibaba/Sentinel/releasesnacos官网: https://nacos.io/zh-cn/docs/deployment.htmlnacos下载地址: https://github.com/alibaba/nacos/releases。

王小工小工历程 2013

Spring Cloud Alibaba进阶之路:Sentinel+Nacos持久化

1、pom.xml=========之前有关Sentinel和Nacos相关jar包已经添加过 ,所以只添加需要Sentinel和Nacos整合的包。

2301_76348344的博客 804

Spring Boot 整合 Spring Cloud 和 Spring Cloud Alibaba (六)【Sentinel】

参考文档 熔断、降级和限流 熔断:A服务调用B服务的某个功能,由于网络不稳定问题,或者B服务卡顿,导致功能时间超长。如果这样子的次数太多,我们直接将B断路了(A不再请求B接口),凡是调用B的直接返回降级数据,不必等待B的超长执行。这样B的故障问题,就不会级联影响到A 降级:整个网站处于流量高峰期,服务器压力剧增,根据当前业务情况以及流量,对一些服务和页面进行有策略的降级(停止服务,所有调用直接返回降级数据)。以此缓解服务器资源的压力,以保证核心业务的正常运行,同时也保持了客户端和大部分客户得到正确的响应。

weixin_32196893的博客 187

Spring Cloud Alibaba入门篇

学习条件 了解web三层架构 熟练应用SSM架构 了解Maven管理工具的使用 熟练使用SpringBoot,以及了解SpringBoot基本原理。 了解部分术语:应用、工具、耦合、负载等 温馨提示:注意版本问题,不复杂,就是呀呀的版本选不好,Game Over..... 没有从入门开始写,这点应该能入门,装x用的文章,首次编写,有疑问留言(看到也不想回你),没疑问,谢谢惠顾!喜欢就点个赞!...

愛していますササ的博客 976

spring boot +spring cloud + spring cloud alibaba入门搭建(四)整合服务熔断sentinel

1.上一编我们学习的了fegin 的fallback ,兜底类,可以在服务超时或者不可用时,返回我们的兜底方法,但是如果有大量的持续的请求的时候,请求也不是超时的,能正常返回的,但是系统一下子处理不过来的时候,就会阻塞当前的服务了,这个场景如何测试呢? 2.修改could-user 的tomcat线程处理数量为10,默认为200 server: port: 8990 tomcat: max-threads: 10 启动我们的服务 下载压测工具,jmeter,启动jmeter配置

qq976511508的博客 358

用于多种无人机协作的群体智能算法:综合综述

随着无人机技术的快速高水平发展,将多架无人机作为自主控制的编队应用于复杂情况是一个新兴领域的代表之一。在实现自主控制的挑战中,碰撞避免、任务分配、路径规划和编队重构是关键功能。本文对各种经典的无人机群智能算法进行了系统的总结和分析。

erjia_的博客 1万+

FreeRTOS CLI实战:5分钟搞定GD32串口终端移植(附LED控制源码)

本文详细介绍了如何在GD32芯片上快速移植FreeRTOS CLI(Command Line Interface)终端,实现串口交互式调试。通过DMA+空闲中断配置和LED控制命令实战,开发者可在5分钟内构建高效嵌入式调试工具,显著提升现场维护效率。

weixin_28707365的博客 450

spring-cloud alibaba Sentinel介绍 以及整合springboot使用

核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。重要规则定义 具体参考官方文档。

javaxueba的博客 603

YOLOv13添加轻量化的EMA模块Faster_EMA,轻量又涨点!map50提升4.56个点,召回率提升9.66!

本文介绍了YOLOv13模型的优化移植方法,通过添加Faster_EMA模块和超参数调整,使模型性能显著提升。主要修改包括:1) 创建新的模型配置文件yolov13-Faster_EMA.yaml;2) 在tasks.py中添加新模块;3) 修改__init__.py和block.py文件,新增Partial_conv3和DropPath类。优化后模型mAP50提升4.56%,召回率提升9.66%,验证了改进方案的有效性。代码实现了局部卷积和随机深度等先进技术,为YOLO系列模型性能优化提供了新思路。

FJN110的博客 2604

Spring-Cloud-Alibaba-Sentinel 高并发方法论,Spring-Boot微服务体系整合Sentinel进行熔断降级限流

Spring-Cloud-Alibaba-Sentinel 高并发方法论,Spring-Boot微服务体系整合Sentinel进行熔断降级限流

qq_41625866的博客 401

6.3 节深度拆解:Hermes Agent 多 Agent 协同执行链路的 4 层设计逻辑

拆解 Hermes 多 Agent 协同的 4 层工程化设计(协议层、编排层、执行层、适配层),聚焦协议层的强约束消息 Schema 如何解决 Agent 间语义不一致问题,并提供 `soul.md` 配置、GLM-4.7Flash 结构化输出验证及 v0.13.0/v0.14.0 版本实操避坑指南

weixin_42520239的博客 121

学Simulink——线控转向(Steer‑By‑Wire, SBW)路感模拟与回正控制仿真

本文详细介绍了线控转向(SBW)系统的Simulink建模方法,重点讲解了路感模拟与回正控制的实现原理。文章首先分析了SBW系统结构,建立了方向盘和前轮的动力学方程;随后分步骤演示了Simulink建模过程,包括方向盘二阶动力学、前轮位置闭环控制、路感反馈计算等核心模块;最后通过仿真验证了转向跟随性能、路感反馈效果和自动回正功能。文中还提供了工程实现的关键参数和注意事项,为开发真实的SBW系统提供了实用指导。该模型可扩展应用于主动转向、故障注入等高级功能开发。

xiaoheshang_123的博客 39

spring boot +spring cloud + spring cloud alibaba入门搭建(五)整合gateway 做网关,统一请求入口

1.上一编我们使用了sentinel 进行限流和熔断,这编我们整合gateway,可以先把上编的sentinel 的配置注释掉,这编主要介绍整合gateway 2.新建一个model ,cloud-gateway 3.引入gateway相关的依赖,编写pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=

qq976511508的博客 753

〖Python网络爬虫实战㊴〗- 极验滑块介绍(一)

我们对这个看到不陌生,现在,大多数平台都是用的是这个平台的验证码,我们今天来学习一下,极验滑块验证码的逆向,其他的都差不多。我们了解到这个平台提供了许多验证的方式。现在大多数还是滑块比较多,滑块验证码是一种常见的验证方式,其主要思路为用户通过拖动滑块来完成验证。具体流程如下:首先,用户需要进行滑块验证码的操作,网站会向用户展示一张图片,图片上通常会有一些随机的文字和背景干扰。用户需要通过鼠标拖动滑块,将其移动到指定位置上,通常是将滑块拖动到图片的相应位置上来完成验证。

爱吃饼干的小白鼠的博客 2878

Sentinel规则持久化到Nacos教程

如何将Sentinel规则持久化到Nacos

小薯条的博客 3934

【报错解决】OpenClaw 报错 `openclaw: command not found`:全局命令未加入系统 PATH 的深度排查与修复指南

在国产AI工具链开发中,OpenClaw作为关键命令行工具常出现command not found报错。本文深度分析该问题的根源——Linux环境变量PATH未包含用户级安装目录(~/.local/bin)。通过四种解决方案(临时PATH修改、永久配置、软链接、虚拟环境处理)和排错Checklist,揭示"命令存在却找不到"的本质是路径配置问题,特别适用于Docker/国产Linux/非root环境。文中强调理解Linux工具链机制对国产AI开发的重要性,并指出这是开发者掌握环境

博客 5381

【CASS精品教程】006:CASS7.1 道路设计参数文件打开无响应,提示roadpara解决办法,权威解决办法汇总

在用CASS7.1 软件进行断面法土方量计算,在生成断面图后,需要进行道路设计参数文件的设计,打开断面设计参数文件的时候,无响应,提示roadpara,如下所示: 道路设计参数文件 解决办法有三种 第一种方法:Win+R (1)64位系统:输入regsvr32 C:\Windows\SysWOW64\CellCtrl5.ocx,回车 (2)32位系统输入regsvr32 C:...

智慧空间实验室 1万+

Spring Cloud Alibaba 之 “Sentinel”

Spring Cloud Alibaba 之 “Sentinel”

mf97532的博客 777

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Spring Cloud Alibaba Sentinel 使用

Spring Cloud Alibaba Sentinel 使用

moxiong3212的博客 2610

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

spring cloud alibaba (4)-sentinel实现容错

摘要 本文介绍了阿里巴巴开源的分布式微服务流量控制组件Sentinel的安装与使用。首先对比了Sentinel与Hystrix的特性差异,然后详细说明了Sentinel控制台的下载和启动方法。文章演示了如何创建一个Spring Cloud Alibaba项目集成Sentinel,包括依赖配置、YAML文件设置以及控制器代码编写。启动项目后,成功在Nacos注册中心完成服务注册,并通过访问测试接口验证了Sentinel的基本功能。最后展示了Sentinel控制台的监控界面,为后续流量控制功能实现奠定了基础。

城南蝈蝈 805

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Spring Cloud Alibaba基础教程:使用Sentinel实现接口限流

推荐阅读:阿里SpringBoot进阶笔记涵盖了SpringBoot所有骚操作以上就是阿里(蚂蚁金服)大佬纯手打的SpringBoot进阶笔记的部分内容展示了,可以说是涵盖了SpringBoot的所有操作了。在这里为了不影响大家的阅读体验,就不继续把篇幅拉长了。完整版点击卡片。阿里SpringBoot进阶笔记t=O83At=O83A阿里SpringBoot进阶笔记https://fhos.uiuin.cn/cyDvPP。

2403_88996764的博客 715

Spring Cloud Alibaba与Spring Boot、Spring Cloud版本对应关系

在搭建项目环境架构的时候,需要选择SpringBoot和进行兼容的版本号,因此对于选择SpringBoot版本与版本的对应关系很重要,如果版本关系不对应,常见的会遇见项目启动不起来,怪异的则会是你的项目出现一些诡异的问题,查资料也不好查。下面就收集一下SpringBoot与版本之间的对应关系,在搭建项目框架或者学习时按照对应的版本区间进行选择即可,避免走一些不必要的弯路。

web15285868498的博客 3093
上一篇: Springboot整合 Spring Cloud OpenFeign
下一篇: Springboot整合 Spring Cloud Alibaba Seata
Java_Scholar0
博客等级 码龄9年 104粉丝 55原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值