Sentinel 容错中间件组件

使用 Sentinel 中间件来保障应用的可靠性和弹性

Sentinel 是一个强大的容错组件,以"流量"为切入点,涵盖了流量控制、流量整形、并发限制、熔断降级和自适应系统保护等多个领域,从而保障微服务的可靠性和弹性。

Sentinel HTTP 中间件 使 Dapr 能够利用 Sentinel 的强大能力来保护你的应用程序。有关 Sentinel 的更多细节,你可以参考 Sentinel Wiki

组件格式

在以下定义中,每秒最大请求数设置为 10:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: sentinel
spec:
  type: middleware.http.sentinel
  version: v1
  metadata:
  - name: appName
    value: "nodeapp"
  - name: logDir
    value: "/var/tmp"
  - name: flowRules
    value: >-
      [
        {
          "resource": "POST:/v1.0/invoke/nodeapp/method/neworder",
          "threshold": 10,
          "tokenCalculateStrategy": 0,
          "controlBehavior": 0
        }
      ]

规格元数据字段

字段详情示例
appName当前运行服务的名称nodeapp
logDir日志目录路径/var/tmp/sentinel
flowRulesSentinel 流量控制规则的 JSON 数组流量控制规则
circuitBreakerRulesSentinel 熔断规则的 JSON 数组熔断规则
hotSpotParamRulesSentinel 热点参数流量控制规则的 JSON 数组热点规则
isolationRulesSentinel 隔离规则的 JSON 数组隔离规则
systemRulesSentinel 系统规则的 JSON 数组系统规则

一旦达到限制,请求将返回 HTTP 状态码 429:请求过多

每个规则定义中的 resource 字段需特别注意。在 Dapr 中,它遵循以下格式:

POST/GET/PUT/DELETE:Dapr HTTP API 请求路径

所有具体的 HTTP API 信息可以在 Dapr API 参考 中找到。在上述示例配置中,resource 字段设置为 POST:/v1.0/invoke/nodeapp/method/neworder

Dapr 配置

要使中间件生效,必须在 配置 中引用该中间件。请参阅 中间件管道

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: daprConfig
spec:
  httpPipeline:
    handlers:
      - name: sentinel
        type: middleware.http.sentinel

相关链接