每日笔记10.3

nacos中namespace / group / data id 的关系

sentinel哨兵

Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性

组成

核心库:(Java 客户端)不依赖任何框架/库,能够运行在所有 Java 运行时环境, 对 Spring Cloud有较好的支持

控制台:(Dashboard)基于 Spring Boot 开发,打包后可以直接运行, 不需要额外的 Tomcat 等
应用容器

启动

流控

/t1关联/t2

warm up 冷加载

在前 3 秒,如果访问 /t2 的 QPS 超过 3, 会直接报错,在 3 秒后 访问
/t2 的 QPS 超过 3, 小于等于 9, 是正常访问

当你的请求停止后,会从QPS=9回到QPS=3,当再次高并发请求时,3秒后回到QPS=9

排队等待

熔断降级

熔断

就跟保险丝一样,连接两个模块,熔断他,同时也可以再连接

一个服务常常会调用别的模块,复杂链路上的某一环不稳定,就可能会层层级联,最终导致整个链路都不可用。因此我们需要对不稳定的弱依赖服务调用进行熔断降级,暂时切断不稳定调用,避免局部不稳定因素导致整体的雪崩。

慢调用比例

eg:一秒内有6个请求并且响应时间都超过了200ms,那么会熔断,请求被阻断,等待熔断时长5秒后,才恢复正常。之所以都超过200ms,是因为比例阈值为1,也就是一秒内大于200ms的请求占最小请求数的100%

异常比例

异常数

熔断,降级,限流三者的关系

  1. -熔断强调的是服务之间的调用能实现自我恢复的状态
  2. -限流是从系统的流量入口考虑, 从进入的流量上进行限制, 达到保护系统的作用
  3. -降级, 是从系统业务的维度考虑,流量大了或者频繁异常, 可以牺牲一些非核心业务,保
  4. 护核心流程正常使用

-熔断是降级方式的一种

-降级又是限流的一种方式

-三者都是为了通过一定的方式在流量过大或者出现异常时, 保护系统的手段

热点规则

当输入该请求中id=10时,单独设置QPS=5,如果请求其他id,如id=1,按照单机阈值1,也就是QPS=1,会流控。

http://localhost:10006/news?id=10&type=%E6%95%99%E8%82%

SentinelResource注解

controller层

测试热点数据id=10, http://localhost:10006/news?id=10&type=%E6%95%99%E8%82%

@GetMapping("/news")
@SentinelResource(value = "news", blockHandler = "newsBlockHandler")
public Result queryNews(@RequestParam(value = "id", required = false) String id,
                        @RequestParam(value = "type", required = false) String type) {
    log.info("到 DB 查询数据库.... ");
    return Result.success("返回 id= " + id + " 新闻 fromDB");
}

//热点 key 限制异常处理方法
public Result newsBlockHandler(String id, String type, BlockException exception) {
    return Result.success("查询 id= " + id
            + " 新闻 触发热点 key 限制保护.. sorry");

}

当请求QPS>=5,请求被阻断

\

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值