Sentinel 容错中间件组件

使用 Sentinel 中间件来保证应用程序的可靠性和弹性

Sentinel 是一个强大的容错组件,专注于流量管理,涵盖流量控制、流量整形、并发限制、熔断降级和自适应系统保护等多个领域,以确保微服务的可靠性和弹性。

Sentinel HTTP 中间件 使 Dapr 可以利用 Sentinel 的强大功能来保护您的应用程序。您可以参考 Sentinel Wiki 以获取有关 Sentinel 的更多详细信息。

组件格式

在以下定义中,最大请求数被设定为每秒 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
flowRules Sentinel 流量控制规则的 JSON 数组 流量控制规则
circuitBreakerRules Sentinel 熔断器规则的 JSON 数组 熔断器规则
hotSpotParamRules Sentinel 热点参数流量控制规则的 JSON 数组 热点规则
isolationRules Sentinel 隔离规则的 JSON 数组 隔离规则
systemRules Sentinel 系统规则的 JSON 数组 系统规则

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

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

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

所有具体的 HTTP API 信息可以在 [Dapr API 参考]https://v1-15.docs.dapr.io/zh-hans/reference/api/ 中找到。在上述示例配置中,resource 字段被设置为 POST:/v1.0/invoke/nodeapp/method/neworder

Dapr 配置

要应用中间件,必须在 configuration 中引用。请参阅 中间件管道

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

相关链接