操作指南:控制并发和限制应用程序的速率
了解如何控制同时调用您应用程序的请求和事件数量
在分布式计算中,通常您可能只希望允许一定数量的请求同时执行。通过使用 Dapr 的 app-max-concurrency
,您可以控制同时调用您应用程序的请求和事件数量。
默认情况下,app-max-concurrency
设置为 -1
,表示不限制并发数量。
不同的方法
本指南主要介绍 app-max-concurrency
,但您也可以使用 middleware.http.ratelimit
中间件来限制每秒的请求速率。理解这两种方法的区别非常重要:
middleware.http.ratelimit
:限制每秒的请求数量app-max-concurrency
:限制在任意时间点的最大并发请求(和事件)数量。
有关该方法的更多信息,请参见速率限制中间件。
演示
观看此视频以了解如何控制并发和速率限制。
配置 app-max-concurrency
如果不使用 Dapr,您需要在应用程序中创建某种信号量并负责获取和释放它。
使用 Dapr,您无需对应用程序进行任何代码更改。
选择您希望配置 app-max-concurrency
的方式。
要在本地开发环境中使用 Dapr CLI 设置并发限制,请添加 app-max-concurrency
标志:
dapr run --app-max-concurrency 1 --app-port 5000 python ./app.py
上述示例将您的应用程序变成一个顺序处理服务。
要在 Kubernetes 中配置并发限制,请将以下注释添加到您的 pod:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nodesubscriber
namespace: default
labels:
app: nodesubscriber
spec:
replicas: 1
selector:
matchLabels:
app: nodesubscriber
template:
metadata:
labels:
app: nodesubscriber
annotations:
dapr.io/enabled: "true"
dapr.io/app-id: "nodesubscriber"
dapr.io/app-port: "3000"
dapr.io/app-max-concurrency: "1"
#...
限制
控制外部请求的并发
速率限制适用于来自 Dapr 的每个事件,包括 pub/sub 事件、来自其他服务的直接调用、bindings 事件等。然而,Dapr 无法对外部传入您应用程序的请求强制执行并发策略。
相关链接
下一步
限制 secret 存储访问Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.