文章目录
- 前言
- 一、什么是流量控制?
- 二、存在三种场景
- 三、场景分析
前言
随着云原生技术的不断发展及应用,很多服务都已部署上云。
保障云上环境的稳定是重要的一环。
一个重要的影响稳定的场景就是突发大流量冲击。
面对该场景,较好的应对措施就是进行流量控制。
本文就流量控制进行简单分析。
一、什么是流量控制?
流量控制实际就是在上述中的某一路径进行拦截处理。
整体的流量路径如下图所示:
二、存在三种场景
-
从公网中访问。例如:某用户访问公司官网时,会先后经过DNS解析域名,选择APIG,ELB,访问某一服务网格的入口网关,最终抵达某个POD中。
-
不同服务网格间的访问。例如:存在服务A和服务B,分别位于不同服务网格中,服务A需要访问服务B,获取一些信息。此时,需要通过VPCEP,到达对方的入口网关,最终抵达某一POD中。
-
同一服务网格中的访问。例如:存在存在服务A和服务B,同属于一个服务网格中,当服务A访问服务B时,会先被si cecar流量劫持,最终抵挡业务容器中。
三、场景分析
-
针对场景1,我们可以在APIG中配置重要API的访问次数限制。在官网中也针对该功能进行了简单介绍。
-
针对场景2,我们通过EnvoyFilter机制流量拦截。
Envoy下的RateLimit提供了流控服务,支持Envoy APIs,项目地址:github.com/envoyproxy/…
在v3 rls.proto文件中,定义了一个服务RateLimitService,我们可以在自己实现的流控服务中增加该grpc接口的具体实现,当流量被EnvoyFilter拦截时,就会转发到该服务中,进行流控判断,是否通过。
-
针对场景3,我们可以在sidecar中补充流控规则。