天天看點

Dapr-元件(Components)

 前面文章對Dapr的建構塊進行了解,接下來對Dapr中對建構塊的實作——元件

 Dapr 使用子產品化設計,将功能作為元件來提供。 每個元件都有接口定義。 所有的元件都是可插拔的,是以在理想的情況下,你可以用一個具有相同接口的元件換掉另一個。 用于生産的每個元件, 需要保持一套技術要求,以確定元件的功能相容性和強度。

 元件需包含:

符合定義的Dapr接口

功能正确和強健

完善的文檔和維護

 目前支援元件類型:

狀态存儲:狀态存儲元件是存儲鍵值對的資料存儲(資料庫、檔案、記憶體),其作為 狀态管理 的構模組化塊之一。

服務發現:服務發現元件與 服務調用 建構塊配合使用,與托管環境內建以提供服務到服務發現。 

中間件:Dapr 允許将自定義 中間件 插入請求處理管道。 中間件可以在請求路由到使用者代碼之前,或者在将請求傳回給用戶端之前,對請求執行額外的操作(例如,認證,加密和消息轉換)。 中間件元件與 服務調用 基礎結構塊一起使用。

Pub/Sub代理:釋出/訂閱 元件是消息分發器,可以作為應用程式之間進行消息釋出 & 訂閱 建構塊。

綁定:綁定 建構塊使得外部資源可以連接配接到 Dapr 以觸發服務或作從應用觸發外部服務。

秘鑰存儲:在 dapr 中,密鑰 是指任何你不想給不受歡迎的人(例如:黑客)知道的私有資訊。 密鑰存儲被用來存儲可以在服務中被擷取以及被使用的密鑰

 可以發現目前支援的元件類型與建構塊相對應。

 Dapr 使用 CustomResourceDefinition 定義和注冊元件。 所有元件都定義為 CRD,可應用于 Dapr 運作的任何托管環境。

 格式:

 格式說明:  

字段

必填

詳情

Example

apiVersion

Y

您正在調用的Dapr版本(如果适用的話為 Kubernetes) API

<code>dapr.io/v1alpha1</code>

kind

CRD的類型。 元件必須始終是 <code>Component</code>

<code>Component (元件)</code>

metadata

-

有關元件注冊的資訊

metadata.name

元件的名稱

<code>prod-statestore</code>

metadata.namespace

N

主機環境的命名空間

<code>myapp-namespace</code>

spec

關于元件資源的詳細資訊

spec.type

元件類型

<code>state.redis</code>

spec.version

元件版本

<code>v1</code>

spec.initTimeout

元件初始化的逾時時間 預設為30秒

<code>5m</code>, <code>1h</code>, <code>20s</code>

spec.ignoreErrors

如果元件加載失敗,請告訴Dapr sidecar 繼續初始化。 預設為 false

<code>false</code>

spec.metadata

一個元件特定配置的鍵/值。 檢視你的元件字段定義

 特殊值:

  中繼資料值可以包含一個 <code>{uuid}</code> 标簽,當 Dapr sidecar 啟動時,該标記将被随機生成的 UUID 所取代。 每個啟動都會生成新的 UUID。

 1、秘鑰倉儲元件:

  描述檔案格式:

  密鑰存儲的類型由<code>type</code>字段決定,連接配接位址和其他中繼資料等放在<code>.metadata</code>部分。

  目前支援秘鑰存儲通用類型:

Name

狀态

自從

Local environment variables

Beta

v1

1.0

Local file

HashiCorp Vault

Alpha

Kubernetes secrets

GA

 2、中間件元件

  Dapr 允許通過連結一系列中間件元件來定義自定義處理管道。 請求在路由到使用者代碼之前經過所有已定義的中間件元件,然後在傳回到客戶機之前,按相反順序經過已定義的中間件,如下圖中所示。

Dapr-元件(Components)

   中間件描述檔案格式:

  中間件類型由 <code>type</code> 字段決定。 元件設定值,如速率限制,OAuth 憑據和其他設定被放入 <code>metadata</code> 部分。

  目前支援http類型type包含:

說明

Rate limit

限制每秒允許的 HTTP 請求的最大數量

OAuth2

在Web API上啟用OAuth2授權授權流程

OAuth2 client credentials

在Web API上啟用OAuth2用戶端憑證授予流程

Bearer

使用 OpenID Connect在 Web API 上驗證 Bearer Token

Open Policy Agent

将Rego/OPA政策應用到傳入的Dapr HTTP請求中

Uppercase

将請求的正文轉換為大寫字母

GA (For local development)

  接下來在Dapr配置中配置中間件順序,格式如下:

 3、限定元件作用作用域  

  Dapr 元件的名稱空間(注意與 Kubernetes 名稱空間概念區分),這意味着 Dapr runtime 執行個體隻能通路已部署到同一名稱空間的元件。

  當 Dapr 運作時,它将自己的配置名稱空間與其加載的元件的命名空間進行比對,并且僅初始化與其名稱空間比對的元件。 并且不會加載不同命名空間中的所有其他元件。

  名稱空間可用于限制元件通路特定的 Dapr 執行個體。

  例如:指定元件的命名空間

  如果設定命名空間後,則在調用服務時需指定命名空間:如

  開發人員和操作員可能希望将一個資料庫的通路權限限制為某個應用程式或一組特定應用程式。 為此,Dapr 允許您在元件 YAML 上指定scopes`作用域。 添加到元件的這些應用程式作用域僅限制具有特定 ID 的應用程式才能使用該元件。

  上面示例示範如何給予兩個啟用的Dapr應用通路權限, 使用 <code>app1和app2 兩個應用程式可以通路名為 `statestore` 的 Redis 元件,這個元件部署在 `production` 命名空間</code>

  元件就是建構塊的功能實作,接來下準備對 Dapr實作的商場項目進一步探索。進一步對Dapr深入了解及應用