Skip to content

rate limiting server

liubao edited this page Jun 21, 2022 · 2 revisions

服务端限流

一个微服务能够使用的资源(CPU、内存等)是有限的,限流是最简单的防止流量超出资源处理能力的措施。 服务端限流指一个请求(通常为REST)到达微服务的时候,微服务判断当前流量大小,拒绝多余的流量。 由于流量通常分布是不均匀的,限流不是单纯的通过请求计数拒绝流量,还会通过一定的流量梳理算法, 使得突发流量能够均匀的被转发给微服务处理。

Spring Cloud Huawei的服务端限流可以用下图表示:

consumer ------REST-------> provider

         流量分布        拒绝的流量     限流后
         ------                      ----- 
         --------                    -----
         --             -            -----

全局限流

servicecomb:
  matchGroup:
    AllOperation: |
      matches:
        - apiPath:
            prefix: "/"
  rateLimiting:
    AllOperation: |
      rate: 10

全局限流可以通过匹配所有的url实现。

限制某个微服务的流量

servicecomb:
  matchGroup:
    consumerAllOperation: |
      matches:
        - apiPath:
            prefix: "/"
          serviceName: consumer
  rateLimiting:
    consumerAllOperation: |
      rate: 10

在matches里面指定serviceName,可以让限流器只限制consumer微服务的流量。

Spring Cloud Gateway

可以在 Spring Cloud Gateway 使用限流策略。由于进入Spring Cloud Gateway的流量信息没有 微服务概念,所以Spring Cloud Gateway不能配置某个微服务的流量,只能配置某个业务的流量。

注意事项

集成Spring Cloud Huawei以后,默认集成了限流模块 spring-cloud-starter-huawei-governance, 只需要通过配置开启具体的限流策略。

Clone this wiki locally