大促场景流量入口防护最佳实践 | 学习笔记

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 快速学习大促场景流量入口防护最佳实践

开发者学堂课程【基于 MSE 的大促场景流量入口防护最佳实践大促场景流量入口防护最佳实践学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/1047/detail/15216


大促场景流量入口防护最佳实践


内容介绍

一、大促高可用体系

二、MSE 云原生网关管理流量入口

三、MSE 云原生网关的高可用能力

四、限流规则与行为

五、实战演示


一、大促高可用体系

大促高可用体系大图如下

image.png

阿里云提供全套产品解决方案,帮助企业大促高可用体系建设事半功倍。

提供阿里 PTS 实现全链路压测,通过 MSE 云原生网关实现入口流量南北向限流防护,通过 MSE 微服务治理实现后端服务之间调用东西向的限流防护,通过 ARMS、Tracing 等产品功能实现对业务性能观测发现存在的业务凭性,基于 ACK、ASK 能力进行弹性扩容。概括四点,压测、观测、限流、扩容。

高可用体系建设必须从实践中出真知,通过压测对服务能力进行性能摸底,评估性能是否能接受,不能接受需要对性能进行扩容和优化,可以接受要配置对应的限流规则,以防超出预期的流量将服务打垮。过程中需要做到边压、边看、边限、边扩,不断对对数据进行反馈调整,最终建立保证业务系统高可用的体系。


二、MSE 云原生网关管理流量入口

流量入口侧基于 MSE 云原生网关的最佳实践

基于 MSE 云原生网关的强劲性能,可轻松应对大促流量。MSE 云原生网关可平滑替代默认键,基于同等资源实现两倍以上的吞吐。MSE 云原生网关是托管式部署,用户无需运维节点配置。

为保证高可用网关本身需要配置多节点部署,基于多节点部署,总的网关侧限流阈值等于每个节点限流阈值之和。

传统运维模式需要在压测期间,由运维人员频繁调整多个节点的网关限流配置。使用 MSE 云原生网关,只需配置整体阈值。

下图为例

image.png

通过网关侧创建路由,可将不同的业务路径转发到不同的后端服务,根据不同的服务能力,对路由分别配置不同的限流规则,可实现对后端服务的高可用维护。


三、MSE 云原生网关的高可用能力

云原生网关基于 Alibaba Sentinel 提供丰富的高可用能力,基于阿里巴巴多年双十一流量考验下的经验呈现,包括流控、并发、熔断多种限流规则,可全面保障后端业务高可用。

流控规则是最基础的吞吐限制能力,并发规则可通过控制并发数保障后端服务的低延时。熔断规则可通过慢调用比例,异常请求比例的观测,超过一定阈值时,对路由进行熔断,保护后端服务。规则在 demo 演示中,逐一做详细介绍。


四、限流规则与行为

云原生网关上做限流配置,两处细节需要关注。对特定路由配置限流规则时,需要关注路由的匹配方式。

云原生网关具备强大的路由匹配能力,面向请求方法和请求头的能力,很多网关不具备。此种能力基于 resful 原则设计 api 时,必须的能力,不具备此种能力无法实现细腻度业务 api 限流配置。考虑路由匹配细节,第二个细节是关注限流后自定义行为的设置。

云原生网关支持用户配置合理的自定应答,可在触发限流时保障用户体验。

用户可自定义 text 或 json 的自定义响应,可配置自动跳转的 URL,在很多场景中有用,首页访问的资源限流,通过配置自动降级跳转的 URL,限流时自动跳转 CDN 上的静态页面,可在限流时保障比较好的用户体验。


五、实战演示

包括在云原生网关上配置路由规则,对路由设置流控规则,通过PTS压测验证规则的效果,通过监控观察限流和对应延时的情况。

部署云原生网关

image.png

在 ACK部署应用,应用是 nginx 服务

image.png

云原生网关的来源管理将对应的 ACK 集群关联

image.png

创建服务时可通过指定对应 ACK 下的命名空间的服务,服务创建,路由直接关联服务。

image.png

当前 Pod IP 与服务里服务地址一致,说明服务可正常搭建

image.png

image.png

创建一条测试用路由 text,当前路由配置,通过精确匹配/test路径将对应的请求转发到 app 服务上。

image.png

为方便压测及压力,当前 nginx 服务配置 cpu 限制0.1核

image.png

0.1核 nginx 大概处理2000左右 QPS

通过 PTS 洗压力,在 PTS 配置对应压测的路由,可通过网关绑定的私网 SLB 进行压测,节省公网带宽。

image.png

配置路由后,在施压配置选择阿里云 VPC 内网,对应的 VPC 信息。

image.png

当前设置从20并发增加到200并发的压测方式,20并发维持两分钟,200并发维持两分钟

image.png

路由侧的流控配置,流控规则和并发规则。建立两个规则,总体 QPS阈值限制2000,没打开。

image.png

限制总体阈值20,没打开。

image.png

起压力

image.png

云原生网关通过路由级的限流监控看到压力,没开启 QPS 限制下是2100多。

image.png

开启流控规则

image.png

流控规则开启及时生效,监控采集有延时,需要等待一定时间,可监控图表看具体的情况。

可打开 RT 和并发图表可看到目前并发数20左右,与PTS起压力数一致。延迟较低,5毫秒左右。

image.png

等压力逐渐上升,等待一分钟左右,看200并发情况是什么。

并发数上升200左右,保持通过QPS2000。对比5毫秒 RT 明显增加,翻10倍左右 RT。

image.png

网关限制 QPS 对于控制后端延迟不够,需要打开并发规则

image.png

打开并发规则需要等待一段时间,监控延时有一定时间,规则生效是立即的。当前并发规则生效的情况下,可将并发限制在20左右。并发降下后,整个延时有明显降低。

image.png

关闭两个规则,查看两个规则不启用的状况。

image.png

对压测做复盘,开始在没开启任何规则情况下,流控不生效,整个QPS 吞吐2100左右。开启流控规则,限制在2000左右,开启后流量平滑在2000QPS。并发数调在200左右,通过的 QPS 维持在2000左右,后端延时明显增高,升高10倍。设置对应的并发规则,并发数限制在20左右,进一步控制RT,是流控规则和并发规则常见的应用。没开启流控和并发的情况,RT值更高,80多毫秒

在熔断规则情况下,把并发数调到最大

image.png

熔断规则的配置可通过慢调用比例或异常比例达到一定阈值,对请求进行垄断,保证后端的高可用。配置当慢调用RT超过20毫秒,降级阈值超过50%时,对整个进行10秒垄断。

image.png

垄断规则开启

image.png

请求延时大部分停在80毫秒左右,50%以上超过20毫秒,规则开启后所有请求被垄断。配置10秒垄断,间隔10秒进行对应探测。探测服务发现当前延时下降,继续放行所有请求。整体并发数较高,后端应用不能接受每个吞吐,延时较高,一直处于被拒绝的情况。

image.png

设置自定义的行为,降级到 fallback,可实现把对应的请求,触发垄断时跳转到 fallback 对应的 URL。

请求是 text 的 URL,触发垄断,跳转到对应的降级 URL 上。实现的方式是返回307状态码

image.png

行为可完全自定义,通过关联行为新增行为,可选择以文本或 JSON的方式返回固定的 HTTP 返回文本。

image.png

可选择跳转到指定页面,常见的一种做法对首页或页面,限流时跳转到 CDN 静态页面,保障用户好的体验。

image.png

基于网关实现入口处的流量防控指派功能如上。

插件市场网关的插件能力对于保障高可用的能力,大促场景下可能遇到异常请求,异常请求具有特定的特征,有 URL 特定的参数或互联网爬虫的攻击。通过 requst-bock 或 bot-detect 两个插件,实现流量防护。通过插件市场的能力,可配置对应的 URL、headers 或特定 bodys 里的字段实现流量的屏蔽。

image.png

匹配对应的 URL,是否有 foo、bar 参数存在,参数存在禁止流量,返回404状态码。

image.png

text URL 默认情况对于 foo、bar 请求放弃,访问后面的 nginx 服务上。

image.png

开启插件后,返回对应的404指令。

image.png

image.png

能力可匹配对应的 headers 或 bodys,通过日志分析发现用户存在攻击行为时,请求进行指令。

bot-detect 类似,开启插件后可实现互联网爬虫的屏蔽,大促场景下可减少流量流失,保障核心请求不受影响。

用户可通过自定义插件的形式,创建自己的网关插件,可实现自己的逻辑在网关侧的应用。

image.png

可通过创建插件按钮,输入插件的名称,上传用户自己插件的文件,插件应用程序,提交后对应的插件可使用。

image.png

可配置对应的插件配置,做全局或路由的生效。

image.png

能力在云原生网关的插件市场文档有详细的介绍,支持使用 GOlong、JS、Rust、c++ 等多种语言开发对应的插件。

结合插件能力,用户可自定义管控网关上的流量,基于网关提供限流的能力,可较好实现在大促场景下网关流量防控的管理,对后端服务高可用防护。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
运维 监控 测试技术
130 秒揭秘 EDAS 3.0 如何平滑应对突发流量高峰,为您的业务保驾护航
EDAS3.0的云原生架构是如何满足真实场景下的流控难题和单点故障引起的交易成功率下降的问题的?
9527 5
130 秒揭秘 EDAS 3.0 如何平滑应对突发流量高峰,为您的业务保驾护航
|
5月前
|
云安全 安全 网络安全
云上安全基础防护知识
网络安全涉及核心概念如机密性、完整性、可用性、认证、授权、不可否认性、保密性、可靠性、可控性和隐私保护。这些属性是安全策略的基础。网络风险模型描绘了攻击过程,如洛克希德·马丁的网络杀伤链,包括侦察、武器化、交付、利用、安装、命令与控制及行动阶段。攻防双方的状态图表展示了防御者和攻击者的动态。在中国,互联网安全态势和云安全威胁日益严峻,云安全遵循责任共担原则,阿里云提供了多层安全架构来保障云上安全。
90 0
|
JSON 缓存 监控
基于云原生网关的流量防护实践
本文详尽地介绍了如何在云原生网关上做流量防护,包括在不同的场景下该配置何种防护规则,并给出了详细的使用路径,可以从中体验出云原生网关的流量防护功能相对于其它网关产品限流功能的优势。作为云上网关的核心功能之一,后续我们也会持续强化流量防护功能,也欢迎大家持续关注阿里云官网的 MSE 微服务引擎产品动态。
|
消息中间件 负载均衡 Serverless
「5分钟打造应对流量洪峰的商城交易系统」清理及后续
【重要】体验完成后,如果您无需使用云消息队列RocketMQ 版、SAE和SLB,请按照如下操作及时清理和释放资源。
309 0
|
6月前
|
负载均衡 算法 Java
流量治理基础
如果要了解微服务流量是如何治理的,那么我们需要先了解微服务的流量是如何调用的,在这之前我们必须先熟悉一些基础的知识。本文将借助于我们常见的微服务开发框架Spring Cloud与Apache Dubbo来介绍微服务的服务注册与发现模型、服务路由模型以及负载均衡。当我们了解并熟悉了这些能力之后,我们可...
流量治理基础
|
缓存 监控 Cloud Native
快速玩转 CNStack 2.0 流量防护
快速玩转 CNStack 2.0 流量防护
快速玩转 CNStack 2.0 流量防护
|
人工智能 安全 网络安全
重大活动或者新业务上线场景,如何定制高防防护策略?
重大活动或者新业务上线场景,如何定制高防防护策略?
113 0
|
弹性计算 监控 NoSQL
如何把 ThinkPHP 5 的项目迁移到阿里云函数计算来应对流量洪峰?
Serverless 是以后的趋势,开发者能够有更多的精力去关注业务层。从开始预计迁移到代码的修改以及阿里云函数计算 FC 文档查阅,到迁移成功,花费了大概 3 天的时间,对阿里云函数计算 FC 有了更深层次的认知。
如何把 ThinkPHP 5 的项目迁移到阿里云函数计算来应对流量洪峰?