快速玩转 CNStack 2.0 流量防护
作者:冠钰
云原生下的服务治理
在云原生技术的演进过程中,依托云原生技术能力,形成一个可以向下管理基础设施,向上管理业务应用的技术中台,越来越成为企业期望的云原生技术落地趋势。随着云原生技术中台 CNStack 发布具有革新意义的新一代 2.0 版本,其提供的云原生技术能力不仅可以支撑大规模业务系统,也可以将内部不统一的体系集中管理起来,通过中台化的方式输出云原生技术能力。通过 CNStack 可以低成本实现业务应用的云原生改造,并且 CNStack 云原生平台可以为接入的应用提供业务监控、流量管理、服务开放等多种能力。
深入到微服务体系中,CNStack 平台为复杂的微服务架构系统提供了多方面的服务治理与可视化监控能力,其中通过配合可视化数据监控与限流降级能力,运维人员可以确保业务系统不论是在正常运行时、发布变更过程中、还是流量猛增的状态下,都可以平稳对外提供服务。诸如常见的线上突发流量导致服务流量超过承载能力、服务下游依赖出现不可用导致影响自身服务稳定性等场景,CNStack 提供了全方位的流量防护能力,以流量与容错为切入点,从流量控制、不稳定调用隔离、熔断降级、热点流量防护、系统过载保护等多个维度来帮助保障服务和网关的稳定性,同时提供秒级的流量监控分析功能。
快速玩转流量防护
一键接入防护能力
CNStack 平台提供了非常便捷友好的应用接入方式,通过工作空间下的应用管理能力可以快速创建应用,并且通过应用管理接入的应用均会默认自动接入流量防护能力,可以为应用快速全方位配置流量防护。选择 Java 类型创建的托管应用,会通过挂载探针的方式接入流量防护能力,不需要对业务代码进行任何埋点改造,对业务应用无侵入。
通过 CNStack 平台接入的应用,可以获得秒级业务监控、限流熔断防护、自定义行为配置等多项能力保障服务稳定运行。相比社区流行的开源 sentinel 等流量防护接入方式,使用 CNStack 平台不需要任何代码改造,也不要添加任何额外的配置,可以一键针对所有接入应用开启防护能力。并且 CNStack 平台原生地为所有接入应用提供了更加强大的流量防护能力,以及稳定的秒级监控系统,可以在平台上一站式完成线上系统维护。
为了快速玩转 CNStack 流量防护能力,接下来针对一些常见的线上业务场景,介绍如何在 CNStack 中通过配置流量防护规则,保障业务应用在各类不稳定场景下正常提供服务。
场景 1. 线上流量激增
线上流量有很强的随机性与不可预测性,因为重要新闻发布、活动促销等因素都会导致突发的激增流量。然而线上系统的容量是有限的,如果突发增长的流量超出了系统承受能力,会导致大量请求处理堆积,CPU/Load 飙高,请求处理缓慢甚至报错。因此,在系统设计时需要针对这种突发流量设置保护措施,在尽可能处理请求的同时保障服务不被打垮。
例如当下火爆的 ChatGPT,在发布短短数天时间内用户量达到百万级别,注册用户之多甚至导致服务器爆满,国内也有多个团队及公司发布类 ChatGPT 的对话机器人,用户注册同样火爆。设想这样一个场景,企业研发并上线了一个类 ChatGPT 对话机器人业务,业务应用集群部署的规模预期可以承载数万用户同时访问,但随着业务上线受到广泛关注并且涌入大量用户注册使用,线上用户规模迅速激增至十万,在对线上系统不做流量保护的情况下,大量用户的访问请求可能会将系统直接打垮,导致整个服务瘫痪陷入不可用。但是在 CNStack 流量防护场景下使用流控规则,可以预防线上的突发激增流量,保障系统在可承受的范围内稳定运行。创建一条流控规则的配置参数可以参考下图:
按照上述示例中配置的流控规则,流控策略会将每秒访问 /startTalk 接口的请求次数限制为 600,每秒 600 次以内的请求会全部正常通过,当一秒内的请求量达到 600 后会触发限流,限流后超出 600 个的请求会按照顺序排队等待通过,排队等待时间超出 500ms 后快速失败。最终流控效果如下图所示,当初始流量较低时,所有请求均正常通过,当流量快速增长达到阈值 600 时会触发限流,每秒放行 600 个请求通过,其余请求会被拒绝,保障了阈值范围内流量的正常访问。
场景 2. 微服务自我保护
微服务架构中不同的服务之间可能会存在依赖关系,例如调用第三方的 API、数据库、远程服务,并由不同服务之间相互调用,组成复杂的调用链路。然而,被依赖服务的稳定性是不能保证的,如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。
假设如下场景,微服务通过数据库查询用户信息,所有的查询任务会提交至线程池队列,异步去数据库查询用户信息。由于数据库索引变更或者刷脏页等原因产生了慢 sql,进而使得查询的线程池任务堆积,并最终导致线程池耗尽整个服务不可用。在 CNStack 流量防护场景下,可以针对这样的场景配置熔断规则,对于不稳定的依赖调用进行自动熔断降级,防止下游依赖问题导致自身线程池堆积影响服务稳定性,达到保障整体系统稳定运行的效果。创建一条熔断规则的配置参数可以参考下图:
按照上述示例中配置的熔断规则,熔断策略会在有请求访问 /getUserInfo 接口时,开启长度为 30 秒的统计窗口,并统计访问该接口请求的响应时间,所有响应时间超过 500ms 的请求会被记录为慢调用请求。当一个 30 秒的统计窗口中,响应时间超过 500ms 的慢调用请求在所有请求中所占的比例超过 80%,熔断策略会立即触发 60 秒的熔断,熔断时间内所有请求都会快速失败。熔断时间到达后,熔断策略会允许新的请求通过,如果新请求正常通过,响应时间未达到慢调用 RT 阈值,将会结束熔断恢复正常访问,否则重新进入熔断状态。
熔断降级特性基于熔断器模式的思想,在服务出现不稳定因素(如响应时间变长,错误率上升)的时候暂时切断服务的调用,等待一段时间再进行渐进式恢复尝试。一方面防止给不稳定服务“雪上加霜”,另一方面保护服务的调用方不被拖垮。目前支持两种熔断策略:基于响应时间和基于错误,可以有效地针对各种不稳定的场景进行防护。
场景 3. 细粒度流量控制
线上 Web 流量通常具有非常多的业务属性与参数,如 IP、用户 ID、商品 ID 等,有的业务场景下仅仅从接口纬度配置流控规则是不够的,往往需要与这些业务属性参数结合,针对性的配置流控规则。假设一大波突发请求针对某个热点商品 ID,无法准确预知流量的量级、分布、热点访问情况,大量的请求会击穿缓存,直接打到 DB 层,导致 DB 访问缓慢,挤占正常商品请求的资源池,最后可能会导致系统挂掉。因此针对细粒度的请求属性控制是非常重要的,可以实现热点商品防刷,IP 防刷等一系列更加细粒度的高可用防护策略。
假设某电商平台上架了一批折扣促销商品,其中一款商品被大量用户下单订购,大量的下单修改库存请求打到 DB 层并拖慢整个 DB 访问速度,影响了其余商品的正常下单,导致整个平台购物链路变得不可用。在 CNStack 流量防护场景下使用 web 防护规则,可以针对这样的场景自动分析请求中对应请求属性的值,对每个热点参数限制访问请求次数,防止因为对于热点资源请求数的倾斜,挤占整体正常请求的资源池,达到保障整体系统稳定运行的效果。创建一条 web 防护规则的配置参数可以参考下图:
按照上述示例中配置的 web 防护规则,web 防护策略会在请求访问 /takeOrder 接口时,自动分析请求中的 URL 参数,针对 URL 参数名称为 keyboard 的请求每秒访问次数限制为 20 个,从业务参数纬度对请求进行针对性的进行拦截。当线上用户对该商品大量下单后,对于 URL 参数匹配到该商品的请求会快速失败被拒绝掉,访问其余商品的请求会正常通过,保障平台整体链路正常下单,达到细粒度流量控制的效果。通过这种细粒度维度的控制,不仅可以在 Web 服务端实现 IP 防刷、热点商品防刷等一系列的细粒度高可用防护策略,也可以实现每个用户每个 API 每分钟限制访问 N 次的具有业务含义的流量管控策略。
总结
CNStack 2.0 以更全面和更轻量的形态为客户打造了具有竞争力的云原生平台,并且为业务应用托管提供了更加云原生化的方式。具体深入到微服务架构中,CNStack 原生地提供了全方位的流量防护能力,包含流控、熔断降级、web 防护、系统防护等一系列的微服务流量防护手段,可以有效的针对微服务架构,以及中间件依赖,全链路全方位地为服务集群提供可用性保障。对于云原生时代下微服务的架构设计,更加需要面向失败设计的意识,结合 CNStack 流量防护能力,合理地配置流控降级规则,做好事前防护,能够更加稳定的保障线上业务应用运行稳如磐石。
相关文章:

快速玩转 CNStack 2.0 流量防护
作者:冠钰 云原生下的服务治理 在云原生技术的演进过程中,依托云原生技术能力,形成一个可以向下管理基础设施,向上管理业务应用的技术中台,越来越成为企业期望的云原生技术落地趋势。随着云原生技术中台 CNStack 发布…...

你还在用原生 poi 处理 excel?太麻烦了来瞧瞧这个
1、easypoi 前言 Excel 在日常工作中经常被用来存储用例信息,是一种非常便捷的数据存储工具有着众多的优点,我们就不一一介绍了。 今天来讲讲 Java 操作 Excel,总所周知 Java 是世界上最好的语言(不容反驳)ÿ…...

No.027<软考>《(高项)备考大全》【第11章】项目风险管理
【第11章】项目风险管理1 章节相关1.1 考试相关1.2 ITO口诀2 章节概述2.1 风险的含义2.2 风险定义的三个必要条件2.3 项目风险2.4 风险的随机性和相对性2.5 风险的分类2.6 风险成本2.7.1 风险损失有形成本2.7.2 风险损失无形成本2.8 项目风险管理过程3 规划风险管理4 识别风险4…...

mit6.824 lab2c-数据持久化
目录2c简介2b、2a问题测试时间2c简介 简单的说,raft需要将currentTerm、voteFor、entries(当前的所有日志)保存到硬盘进行持久化存储。 保存的方法:在变量改变时,利用persist()中的gob将变量序列化,存储在persister结构体中。&a…...

leaflet使用L.geoJSON加载文件,参数filter的使用方法(127)
第127个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载geojson文件,这里介绍filter的使用方法。filter将用于决定是否包含某个功能的函数。 默认是包括所有特征。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方…...

23年5月高项学习笔记7—— 质量管理
质量通常指产品质量,也包括工作质量(即过程),产品质量是指产品的使用价值,工作质量是产品质量的保证,反映了产品质量直接相关的工作的对产品质量的保证程度。 公差:结果的可接受范围 项目合同…...

学编程需要哪些基础呢?一起来看看吧
众所周知程序员薪酬高、工作环境好,是很多人向往的职业,那么学编程需要什么基础?0基础能学编程吗? 学编程需要什么基础? 1、数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的&…...

PECS In Java泛型类型通配符限定之<? extends T>与<? super T>
泛型类型通配符限定 🚆PECS | 类型通配符限定如何使用“<? extends T>”和“<? super T>”通配符java源码示例PECS | 类型通配符限定 PECS原则是指在使用泛型时,当我们需要传递一个泛型集合时,如何选择适当的泛型类型通配符来…...

电子招投标系统源码之了解电子招标投标全流程
随着各级政府部门的大力推进,以及国内互联网的建设,电子招投标已经逐渐成为国内主流的招标投标方式,但是依然有很多人对电子招投标的流程不够了解,在具体操作上存在困难。虽然各个交易平台的招标投标在线操作会略有不同࿰…...

admin Tips
1 获取 当前浏览器 url new URL(window.location.href)...

ToBeWritten之Radare2 使用教程
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…...

实时翻译屏幕插件
程序插件的功能是:点击按钮,将获取屏幕截图,然后翻译输出图片。(目前只支持翻译英语) 要实现这个功能,我们可以使用Python编程语言,结合一些库来完成。以下是一个简单的实现方案: …...

代码随想录算法训练营第二天| 977,209,59
977.有序数组的平方 * 数组平方后,最大值一定是在两侧 因为可以采用双指针 package algor.trainingcamp;import java.util.Arrays;/*** author lizhe* version 1.0* description: https://leetcode.cn/problems/squares-of-a-sorted-array/** 有序数组的平方* 给…...

echarts 地图板块点击着色,移除着色
//选择省份变色 showProvince(name) { this.oldName name; this.mapChart && this.mapChart.dispatchAction({ type: geoSelect, name }) }, //移除上次点击变色 hideProvince() { this.mapChart && this.mapChart.dispatchAction({ type: geoUnSelect, name:…...

Visual Studio Code (vscode)自定义用户代码段快速打出for循环等
比如fori这样的快捷键就打不出代码块了 自定义用户代码块的方法: 工具栏 > 文件 > 首选项 > 用户代码片段 然后在弹出的搜索框中填写javascript.json 有提示 不用打全就行 (会有javascript选中) 打开配置文件javascript.json 这里面显示的就是编写代码块的例子 "…...

RocketMQ客户端配置详解
文章目录 ClientConfignamesrvAddrinstanceNameclientIPclientCallbackExecutorThreadspollNameServerIntervalheartbeatBrokerIntervalpersistConsumerOffsetIntervalvipChannelEnabledDefaultMQProducerproducerGroupcreateTopicKeydefaultTopicQueueNumssendMsgTimeoutcompr…...

STM32基于STM32CubeMX DMA + EXTI读取DS1307数据
STM32基于STM32CubeMX DMA EXTI读取DS1307数据✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!🍁对于文中所提供的相关资源链接将作不定期更换。&a…...

C#中的枚举器和迭代器
目录 一、可枚举类型和枚举器 1. 枚举器 2. 可枚举类 3. 使用 IEnumerable 和 IEnumerator 案例 4. 泛型枚举接口 二、迭代器 1. 使用迭代器创建枚举器 2. 使用迭代器创建可枚举类 3. 常见的迭代器模式 4. 产生多个枚举类型 5. 将迭代器作为属性 6. 迭代器的实质 一…...

中山大学人工智能学院——考研上岸经验贴
文章目录初试个人基本情况408数学英语政治复试初试 首先是初试成绩,中山大学在2.21号就公布了成绩和排名,这点很不错,有很多学校只公布成绩而没有排名。我的初试总分386,总排名第二,各个科目还是比较平均的࿱…...

ThreeJS-圣诞节表白3D贺卡(三十)
素材分享: 链接: https://pan.baidu.com/s/1l0mZWfkiLaXJfdvZ7XoY8w 提取码: i69h 提前预知: 向下滚动鼠标滑轮切换视角 关键代码: //初始化渲染器 const render new THREE.WebGLRenderer({ //设置抗锯齿,防失真 antialis: …...

040:cesium加载World Terrain地形图
第040个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载世界地形图。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共64行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https://xiaozh…...

逻辑运算和位移指令
逻辑运算指令 AND OR NOT XOR TEST 逻辑位移指令 SHL SHR 算术位移指令 SAL SAR 小循环位移指令 ROL ROR 大循环位移指令 RCL RCR AND 逻辑与指令 汇编格式:AND 目的操作数,源操作数 执行操作:(目的操作数)&…...

大家现在都去做Linux运维了吗?
运维自互联网出现以来,都是以基础技术部门的形式出现在各个互联网公司或者其他需要网络设备的公司里面,职位由来已久,也是多次徘徊在被淘汰的边缘。很多运维人都是靠着自己良好乐观的心态坚持到现在,接受新技术并学习新技术&#…...

Webpack的编译流程是怎么样的?webpack是如何工作的?
Webpack是一款非常流行的前端构建工具,用于将多个模块打包成一个或多个静态资源。它的工作原理是将模块的依赖关系图转化为最终的静态资源。Webpack的编译流程是一个非常复杂的过程,本文将从四个方面详细介绍Webpack的编译流程,分别是入口点分…...

【ZOJ 1151】Word Reversal 题解(字符串+模拟)
问题描述 对于每个单词列表,在不改变单词顺序的情况下,将每个单词反转输出一行。 此问题包含多个测试用例! 多重输入的第一行是整数N,然后是空行,后面跟着N个输入块。每个输入块 采用问题描述中所示的格式。输入块之间…...

Dart语言操作符?和!的用法
一.基本使用 1. ? 操作符跟在类型后面,表示当前变量可为null。 int a null; //这句代码在有空安全时,编译会提示错误如果想给一个变量赋值null要如何处理呢?只需要在类型 后面添加操作符?即可,eg: int? a null…...

聚类 kmeans | 机器学习
聚类 刘建平 1、算法原理: 是一种无监督学习算法,其主要目的是将数据点分为k个簇,距离近的样本具有更高的相似度,距离近的划分为一个簇,一共划分k个簇,**让簇内距离小,簇间距离大。**距离是样…...

求职咨询Job Information
前言 加油 原文 求职咨询常用会话 ❶ I want to apply for a job which enables me to use my major. 我想要申请一个能用到我的专业知识的职业。 ❷ I have the capability of operating the computer. 我有操作电脑的能力。 ❸ My dream is to be an excellent interpret…...

怎么去除pdf文件的水印?好用软件说明
怎么去除pdf文件的水印?在某些情况下,PDF 文件的水印可能会影响文件的可读性和美观度。为了解决这个问题,您可以考虑使用其他方法来标记文档,例如添加页眉或页脚。另一种选择是使用透明度更低的水印,这样它就不会太过分…...

1-ELK+ Elasticsearch+head+kibana、企业内部日志分析系统
ELK:日志收集平台 ELK由ElasticSearch、Logstash和Kibana三个开源工具组成: 概念图 组件介绍 1、Elasticsearch: ElasticSearch是一个基于Lucene的开源分布式搜索服务。只搜索和分析日志 特点:分布式,零配置,自…...