备考ICA----Istio实验9---熔断Circuit Breaking 实验

备考ICA----Istio实验9—熔断Circuit Breaking 实验

1. 环境准备

创建httpbin环境

kubectl apply -f istio/samples/httpbin/httpbin.yaml
kubectl get svc httpbin

在这里插入图片描述

2. 创建测试用客户端

kubectl apply -f istio/samples/httpbin/sample-client/fortio-deploy.yaml

在这里插入图片描述

3. 创建Httpbin的Circuit Breaking DR

参数含义
maxConnections到目标主机的HTTP1/TCP最大连接数量,只作用于http1.1,不作用于http2,因为后者只建立一次连接。
connectTimeouttcp连接超时时间,默认单位秒。也可以写其他单位,如ms。format: 1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s.
tcpKeepalive如果在套接字上设置SO_KEEPALIVE可以确保TCP 存活。
http1MaxPendingRequestshttp请求pending状态的最大请求数,从应用容器发来的HTTP请求的最大等待转发数,默认是 2^32-1。
maxRequestsPerConnection在一定时间内限制对后端服务发起的最大请求数,如果超过了这个限制,就会开启限流。如果将这一参数设置为 1 则会禁止 keepalive 特性;
http2MaxRequests后端请求的最大数量,默认是2^32-1。
idleTimeout上游连接池连接的空闲超时。空闲超时被定义为没有活动请求的时间段。如果未设置,则没有空闲超时。当达到空闲超时时,连接将被关闭。注意,基于请求的超时意味着HTTP/2ping将无法保持有效连接。适用于HTTP1.1和HTTP2连接;
maxRetries在给定时间内,集群中所有主机都可以执行的最大重试次数。默认为2^32-1。
h2UpgradePolicy指定是否应将关联目标的 http1.1 连接升级到 http2。

circuit/httpbin-dr-Circuit.yaml

kind: DestinationRule
metadata:name: httpbin
spec:host: httpbintrafficPolicy:connectionPool:tcp:maxConnections: 1http:http1MaxPendingRequests: 1maxRequestsPerConnection: 1outlierDetection:consecutive5xxErrors: 1interval: 1sbaseEjectionTime: 3mmaxEjectionPercent: 100

部署dr

kubectl apply -f circuit/httpbin-dr-Circuit.yaml

4. 访问测试

4.1 maxConnections=1

kubectl exec deploy/fortio-deploy -- /usr/bin/fortio curl -quiet http://httpbin:8000/get

在这里插入图片描述
当并发访问时会有一部分请求失败

kubectl exec deploy/fortio-deploy -- /usr/bin/fortio load -c 2 -qps 0 -n 20 -loglevel Warning http://httpbin:8000/get

因为2个并发,20次,不一定是50%的503.主要还是看同一时间内多少如果大于1个连接那么这个请求结束前其他请求就被拒绝.
在这里插入图片描述
放大请求数和并发数,被503熔断的请求比例会更多一点

kubectl exec deploy/fortio-deploy -- /usr/bin/fortio load -c 3 -qps 0 -n 30 -loglevel Warning http://httpbin:8000/get

在这里插入图片描述

可以查看 75 该 upstream_rq_pending_overflow 值,这意味着 75 到目前为止的调用已被标记为 Circuit

kubectl exec deploy/fortio-deploy -c istio-proxy -- pilot-agent request GET stats | grep httpbin | grep pending

在这里插入图片描述

2.2 调大maxConnections值

将maxConnections和http1MaxPendingRequests,maxRequestsPerConnection值一并调大后
circuit/httpbin-dr-Circuit.yaml

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:name: httpbin
spec:host: httpbintrafficPolicy:connectionPool:tcp:maxConnections: 2http:http1MaxPendingRequests: 2maxRequestsPerConnection: 2outlierDetection:consecutive5xxErrors: 1interval: 1sbaseEjectionTime: 3mmaxEjectionPercent: 100

部署dr

kubectl apply -f  circuit/httpbin-dr-Circuit.yaml

再次用3并发测试30个连接

kubectl exec deploy/fortio-deploy -- /usr/bin/fortio load -c 3 -qps 0 -n 30 -loglevel Warning http://httpbin:8000/get

可见503的比例明显变小
在这里插入图片描述
即使将并发4请求40个连接也只有40%的被503
在这里插入图片描述
实际工作中我们可以根据请求量和服务性能来调整maxConnections,http1MaxPendingRequests,maxRequestsPerConnection的值通过熔断,牺牲掉一部分请求来保证其余请求的正常使用

5. 环境清理

kubectl delete -f istio/samples/httpbin/httpbin.yaml -f istio/samples/httpbin/sample-client/fortio-deploy.yaml
kubectl delete -f circuit/httpbin-dr-Circuit.yaml

至此Circuit Breaking 熔断实验完成

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

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

相关文章

python笔记进阶--模块、文件及IO操作(1)

目录 一.模块 1.模块的导入和使用 1.1导入整个模块 1.2导入函数 1.3使用as给模块指定别名 2.常见标准库 2.1 import random: 2.2 import math: 2.3正则表达式处理 2.4turtle 二.文件及IO操作 1.文件 1.1绝对路径与相…

Intellij IDEA 类注释模板设置

1、配置全局USER 在此配置全局USER,用于填充自动生成的注释中的作者author属性。 注释模板中的user参数是默认是获取系统的用户(当然注释作者也可以直接写固定值),如果不想和系统用户用同一个信息,可以在IDEA中进行配…

【自我提升】一、Hyperledger Fabric 概念梳理

写在前面:最近因为业务需要,开始学习Hyperledger Fabric了,做java全栈工程师可真难搞。现在算是啥类型的都在涉及了,现在这个技术啥都不懂,就先开个学习专栏,记录记录。顺带也给各位道友参考参考。 目录 …

「媒体宣传」媒体邀约几种常见方法!-51媒体

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体邀约的常见方法确实包括电话邀约、邮件邀约、社交媒体邀约以及通过媒体公关公司代邀约等。 电话邀约:这是一种直接且高效的方式,可以通过电话与媒体记者沟通&…

HTTP请求走私!!!(一)

想都是问题,做才是答案 什么是请求走私? HTTP请求走私是针对于服务端处理一个或者多个接收http请求序列的方式,进行绕过安全机制,实施未授权访问一种攻击手段,获取敏感信息,并直接危害其他用户。 Web 应用…

【前端学习——css篇】4.px和rem的区别

https://github.com/febobo/web-interview 4.px和rem的区别 ①px px,表示像素,所谓像素就是呈现在我们显示器上的一个个小点,每个像素点都是大小等同的,所以像素为计量单位被分在了绝对长度单位中 有些人会把px认为是相对长度&…

大语言模型(LLM)token解读

1. 什么是token? 人们经常在谈论大模型时候,经常会谈到模型很大,我们也常常会看到一种说法: 参数会让我们了解神经网络的结构有多复杂,而token的大小会让我们知道有多少数据用于训练参数。 什么是token?比…

浅聊openGauss逻辑架构

浅聊 openGauss 逻辑架构 概述 openGauss 数据库是一款由华为主导、各个生态合作伙伴共同建设的开源关系型数据库管理系统,开源发行协议遵从木兰宽松许可证 v2。 openGauss 数据库源于 PostgreSQL-XC 项目,内核源于 Postgres 9.2.4,总代码…

mybatis注解方式if标签报错元素内容必须由格式正确的字符数据或标记组成

在使用mybatis的注解方式的时候出现个问题,我需要一个复杂的sql语句,既有if判断又有in语句,刚开始使用mybatis自己的if动态函数的时候完全没问题,代码如下: Select({"select * ","from order_info &qu…

利用python脚本,根据词条爬取百度图片(爬虫)

把广角,换成你的关键词就行 # -*- coding: utf-8 -*- """ Created on Wed Mar 29 10:17:50 2023 author: MatpyMaster """ import requests import os import redef get_images_from_baidu(keyword, page_num, save_dir):header {Us…

Hadoop+Spark大数据技术 第三次作业

第三次作业 1.简述HDFS Shell三种操作命令hadoop fs、hadoop dfs、hdfs dfs的异同点。 相同点 用于与 Hadoop 分布式文件系统(HDFS)交互。可以执行各种文件系统操作,如文件复制、删除、移动等。 不同点 hadoop fs、hadoop dfs已弃用&#xf…

使用vue构建一个简单实用的春节红包插件!

摘要:本文将介绍如何使用Vue.js构建一个简单实用的春节红包插件。该插件通过模拟红包的打开和关闭过程,以及金额的随机分配,为春节红包活动提供了一个有趣且互动的体验。 一、引言 在春节这个充满欢乐和祝福的时刻,红包成为了传递…

Encoding类

Encoding System.Text.Encoding 是 C# 中用于处理字符编码和字符串与字节之间转换的类。它提供了各种静态方法和属性,**用于在不同字符编码之间进行转换,**以及将字符串转换为字节数组或反之。 在处理多语言文本、文件、网络通信以及其他字符数据的场景…

node.js项目初始化操作

项目环境Vscode 1.新建一个文件夹node.js(xx.js) 2.右键点击node.js,点击打开终端 我在VScode打开终端 输入npm init初始化项目没反应。 解决方法:进入文件夹node.js,出入cmd跳转到终端 重新输入npm init命令 正确结果如下图 后续命令按下…

【Leetcode】2580. 统计将重叠区间合并成组的方案数

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 给你一个二维整数数组 ranges ,其中 ranges[i] [starti, endi] 表示 starti 到 endi 之间(包括二者)的所有整数都包含在第 i 个区间中。 你需要…

Tunes不能读取iPhone的内容,请前往iPhone偏好设置的摘要选项卡,然后单击恢复以将此iPhone恢复为出厂设置

重启itunes: 参考链接: https://baijiahao.baidu.com/s?id1642568736254330322&wfrspider&forpc 人工智能学习网站: https://chat.xutongbao.top

什么是solana PDA账户?

Solana 设计的一个核心理念是万物皆账户,Solana 上的几乎所有数据都可以表示为账户。 在 Solana 上,不仅仅是用户的钱包地址拥有账户,还包括智能合约、数据结构、代币、NFT 等。这些账户可以持有各种类型的数据,包括数字资产、智…

插值表达式、Vue指令、指令补充

vue上手步骤 <body><!-- vue2语法 --><!-- 1.准备容器&#xff1a;一会vue就会把数据展示到这里 --><div id"app"><!-- 4.使用{{ }}即可显示数据 &#xff0c;{{}}就是插值表达式--><p>姓名&#xff1a;{{uname}}</p><…

开源AI引擎|企业合同管理:自然语言处理与OCR技术深度融合

一、企业应用&#xff1a;合同智能管理 结合NLP和OCR技术&#xff0c;企业可以构建智能化的合同管理系统&#xff0c;实现合同的自动化审查、风险评估和知识抽取。这样的系统不仅能够提高合同处理的效率&#xff0c;还能够降低人为错误&#xff0c;加强风险控制。 例如&#x…

Elasticsearch 中误操作删除了所有用户解决办法

如果在 Elasticsearch 中误操作删除了所有用户&#xff0c;可以通过以下步骤重新创建用户和密码&#xff1a; 在配置文件中开启 x-pack 验证&#xff0c;修改config&#xff08;一般是在/usr/share/elasticsearch&#xff09;目录下面的elasticsearch.yml文件&#xff0c;添加…