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 |
| 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 参考 中找到。在上述示例配置中,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