天天看點

Dapr-簡介及環境搭建

 Dapr 是一個可移植的、事件驅動的運作時,它使任何開發人員能夠輕松建構出彈性的、無狀态和有狀态的應用程式,并可運作在雲平台或邊緣計算中,它同時也支援多種程式設計語言和開發架構。

 

Dapr-簡介及環境搭建

 在上圖的第一行中,Dapr 為常見開發平台提供特定于語言的 Sdk。 Dapr 1.0 版包含對go、Node.js、Python、.NET、Java 等的支援。

 盡管語言特定的 Sdk 增強了開發人員體驗,但 Dapr 不限平台。 在背景,Dapr 的程式設計模型通過标準 HTTP/gRPC 通信協定公開功能。 任何程式設計平台都可以通過其本機 HTTP 和 gRPC Api 調用 Dapr。

 圖中心的藍色框表示 Dapr 建構基塊。 每個都公開您的應用程式可以使用的分布式應用程式功能。每個建構塊都是獨立的,這意味着您可以采用其中一個、多個或全部來建構應用

 Dapr體系結構:

  建構塊解決了建構彈性微服務應用程式中的常見挑戰,并編纂了最佳實踐和模式。 Dapr由一組建構塊組成,并且具有可擴充性以添加新的建構塊。

  建構基塊從服務中抽象出分布式應用程式功能的實作:

Dapr-簡介及環境搭建

   

Dapr-簡介及環境搭建

  以下是 Dapr 提供的建構塊類型:

建構塊

終結點

說明

服務調用

<code>/v1.0/invoke</code>

服務調用使應用程式能夠通過 Http 或 gRPC 消息形式互相通信。 Dapr 提供了一個終結點,它充當反向代理與内置服務發現的組合,同時内置分布式跟蹤和錯誤處理。

狀态管理

<code>/v1.0/state</code>

應用程式狀态是應用程式想要保留在單個會話之外的任何内容。 Dapr 提供基于鍵 / 值的狀态 API ,使用可插拔的狀态存儲進行持久化。

釋出訂閱

<code>/v1.0/publish</code> <code>/v1.0/subscribe</code>

釋出/預訂是松散耦合的消息傳遞模式,發送方 (或釋出者) 将消息推送到訂閱者預訂的主題。 Dapr 支援應用程式之間的釋出/訂閱模式。

資源綁定

<code>/v1.0/bindings</code>

綁定提供一個外部雲與本地服務或系統的雙向連接配接。 Dapr 允許您通過 Dapr 綁定 API 調用外部服務,也可以通過已連接配接的服務發送的事件來觸發應用程式。

Actors

<code>/v1.0/actors</code>

參與者是孤立的獨立計算單元,具有單線程執行。 Dapr提供了基于Virtual Actor模式的actor實作,該模式提供了單線程程式設計模型,并且在不使用actor時會對其進行垃圾回收。

可觀測性

<code>無</code>

Dapr 系統元件和運作時記錄 metrics,log 和 trace 以調試,操作和監視 Dapr 系統服務,元件和使用者應用程式。

秘密

<code>/v1.0/secrets</code>

Dapr 提供一個機密建構塊 API ,并與 Azure Key Vault 和 Kubernetes 等機密商店內建,以存儲機密。 服務代碼可以調用密鑰 API 從 Dapr 支援的密鑰存儲中檢索密鑰。

   Dapr 使用子產品化設計,将功能作為元件來提供。 每個元件都有接口定義。 所有元件都是可插拔的,是以您可以将元件換為另一個具有相同接口的元件。

   Dapr 提供了以下元件類型:

元件類型

元件

服務發現

由服務調用建構基塊用來與宿主環境內建以提供服務到服務發現。

State

提供一個統一接口,用于與各種狀态存儲實作進行互動。

Pub/sub

提供一個統一接口,用于與各種消息總線實作進行互動。

綁定

提供一個統一接口,用于從外部系統觸發應用程式事件,并調用具有可選資料有效負載的外部系統。

中間件

允許自定義中間件插入請求處理管道,并針對請求或響應調用其他操作。

機密存儲

提供用于與外部機密存儲(包括雲、邊緣、商業、開源服務)互動的統一接口。

   Dapr 通過 sidecar 體系結構 公開其 建構基塊群組件。 Sidecar 使 Dapr 能夠與服務一起在單獨的記憶體程序或單獨容器中運作。 Sidecar 提供隔離和封裝,因為它們不是服務的一部分,但已連接配接到該服務。 這種分離使每個 都擁有自己的運作時環境,并基于不同的程式設計平台進行建構

  

Dapr-簡介及環境搭建

   Dapr可以托管在多個環境中,包括在Windows/Linux/macOS機器上自托管和Kubernetes

自托管

     Dapr 運作一個單獨的 sidecar 程式,在您的服務代碼中可以通過 HTTP 或 gRPC 調用它。 每個運作的服務都有一個 Dapr 運作時程序 (或 sidecar) ,配置為使用狀态存儲, pub/sub,綁定元件和其他建構塊。

     

Dapr-簡介及環境搭建

容器環境托管

     在托管在容器環境中(如 Kubernetes),Dapr 作為 sidecar 容器運作,和應用程式容器在同一個 pod 中。     

Dapr-簡介及環境搭建

 開發人員習慣于 Web + 資料庫應用架構(例如經典 3 層設計),但對天然支援分布式的微服務應用架構卻感覺陌生。 成為分布式系統專家很難,并且你也不需要這麼做。 開發人員希望專注于業務邏輯,同時希望平台為其提供可伸縮的、彈性的、可維護的和雲原生架構的其他功能。

 這就是Dapr所要解決的。 Dapr 将建構微服務應用的 最佳實踐 設計成開放、獨立和子產品化的方式,讓你能夠使用任意的開發語言和架構建構可移植的應用程式。 每個建構塊都是完全獨立的,您可以采用其中一個、多個或全部來建構你的應用。

 此外,Dapr 是和平台無關的,這意味着您可以在本地、Kubernetes 叢集或者其它內建 Dapr 的托管環境中運作應用程式。 這使得您能夠在雲平台和邊緣計算中運作微服務應用。

 使用 Dapr,您可以使用任何語言、架構輕松建構微服務應用,運作在任何地方。

 Dapr 的核心是幫助降低分布式微服務應用程式固有的複雜性。 它基于建構基塊 API 的概念而建構。 Dapr 建構基塊公開常見的分布式應用程式功能,例如狀态管理、服務到服務調用和釋出/子消息傳送。 Dapr 元件位于建構基塊下面,并為每項功能提供具體實作。 應用程式通過配置檔案綁定到各種元件

安裝Dapr CLI腳手架工具

   Dapr CLI 是您用于各種 Dapr 相關任務的主要工具。 您可以使用它來運作一個帶有Dapr sidecar的應用程式, 以及檢視sidecar日志、列出運作中的服務、運作 Dapr 儀表闆。 

   後續案例将使用windows 下的自托管模式進行驗證。

   1.下載下傳最新dapr包:釋出包 ;下載下傳後解壓到指定目錄;并添加到環境變量中。

   2. 檢查dapr是否安裝成功,在指令行中輸入:

    傳回結果為以下結果則安裝成功:

Dapr-簡介及環境搭建

初始化Dapr運作環境

   Dapr 與您的應用程式一起作為sidecar運作,在自托管模式下,這意味着它是您本地機器上的一個程序。 是以,初始化 Dapr 包括擷取 Dapr sidecar 二進制檔案并将其安裝到本地.

   此外,預設初始化過程還建立了一個開發環境,幫助簡化 Dapr 的應用開發。 這包括下列步驟:

運作一個用于狀态存儲和消息代理的Redis容器執行個體

運作一個用于提供可觀察性的Zipkin容器執行個體

建立具有上述元件定義的 預設元件檔案夾

運作用于本地演員支援的Dapr placement服務容器執行個體

   初始化

  檢查版本:

  檢視容器運作:

  驗證元件目錄已初始化:

   會看到以下目錄:

   

Dapr-簡介及環境搭建

 到此,dapr 環境已安裝完成。

 Dapr,就是一種分布式應用程式運作時。