配置中间件组件

通过添加中间件组件自定义处理管道

Dapr 允许通过串联一系列中间件组件来定义自定义处理管道。您可以在以下两种场景中使用中间件管道:

  1. 基础模块 API - 在调用任何 Dapr HTTP API 时执行 HTTP 中间件组件。
  2. 服务间调用 - HTTP 中间件组件应用于服务间调用。

配置 API 中间件管道

启动时,Dapr sidecar 会为传入的 HTTP 调用构建一个中间件处理管道。默认情况下,管道由追踪和 CORS 中间件组成。可以通过 Dapr configuration 配置的其他中间件按定义顺序添加到管道中。该管道适用于所有 Dapr API 端点,包括 state、pubsub、service-invocation、bindings、secret、configuration、分布式锁等。

请求在路由到用户代码之前会依次经过所有定义的中间件组件,然后在返回给客户端之前以相反的顺序再次经过这些中间件,如下图所示。

图示请求和响应通过中间件的流程,如上段所述

在使用 httpPipeline 配置调用 Dapr HTTP API 时,HTTP 中间件组件会被执行。

以下配置示例定义了一个自定义管道,使用了 OAuth 2.0 中间件大写中间件组件。在这种情况下,所有请求在转发到用户代码之前都通过 OAuth 2.0 协议进行授权,并转换为大写文本。

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: pipeline
  namespace: default
spec:
  httpPipeline:
    handlers:
      - name: oauth2
        type: middleware.http.oauth2
      - name: uppercase
        type: middleware.http.uppercase

与其他组件一样,中间件组件可以在支持的中间件参考dapr/components-contrib 仓库中找到。

查看所有中间件组件

配置应用中间件管道

在进行服务间调用时,您也可以使用任何中间件组件。例如,在零信任环境中添加令牌验证,转换特定应用端点的请求,或应用 OAuth 策略。

服务间调用中间件组件适用于从 Dapr sidecar 到接收应用(服务)的所有传出调用,如下图所示。

图示服务调用请求的流程。从调用者 Dapr sidecar 到被调用应用的请求经过应用中间件管道,如上段所述。

任何可以用作 HTTP 中间件的中间件组件也可以通过 appHttpPipeline 配置应用于服务间调用。下面的示例为从 Dapr sidecar(服务调用的目标)到应用的所有传出调用添加了 uppercase 中间件组件。

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: pipeline
  namespace: default
spec:
  appHttpPipeline:
    handlers:
      - name: uppercase
        type: middleware.http.uppercase

相关链接