Skip to content

Latest commit

 

History

History
67 lines (47 loc) · 2.99 KB

README_ZH.md

File metadata and controls

67 lines (47 loc) · 2.99 KB

自适应限流概述

EN

特点

  1. 使用方便,只需提交SmartLimiter资源即可达到服务限流的目的。
  2. 自适应限流,根据服务的资源使用量等指标动态的触发限流规则。

背景

一方面,随着Mixer的移除,用户不得不面对异常复杂的EnvoyFilter配置,另一方面固定的限流策略不够灵活,普通限流无法覆盖服务CPU使用量达到阈值后开启限流等场景。为了解决这两个痛点,我们推出了自适应限流组件slime/limiter。用户只需提交符合我们定义的SmartLimiter,即可完成灵活的服务限流要求。

思路

自适应限流的首要目标是为了让用户从繁琐的EnvoyFilter配置中脱离出来,所以我们利用kubernetesCRD机制,我们定义了一套简便的API,即kubernetes内的SmartLimiter资源。用户只需要按照SmartLimiter的规范提交一个CR

apiVersion: microservice.slime.io/v1alpha1
kind: SmartLimiter
metadata:
  name: productpage
  namespace: default
spec:
  sets:
    v1:
      descriptor:
      - action:
          fill_interval:
            seconds: 1
          quota: "10"
        condition: "{{.v1.cpu.sum}}>10"

自适应限流的另一个目标是让限流策略足够的灵活,比如当服务的CPU使用量达到阈值后开启限流,为此我们引入了prometheus组件,利用PromQL查询相关metric,当指标达到阈值后下发一份envoyfilter.

架构

自适应限流的主体架构分为两个部分,一部分包括SmartLimiterEnvoyFilter的逻辑转化,另一部分包括集群内监控数据的获取,包括服务的CPU, Memory,POD数量等数据,具体细节说明参见架构

功能介绍

自适应限流模块可以对整个服务或者服务下的分组进行限流,详见基于监控的自适应限流分组限流服务限流

安装和使用

smartlimiter依赖prometheus组件和一些必要的CRD声明,详见安装和使用

示例

bookinforeviews服务开启自适应限流,详见示例

E2E测试

功能开发时候,可以通过E2E模块进行模块功能验证。 自适应限流的另一个目标是让限流策略足够的灵活,比如当服务的CPU使用量达到阈值后开启限流,为此我们引入了prometheus组件,利用PromQL查询相关metric,当指标达到阈值后下发一份envoyfilter.