Spring Cloud入门-Sentinel实现服务限流、熔断与降级(Hoxton版本)

Sentinel 中限流算法的实现 本文的github地址点击这里 Sentinel 中漏桶算法的实现 Sentinel 中漏桶算法通过 RateLimiterController 来实现,在漏桶算法中,会记录上一个请求的到达时间,如果新到达的请求与上一次到达的请求之间的时间差小于限流配置所规定的最小时间,新到达的请求将会排队等待规定的最小间隔到达,或是直接失败。 @Override public boolean canPass(Node node, int acquireCount, boolean prioritized) { i 阅读详情

项目使用的Spring Cloud为Hoxton版本,Spring Boot为2.2.2.RELEASE版本

Spring Cloud入门系列汇总

序号内容链接地址
1Spring Cloud入门-十分钟了解Spring Cloudhttps://blog.youkuaiyun.com/ThinkWon/article/details/103715146
2Spring Cloud入门-Eureka服务注册与发现(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103726655
3Spring Cloud入门-Ribbon服务消费者(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103729080
4Spring Cloud入门-Hystrix断路器(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103732497
5Spring Cloud入门-Hystrix Dashboard与Turbine断路器监控(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103734664
6Spring Cloud入门-OpenFeign服务消费者(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103735751
7Spring Cloud入门-Zuul服务网关(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103738851
8Spring Cloud入门-Config分布式配置中心(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103739628
9Spring Cloud入门-Bus消息总线(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103753372
10Spring Cloud入门-Sleuth服务链路跟踪(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103753896
11Spring Cloud入门-Consul服务注册发现与配置中心(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103756139
12Spring Cloud入门-Gateway服务网关(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103757927
13Spring Cloud入门-Admin服务监控中心(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103758697
14Spring Cloud入门-Oauth2授权的使用(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103761687
15Spring Cloud入门-Oauth2授权之JWT集成(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103763364
16Spring Cloud入门-Oauth2授权之基于JWT完成单点登录(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103766368
17Spring Cloud入门-Nacos实现注册和配置中心(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103769680
18Spring Cloud入门-Sentinel实现服务限流、熔断与降级(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103770879
19Spring Cloud入门-Seata处理分布式事务问题(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103786102
20Spring Cloud入门-汇总篇(Hoxton版本)https://blog.youkuaiyun.com/ThinkWon/article/details/103786588

摘要

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Sentinel 作为其核心组件之一,具有熔断与限流等一系列服务保护功能,本文将对其用法进行详细介绍。

Sentinel简介

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

Sentinel具有如下特性:

  • 丰富的应用场景:承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀,可以实时熔断下游不可用应用;
  • 完备的实时监控:同时提供实时的监控功能。可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况;
  • 广泛的开源生态:提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合;
  • 完善的 SPI 扩展点:提供简单易用、完善的 SPI 扩展点。您可以通过实现扩展点,快速的定制逻辑。

安装Sentinel控制台

Sentinel控制台是一个轻量级的控制台应用,它可用于实时查看单机资源监控及集群资源汇总,并提供了一系列的规则管理功能,如流控规则、降级规则、热点规则等。

我们先从官网下载Sentinel,这里下载的是sentinel-dashboard-1.7.0.jar文件,下载地址:https://github.com/alibaba/Sentinel/releas

下载完成后在命令行输入如下命令运行Sentinel控制台:

java -jar sentinel-dashboard-1.7.0.jar

Sentinel控制台默认运行在8080端口上,登录账号密码均为sentinel,通过如下地址可以进行访问:http://localhost:8080

在这里插入图片描述

Sentinel控制台可以查看单台机器的实时监控数据。

在这里插入图片描述

创建sentinel-service模块

这里我们创建一个sentinel-service模块,用于演示Sentinel的熔断与限流功能。

在pom.xml中添加相关依赖,这里我们使用Nacos作为注册中心,所以需要同时添加Nacos的依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

在application.yml中添加相关配置,主要是配置了Nacos和Sentinel控制台的地址:

server:
  port: 8401

spring:
  application:
    name: sentinel-service
  cloud:
    nacos:
      # 配置Nacos地址
      server-addr: http://localhost:8848
    sentinel:
      transport:
        # 配置Sentinel dashborad地址
        dashboard: http://localhost:8080
        port: 8719

service-url:
  user-service: http://nacos-user-service


management:
  endpoints:
    web:
      exposure:
        include: '*'

限流功能

Sentinel Starter 默认为所有的 HTTP 服务提供了限流埋点,我们也可以通过使用@SentinelResource来自定义一些限流行为。

创建RateLimitController类

用于测试熔断和限流功能。

@RestController
@RequestMapping("/rateLimit")
public class RateLimitController {

    /**
     * 按资源名称限流,需要指定限流处理逻辑
     *
     * @return
     */
    @GetMapping("/byResource")
    @SentinelResource(value = "byResource", blockHandler = "handleException")
    public Result byResource() {
        return new Result("按资源名称限流", 200);
    }

    /**
     * 按url限流,有默认的限流处理逻辑
     *
     * @return
     */
    @GetMapping("byUrl")
    @SentinelResource(value = "byUrl", blockHandler = "handleException")
    public Result byUrl() {
        return new Result("按url限流", 200);
    }

    public Result handleException(BlockException exception) {
        return new Result(exception.getClass().getCanonicalName(), 200);
    }

    @GetMapping("/customBlockHandler")
    @SentinelResource(value = "customBlockHandler", blockHandler = "handleException", blockHandlerClass = CustomBlockHandler.class)
    public Result blockHandler() {
        return new Result("限流成功", 200);
    }


}

根据资源名称限流

我们可以根据@SentinelResource注解中定义的value(资源名称)来进行限流操作,但是需要指定限流处理逻辑。

流控规则可以在Sentinel控制台进行配置,由于我们使用了Nacos注册中心,我们先启动Nacos和sentinel-service;

由于Sentinel采用的懒加载规则,需要我们先访问下接口,Sentinel控制台中才会有对应服务信息,我们先访问下该接口:http://localhost:8401/rateLimit/byResource

在Sentinel控制台配置流控规则,根据@SentinelResource注解的value值:

在这里插入图片描述

快速访问上面的接口,可以发现返回了自己定义的限流处理信息:

在这里插入图片描述

根据URL限流

我们还可以通过访问的URL来限流,会返回默认的限流处理信息。

在Sentinel控制台配置流控规则,使用访问的URL:

在这里插入图片描述

多次访问该接口,会返回默认的限流处理结果:http://localhost:8401/rateLimit/byUrl

在这里插入图片描述

自定义限流处理逻辑

我们可以自定义通用的限流处理逻辑,然后在@SentinelResource中指定。

创建CustomBlockHandler类用于自定义限流处理逻辑:

public class CustomBlockHandler {

    public Result handleException(BlockException exception) {
        return new Result("自定义限流信息", 200);
    }

}

在RateLimitController中使用自定义限流处理逻辑:

@RestController
@RequestMapping("/rateLimit")
public class RateLimitController {

    /**
     * 自定义通用的限流处理逻辑
     */
    @GetMapping("/customBlockHandler")
    @SentinelResource(value = "customBlockHandler", blockHandler = "handleException", blockHandlerClass = CustomBlockHandler.class)
    public Result blockHandler() {
        return new Result("限流成功", 200);
    }

}

熔断功能

Sentinel 支持对服务间调用进行保护,对故障应用进行熔断操作,这里我们使用RestTemplate来调用nacos-user-service服务所提供的接口来演示下该功能。

首先我们需要使用@SentinelRestTemplate来包装下RestTemplate实例:

@Bean
@LoadBalanced
@SentinelRestTemplate
public RestTemplate restTemplate() {
	return new RestTemplate();
}

添加CircleBreakerController类,定义对nacos-user-service提供接口的调用:

@RestController
@RequestMapping("/breaker")
public class CircleBreakerController {

    private static final Logger LOGGER = LoggerFactory.getLogger(CircleBreakerController.class);

    @Autowired
    private RestTemplate restTemplate;

    @Value("${service-url.user-service}")
    private String userServiceUrl;

    @GetMapping("/fallback/{id}")
    // @SentinelResource(value = "fallback", fallback = "handleFallback")
    public Result fallback(@PathVariable Long id) {
        Result forObject = restTemplate.getForObject(userServiceUrl + "/user/{1}", Result.class, id);
        System.out.println(forObject);
        return forObject;
    }

    @GetMapping("/fallbackException/{id}")
    @SentinelResource(value = "fallbackException", fallback = "handleFallback2", exceptionsToIgnore = {NullPointerException.class})
    public Result fallbackException(@PathVariable Long id) {
        if (id == 1) {
            throw new IndexOutOfBoundsException();
        } else if (id == 2) {
            throw new NullPointerException();
        }

        return restTemplate.getForObject(userServiceUrl + "/user/{1}", Result.class, id);
    }

    public Result handleFallback(Long id) {
        return new Result("服务降级返回", 200);
    }

    public Result handleFallback2(Long id, Throwable e) {
        LOGGER.error("handleFallback2 id:{},throwable class:{}", id, e.getClass());
        return new Result("服务降级返回", 200);
    }


}

启动nacos-user-service和sentinel-service服务:

由于我们并没有在nacos-user-service中定义id为4的用户,所有访问如下接口会返回服务降级结果:http://localhost:8401/breaker/fallback/4

{
  "data": null,
  "message": "服务降级返回",
  "code": 200
}

由于我们使用了exceptionsToIgnore参数忽略了NullPointerException,所以我们访问接口报空指针时不会发生服务降级:http://localhost:8401/breaker/fallbackException/2

在这里插入图片描述

与Feign结合使用

Sentinel也适配了Feign组件,我们使用Feign来进行服务间调用时,也可以使用它来进行熔断。

首先我们需要在pom.xml中添加Feign相关依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

在application.yml中打开Sentinel对Feign的支持:

# 打开sentinel对feign的支持
feign:
  sentinel:
    enabled: true

在应用启动类上添加@EnableFeignClients启动Feign的功能;

创建一个UserService接口,用于定义对nacos-user-service服务的调用:

@FeignClient(value = "nacos-user-service", fallback = UserFallbackService.class)
public interface UserService {

    @PostMapping("/user/insert")
    Result insert(@RequestBody User user);

    @GetMapping("/user/{id}")
    Result<User> getUser(@PathVariable Long id);

    @GetMapping("/user/listUsersByIds")
    Result<List<User>> listUsersByIds(@RequestParam List<Long> ids);

    @GetMapping("/user/getByUsername")
    Result<User> getByUsername(@RequestParam String username);

    @PostMapping("/user/update")
    Result update(@RequestBody User user);

    @PostMapping("/user/delete/{id}")
    Result delete(@PathVariable Long id);

}

创建UserFallbackService类实现UserService接口,用于处理服务降级逻辑:

@Component
public class UserFallbackService implements UserService {

    @Override
    public Result insert(User user) {
        return new Result("调用失败,服务被降级",500);
    }

    @Override
    public Result<User> getUser(Long id) {
        return new Result("调用失败,服务被降级",500);
    }

    @Override
    public Result<List<User>> listUsersByIds(List<Long> ids) {
        return new Result("调用失败,服务被降级",500);
    }

    @Override
    public Result<User> getByUsername(String username) {
        return new Result("调用失败,服务被降级",500);
    }

    @Override
    public Result update(User user) {
        return new Result("调用失败,服务被降级",500);
    }

    @Override
    public Result delete(Long id) {
        return new Result("调用失败,服务被降级",500);
    }

}

在UserFeignController中使用UserService通过Feign调用nacos-user-service服务中的接口:

@RestController
@RequestMapping("/user")
public class UserFeignController {

    @Autowired
    private UserService userService;

    @PostMapping("/insert")
    public Result insert(@RequestBody User user) {
        return userService.insert(user);
    }

    @GetMapping("/{id}")
    public Result<User> getUser(@PathVariable Long id) {
        return userService.getUser(id);
    }

    @GetMapping("/listUsersByIds")
    public Result<List<User>> listUsersByIds(@RequestParam List<Long> ids) {
        return userService.listUsersByIds(ids);
    }

    @GetMapping("/getByUsername")
    public Result<User> getByUsername(@RequestParam String username) {
        return userService.getByUsername(username);
    }

    @PostMapping("/update")
    public Result update(@RequestBody User user) {
        return userService.update(user);
    }

    @PostMapping("/delete/{id}")
    public Result delete(@PathVariable Long id) {
        return userService.delete(id);
    }

}

在启动类SentinelServiceApplication添加@EnableFeignClients注解

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class SentinelServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(SentinelServiceApplication.class, args);
    }

}

调用如下接口会发生服务降级,返回服务降级处理信息:http://localhost:8401/user/4

{
  "data": null,
  "message": "调用失败,服务被降级",
  "code": 500
}

使用Nacos存储规则

默认情况下,当我们在Sentinel控制台中配置规则时,控制台推送规则方式是通过API将规则推送至客户端并直接更新到内存中。一旦我们重启应用,规则将消失。下面我们介绍下如何将配置规则进行持久化,以存储到Nacos为例。

原理示意图

在这里插入图片描述

首先我们直接在配置中心创建规则,配置中心将规则推送到客户端;

Sentinel控制台也从配置中心去获取配置信息。

功能演示

先在pom.xml中添加相关依赖:

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

修改application.yml配置文件,添加Nacos数据源配置:

spring:
  application:
    name: sentinel-service
  cloud:
    nacos:
      # 配置Nacos地址
      server-addr: http://localhost:8848
    sentinel:
      transport:
        # 配置Sentinel dashborad地址
        dashboard: http://localhost:8080
        port: 8719
      # 添加Nacos数据源配置
      datasource:
        ds1:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-sentinel
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: flow

在Nacos中添加配置:

在这里插入图片描述

添加配置信息如下:

[
    {
        "resource": "/rateLimit/byUrl",
        "limitApp": "default",
        "grade": 1,
        "count": 1,
        "strategy": 0,
        "controlBehavior": 0,
        "clusterMode": false
    }
]

相关参数解释:

  • resource:资源名称;

  • limitApp:来源应用;

  • grade:阈值类型,0表示线程数,1表示QPS;

  • count:单机阈值;

  • strategy:流控模式,0表示直接,1表示关联,2表示链路;

  • controlBehavior:流控效果,0表示快速失败,1表示Warm Up,2表示排队等待;

  • clusterMode:是否集群。

发现Sentinel控制台已经有了如下限流规则:

在这里插入图片描述

快速访问测试接口,可以发现返回了限流处理信息:

在这里插入图片描述

参考资料

Spring Cloud Alibaba 官方文档:https://github.com/alibaba…

使用到的模块

springcloud-learning
├── nacos-user-service -- 注册到nacos的提供User对象CRUD接口的服务
└── sentinel-service -- sentinel功能测试服务

项目源码地址

GitHub项目源码地址

Sentinel 快速入门 如果这个时候其它的机器也处在一个边缘状态的时候,这个增加的流量就会导致这台机器也崩溃,最后导致整个集群不可用。使用nacos达到sentinel 规则持久化和动态刷新,当然这是nacos到sentinel单项配置,如果想要在sentinel 控制台添加流控规则并实时同步到nacos ,需要修改sentinel控制台源码,修改打包后即可实现双向同步。由于调用关系的复杂性,如果调用链路中的某个资源出现不稳定,最终会导致请求发生堆积,所以降低调用链路中的不稳定资源也是Sentinel的使命。可以看到服务降级了。 阅读详情

相关推荐

SpringCloud Alibaba - Sentinel 限流规则(案例 + JMeter 测试分析)

举个例子,你在淘宝上买东西,完成支付以后会进行修改订单状态的业务,与此同时,你还要查看订单,但是 查询 和 修改 都会争抢数据库的锁,产生竞争. 根据业务需求是,优先进行更新订单业务,之后进行用户查询业务,因此当修改订单业务触发阈值时,就需要对查询订单业务进行限流.排队等待这种方式,当请求超过 qps 阈值之后,不会直接抛出异常,而是让多出来的请求先进入到一个队列中进行排队,然后按照阈值允许的时间间隔依次执行,如果队列中所有的请求处理时间加起来刚好等于等待时间,那么,此时新来的请求就会被拒绝.

CYK_byte的博客 4758

SpringCloud中使用Sentinel实现限流

Sentinel Sentinel 是面向微服务的轻量级流量控制框架,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel可以作为Hystrix的替代品,为系统提供服务熔断和服务降级的功能。 服务熔断:根据保险丝的熔断是一个原理,当调用目标服务大量超时和失败,这时候应该熔断掉该服务的调用,从而快速释放资源,这段时间所有对其调用都是快速返回,保证整体服务系统的稳定 服务降级:针对核心业务服务的压力剧增,根据当前业务场景和流量对其他非核心服务进行降级处理,可以进行限流,快速返回等处理

蹊源的奇思妙想的博客 1万+

NXP S32K5 MCU如何赋能Zonal架构与软件定义汽车?

汽车电子架构正从分布式ECU向域集中、再向Zonal分区架构演进,核心驱动力在于线束简化、算力下沉与软件分层解耦。区域控制器作为物理区域的“调度员”,需要同时满足实时响应、功能安全、多网络协议转换和OTA升级等要求,这使MCU与SoC的选型成为系统工程的关键决策。MCU凭借确定性的微秒级启动、低功耗、丰富的IO控制以及成熟的ASIL-D认证路径,仍是区域控制器的主流选择。NXP S32K5正是面向这一场景发布的系列MCU:它集成多核锁步、CAN-XL、TSN以太网、硬件安全模块与双Bank Flash,补齐

weixin_28721917的博客 359

SpringCloud Alibaba Sentinel限流详解 这一次别在错过

点赞再看,养成习惯,微信搜索【牧小农】关注我获取更多资讯,风里雨里,小农等你,很高兴能够成为你的朋友。 项目源码地址:公众号回复 sentinel,即可免费获取源码 熔断规则 在上一篇文章中我们讲解了流控规则的使用和介绍Sentinel流控规则,今天我们给大家讲解sentinel更多样化的讲解以及流量控制。 官方文档:https://sentinelguard.io/zh-cn/docs/circuit-breaking.html 在面对调用链路中不稳定的资源如何保证高可用?在微服务中一个服务通常会调用.

牧小农 1592

先进封装技术的一些优缺点探讨

半导体封装技术是半导体制造过程中的关键环节,它不仅保护了芯片免受物理损伤,还提供了电气连接和散热功能。随着技术的发展,出现了多种先进的封装技术,每种技术都有其特定的应用场景和优缺点。

阿拉伯梳子的专栏 2170

从零构建XVC协议栈:FPGA+W5300的跨界调试架构实战

本文详细介绍了如何从零构建XVC协议栈,通过FPGA与W5300以太网控制器的创新组合实现跨界调试架构。重点解析了JTAG时序逆向、TCP/IP协议栈集成与XVC协议实现,提供了硬件设计优化和性能加速技术,为嵌入式开发者和FPGA工程师提供实用的远程调试解决方案。

raspberrypi5的博客 249

Spring Cloud入门-Sentinel实现服务限流、熔断与降级(Hoxton版本)(1)

如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了《Java中高级核心知识全面解析》小米商场项目实战,别再担心面试没有实战项目:本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取Behavior:流控效果,0表示快速失败,1表示Warm Up,2表示排队等待;

2301_82241647的博客 882

记录汇川:自由口通信-梯形图

最常见的就是MODBUS通信协议,指令主要通过RS232和RS485端口进行报文发送,所以通信报文格式可以选择MODBUS RTU通信格式或MODBUS ASCII通信格式。255---Y10-Y17:ON(1111 1111)指令进行报文的发送与接收,但是报文内部的数据格式不是由主站PLC决定, 而是由。修改从站一个保持寄存器数据。修改从站多个保持寄存器数据。读取从站的输出信号状态。读取从站的输入信号状态。读取从站保持寄存器数据。读取从站输入寄存器数据。

m0_61837027的博客 4915

Spring Cloud入门-汇总篇(Hoxton版本)

文章目录简介应用场景注册中心配置中心服务网关服务调用熔断与限流安全保护监控中心分布式事务解决目录项目结构项目地址 项目使用的Spring Cloud为Hoxton版本,Spring Boot为2.2.2.RELEASE版本 简介 Spring Cloud是一系列框架的有序集合。目的是协调各个微服务,简化分布式系统开发。这里做一个有关于Spring Cloud知识的汇总,包括Spring Clo...

ThinkWon的博客 3万+

爬取百度图片

最开始,我们想要爬取图片,首先需要打开百度图库,然后在搜索栏中输入自己想要的图片(比如说壁纸)。接着右键检查,点击网络:起初可能没有名称信息,刷新界面就可以了。打开信息,查看标头内容可以看到请求URL为:复制这串URL,然后在浏览器中打开这个就是我们搜索的壁纸图片的网页内容。怎么找到图片的URL呢?在上述内容中,找到data,可以发现里面每隔一个aiEditData,下面代码的形式是一样的,就相当于一张图片。

weixin_54143563的博客 1943

AUTOSAE软件配置-项目标准配置 (PSC) 导入达芬奇( DaVinci Configurator)

文件是“可拆分的”,这意味着如果格式符合 AUTOSAR 拆分规则,则可以与其他。)是一个ARXML文件,主要由OEM提供,其中包含。)工件,可以作为输入文件导入到达芬奇配置器专业版。导入的参数将以只读方式处理。不允许在多个 ARXML 文件中导入一个。的已存在数据或从输入文件派生的数据。可以作为输入文件导入到另一个。文件会覆盖用户配置的基本。元素和诊断数据预配置。定义 [数据结构]。中,可以导出一个或多个。

m0_49148264的博客 1014

【Spring Cloud Alibaba】【Hoxton】Sentinel 入门-限流-降级(一)

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

qq_34125999的博客 2689

使用Simulink设计并实现一个可调谐的二阶IIR陷波滤波器,实时去除音频中的工频噪声

《基于Simulink的音频陷波滤波器设计与实现》摘要:本文详细介绍了使用Simulink设计陷波滤波器去除音频工频噪声(如50Hz)的方法。核心内容包括:1)二阶IIR陷波滤波器的原理与传递函数;2)Simulink实现步骤(音频系统搭建、滤波器设计、频率跟踪);3)性能分析(频谱对比、时域波形、听觉测试)。通过精准消除特定频率干扰,同时保留语音信号(200Hz-4kHz),有效提升信噪比(>20dB)。文章还探讨了多陷波级联、自适应算法等高级技巧,为音频处理、语音通信等应用提供实用解决方案。

amy_mhd的博客 157

【Spring Cloud Alibaba】【Hoxton】Sentinel 热点规则-@SentinelResource-熔断-持久化(二)

1 热点参数限流 何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如: 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制 用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制 热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以...

qq_34125999的博客 5132

从Safety Manual到系统安全概念

本文系统阐述了构建功能安全"证据链"的工程化方法论,核心要点包括:1)建立"风险→对策→验证→证据"闭环链条;2)SafetyManual和FMEDA作为关键证据支撑点,前者界定系统安全边界,后者量化诊断覆盖率;3)通过四步法继承芯片安全机制并扩展至系统级;4)形成"设计-分析-验证"三维闭环体系,包括安全目标、技术实现和验证矩阵;5)强调证据链闭环对安全认证和OEM认可的重要性。该方法论实现了从理论要求到工程实践的完整转化,确保安全设计可验证、可

VehSwHwDeveloper的博客 724

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: Spring Cloud入门-Nacos实现注册和配置中心(Hoxton版本)
下一篇: Spring Cloud入门-Seata处理分布式事务问题(Hoxton版本)
RyanJohnson
RyanJohnson 优质创作者: Java技术领域 优质创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 30万+粉丝 285原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值