【云原生】云原生服务网格流量控制思考

前言

随着云原生技术的不断发展及应用,很多服务都已部署上云。

保障云上环境的稳定是重要的一环。

一个重要的影响稳定的场景就是突发大流量冲击。

面对该场景,较好的应对措施就是进行流量控制。

本文就流量控制进行简单分析。

一、什么是流量控制?

流量控制实际就是在上述中的某一路径进行拦截处理。
整体的流量路径如下图所示:
在这里插入图片描述

二、存在三种场景

  1. 从公网中访问。例如:某用户访问公司官网时,会先后经过DNS解析域名,选择APIG,ELB,访问某一服务网格的入口网关,最终抵达某个POD中。

  2. 不同服务网格间的访问。例如:存在服务A和服务B,分别位于不同服务网格中,服务A需要访问服务B,获取一些信息。此时,需要通过VPCEP,到达对方的入口网关,最终抵达某一POD中。

  3. 同一服务网格中的访问。例如:存在存在服务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中补充流控规则。

猜你喜欢

转载自blog.csdn.net/u011397981/article/details/130498848