当前位置: 首页 > news >正文

微服务之服务保护策略【持续更新】

文章目录

  • 线程隔离
    • 一、滑动窗口算法
    • 二、漏桶算法
    • 三、令牌桶算法
  • 面试题
    • 1、Sentinel 限流和Gateway限流的区别

线程隔离

两种实现方式
线程池隔离(Hystix隔离),每个被隔离的业务都要创建一个独立的线程池,线程过多会带来额外的CPU开销,性能一般,但隔离性更强;
信号量隔离(Sentinel隔离),不用创建线程池,性能较好,但隔离性一般。

服务保护算法

一、滑动窗口算法

固定窗口算法
1、其将时间划分为多个窗口,窗口时间跨度为Interval;
2、每个窗口分别计数统计,每有一次请求就将计数器+1,限流就是设置计数器阈值;
3、如果计数器超过限流阈值,则超过阈值的请求都被丢弃;
缺点:在特殊情况,在前一间隔中间 和 后一间隔中间,组成完整的间隔。
在这里插入图片描述
实现步骤
1、将窗口划分为n个更小的区间,窗口的时间跨度interval为1秒,区间数量n=2,则每个区间的时间跨度为500ms,每个区间都有计数器;
2、限流阈值依然是3,时间窗口内请求超过阈值时,超出的请求被限流;
3、窗口会根据当前请求所在时间currentTime移动,窗口范围从currentTime - interval 之后的第一个时区开始,到currentTime所在时区结束。
在这里插入图片描述

二、漏桶算法

实现步骤
1、将每个请求视做水滴放入漏桶进行存储;
2、漏桶以固定速率向外进行漏出请求执行,如果漏桶空了,则停止漏水;
3、如果漏桶满了,则将多余的水滴进行直接丢弃。
桶的容量取决与限流的QPS阈值和允许等待的最大超时时间
在这里插入图片描述

三、令牌桶算法

实现步骤
1、以固定速率生成令牌,存入令牌桶中,如果令牌桶满了,则停止生成;
2、请求进入后,必须先尝试从桶中获取令牌,获取到令牌后才可以被处理;
3、如果令牌桶中没有令牌,则请求等待或丢弃
设置的令牌的速率不能设置为服务器处理的上限
适应场景:热点参数限流

面试题

1、Sentinel 限流和Gateway限流的区别

Gateway采用基于Redis实现的令牌桶算法
Sentinel 默认限流方式为基于滑动窗口算法,中断路器基于滑动窗口
限流后可快速失败和排队等等待,其中排队等待是基于漏桶算法
热点参数限流则是基于令牌桶算法

http://www.lryc.cn/news/390631.html

相关文章:

  • 微信小程序的开发
  • Oracle中CREATE FORCE VIEW的说明和例子
  • C#反射基本应用
  • 1.英语中的从句学习
  • Perl语言简介
  • 【SpringBoot3】使用Jasypt加密数据库用户名、密码等敏感信息
  • 如何确定MySQL中哪些列适合做索引
  • C# winform中权限页面的设计和开发
  • 本地Windows电脑 连接 Windows 服务器
  • 【分布式计算框架 MapReduce】MapReduce 初级编程
  • VideoPrism——探索视频分析领域模型的算法与应用
  • Spring Boot项目的两种发布方式
  • Java中的服务注册与发现原理与实现
  • 【Python】成功解决TypeError: ‘float‘ object cannot be interpreted as an integer
  • Java面试八股文
  • 周周星分享7.3—基于气象大数据的自动站实况联合预测
  • 【密码学】面向小白的古典密码基础入门笔记
  • 【Qt】之【Bug】大量出现“未定义的标识符”问题
  • C++中的常成员函数
  • 小试牛刀-区块链代币锁仓(Web页面)
  • Geoserver源码解读五 Catalog
  • 安全与加密常识(5)自签名证书
  • Java官网网址及其重要资源
  • Linux--start-stop-daemon
  • 优化Java中XML和JSON序列化
  • 像学Excel 一样学 Pandas系列-创建数据分析维度
  • Rust 基础教程
  • Study--Oracle-06-Oracler网络管理
  • uniapp零基础入门Vue3组合式API语法版本开发咸虾米壁纸项目实战
  • 数字信号处理教程(2)——时域离散信号与时域离散系统