istio 限流:本地限流+全局限流

istio 限流在官网的位置是 任务->策略执行->使用 Envoy 启用速率限制

istio 限流基于数据面 Envoy 开发,Envoy 支持两个类型限流,分别是本地限流和全局限流(本地限流和全局限流可以一起使用)

开始之前

  • 安装 istio
  • 部署 bookinfo 应用,参考 istio 专栏文章

本地限流

概念

  • 配置为单实例,例如当 replicaset 设置为3,token_bucket 为3时,每个 pod 都可以处理3个请求,总共9个请求,与全局限流不一样
  • 不依赖任何外部后端(无需调用其他服务)
  • 基于 令牌桶机制,支持四层对连接的限制和七层对请求数的限制
    • 令牌桶算法是一种限制发送到服务端的请求数量的方法,基于一定数量的令牌桶。存储桶以恒定的速
      率不断填充令牌,当向服务发送请求时,会从存储桶中删除一个令牌。如果存储桶为空,则请求将被
      拒绝。通常需要指定以下内容:
      • 桶被填充的速率(填充间隔)
      • 每个填充间隔添加到桶中的令牌数

demo 测试

  • 部署官网提供的 demo
  • 创建本地限流的 envoyfilter 文件
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:name: filter-local-ratelimit-svcnamespace: mm-xianliu
spec:workloadSelector:labels:app: productpageconfigPatches:- applyTo: HTTP_FILTERmatch:context: SIDECAR_INBOUNDlistener:filterChain:filter:name: "envoy.filters.network.http_connection_manager"patch:operation: INSERT_BEFOREvalue:name: envoy.filters.http.local_ratelimittyped_config:"@type": type.googleapis.com/udpa.type.v1.TypedStructtype_url: type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimitvalue:stat_prefix: http_local_rate_limitertoken_bucket:max_tokens: 3tokens_per_fill: 3fill_interval: 30sfilter_enabled: # 启用runtime_key: local_rate_limit_enableddefault_value:numerator: 100denominator: HUNDREDfilter_enforced:  # 强制执行runtime_key: local_rate_limit_enforceddefault_value:numerator: 100denominator: HUNDREDresponse_headers_to_add: # 被限流流量添加 header- append: falseheader:key: x-local-rate-limitvalue: 'true'

其中 filter_enabled 表示添启用本地限流功能,filter_enforced 表示强制执行本地限流,response_headers_to_add 表示被限流的流量的 response 中会加上这个 header

filter_enabled 和 filter_enforced 需要一起使用

例如,设置令牌桶的数量为3,允许30s 内3最多三次访问,第四次访问失败时会在 response 中添加 x-local-rate-limit: true 的 header
在这里插入图片描述

全局限流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.1.1力扣每日一题——经营摩天轮的最大利润

2024.1.1 题目来源我的题解方法一 模拟 题目来源 力扣每日一题;题序:1599 我的题解 方法一 模拟 计算当前上摩天轮的人数和等待的人数就可以得到该轮次的利润,然后一只更新最大利润就可以了。 时间复杂度:O(n)。n数组的长度 空…

滴滴高级Java面试真题

今年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了《知识星球》,并邀请我阿里、快手、腾讯等的朋友加入,分享八股文、项目经验、管理经验…

Linux | 分布式版本控制工具Git【版本管理 + 远程仓库克隆】

文章目录 一、前言二、有关git的相关历史介绍三、Git版本管理1、感性理解 —— 大学生实验报告2、程序员与产品经理3、张三的CEO之路 —— 版本管理工具的诞生 四、如何在Linux上使用Git1、创建仓库2、将仓库克隆到本地3、git三板斧① git add② git commit③ git push 4、有关…

软件测试之自动化测试的四个阶段

第一阶段:API自动化 之前的想法是:通过API创建数据,访问数据,进行数据操作,存储数据库,通过模拟前端的操作来想象API的访问流程。 然后,验证数据库是否存储正确。后来发现该想法流程就是错误的…

2024/1/2 C++ work

全局变量,int monster 10000;定义英雄类hero,受保护的属性string name,int hp,int attck;公有的无参构造,有参构造,虚成员函数 void Atk(){blood-0;},法师类继承自英雄类,私有属性 …

十大排序的个人总结之——冒泡排序、插入排序

同样,这两几乎也是被淘汰了的算法,尽管它们是稳定的,但是时间复杂度没人喜欢,了解一下就好,没啥好说的,注意最后一句话就行了 一,冒泡排序 1. 算法步骤 共n-1趟,谁两敢冒泡就换了…

Tomcat服务为什么起不来?

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 服务跑在Tomcat下面,有时候会遇到Tomcat起不来的情况。目前为止常遇到的情况有如下几种: 1. Tomcat服务…

【VSCode】关闭双击shift出现搜索

原因 有时候总是手滑按两下shift,每次都会弹出如下图的搜索框,导致很不方便 解决办法 找到该文件 C:\Users\admin\.vscode\extensions\k--kato.intellij-idea-keybindings-1.5.12\package.json(admin是自己的用户名) 然后关键字…

前端文件上传组件最全封装+删除+下载+预览

前言&#xff1a;使用的是若依的框架element uivue2封装的。如果有不对的地方欢迎指出。后台管理使用&#xff0c;文件需要上传。回显列表&#xff0c;详情也需要回显预览 // 开始封装组件&#xff1a;封装在 src/components/FileUpload/index.vue中 <template><div c…

slf4j+logback源码加载流程解析

slf4j绑定logback源码解析 Logger log LoggerFactory.getLogger(LogbackDemo.class);如上述代码所示&#xff0c;在项目中通常会这样创建一个Logger对象去打印日志。 然后点进去&#xff0c;会走到LoggerFactory的getILoggerFactory()方法&#xff0c;如下代码所示。 public …

Maven介绍安装和配置详解

点击下载《Maven介绍安装和配置详解》 1. Maven介绍 Maven是一个自动化构建工具&#xff0c;主要用于Java项目的构建和管理。它使用一种基于项目对象模型&#xff08;POM&#xff09;的概念&#xff0c;使得开发者能够使用一种统一的方式来管理项目的构建、报告和文档。 以下…

大模型提效105篇必读论文和代码汇总,涵盖预训练、注意力、微调等7个方向

大型语言模型&#xff08;LLMs&#xff09;在NLP领域中具有显著的优势&#xff0c;它们在语言理解和生成方面表现出了强大的能力&#xff0c;甚至可以进行复杂的推理任务。这些能力能让大模型在许多领域都有广泛的应用前景&#xff0c;比如文本生成、对话系统、机器翻译、情感分…

论文阅读——EfficientViT(cvpr2023)

EfficientViT: Memory Efficient Vision Transformer with Cascaded Group Attention 1、 从三个角度探讨如何提高vision transformers的效率&#xff1a;内存访问、计算冗余和参数使用。 2.1. Memory Efficiency 红色字体表示操作所花费的时间主要由内存访问决定&#xff0c;…

C语言 linux文件操作(一)

文章目录 一、linux文件权限1.1文件描述符1.2文件描述符的范围和默认值1.3打开文件和文件描述符1.4标准文件描述符1.5文件描述符的重定向和关闭1.6I/O 操作1.7使用文件描述符进行进程通信1.8资源限制 二、C语言文件读写2.1open 函数2.2 flags参数详解2.3 lseek 函数 一、linux文…

Javaweb之数据库连接池以及lombok类库的详细解析

3. 数据库连接池 在前面我们所讲解的mybatis中&#xff0c;使用了数据库连接池技术&#xff0c;避免频繁的创建连接、销毁连接而带来的资源浪费。 下面我们就具体的了解下数据库连接池。 3.1 介绍 没有使用数据库连接池&#xff1a; 客户端执行SQL语句&#xff1a;要先创建一…

JS + CSS 实现高亮关键词(不侵入DOM)

之前在做关键词检索高亮功能的时候&#xff0c;研究了下目前前端实现高亮的几种方式&#xff0c;第一就是替换dom元素实现高亮&#xff0c;第二就是利用浏览器新特性Css.highlights结合js选区与光标与CSS高亮伪类实现&#xff0c;实现功能如下&#xff1a; 一、页面布局 一个…

叫板GPT-4的Gemini,我做了一个聊天网页,可图片输入,附教程

先看效果&#xff1a; 简介 Gemini 是谷歌研发的最新一代大语言模型&#xff0c;目前有三个版本&#xff0c;被称为中杯、大杯、超大杯&#xff0c;Gemini Ultra 号称可与GPT-4一较高低&#xff1a; Gemini Nano(预览访问) 为设备端体验而构建的最高效模型,支持离线使用场景。…

[Redis实战]分布式锁

四、分布式锁 4.1 基本原理和实现方式对比 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁&#xff0c;只要大家使用的是同一把锁&#xff0c;那么我们就能锁住线程&#xff0c;不让线程进行&#xf…

Rust赋值语句和数字类型

赋值语句 在Rust中&#xff0c;使用let关键字定义变量。格式是let 变量名:变量类型 变量值;&#xff0c;下边是个例子&#xff1a; let age:i32 18;这就是定义一个有符号32位的数字变量age&#xff0c;而其中的值是18。 而在C语言定义变量的语句格式是类型 变量名 变量值。…

【网络技术】【Kali Linux】Wireshark嗅探(三)用户数据报(UDP)协议

一、实验目的 本次实验使用wireshark流量分析工具进行网络嗅探&#xff0c;旨在了解UDP协议的报文格式。 二、网络环境设置 本次实验使用Kali Linux虚拟机完成&#xff0c;主机操作系统为Windows 11&#xff0c;虚拟化平台选择Oracle VM VirtualBox&#xff0c;组网模式选择…