Dapr是Distributed Application Runtime(分布式應用運行時)的縮寫。它是一個可移植的、事件驅動的運行時。
下面介紹如何在Windows平台安裝Dapr:
安裝Dapr CLI
Dapr CLI是使用Dapr相關功能的主要工具,您可以使用它來以Dapr Sidecar的方式啟動應用程序,以及查看Sidecar日志,列出正在運行的服務以及運行Dapr儀表板。
在Powershell中運行以下命令可以將最新的Dapr cli安裝到C:\dapr目錄下,並將此目錄添加到User PATH環境變量:
powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"
注:國內執行這條命令可能會因為網絡問題無法訪問raw.githubusercontent.com導致安裝失敗,可以直接使用瀏覽器代理下載此powershell文件到xx目錄,然后使用以下命令安裝(xx為本地ps1文件所在目錄):
powershell -Command "iwr -useb C:\xx\dapr.ps1 | iex"
首次執行此命令時可能會提示需要更改執行策略來加載不信任的腳本:
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
拷貝這條命令執行,並選擇[Y]確認執行更改。執行策略更改后再次運行上面的powershell命令,完成安裝。
安裝成功后可以運行dapr命令查看是否安裝成功。
初始化Dapr
安裝好Dapr CLI后現在可以通過Dapr CLI初始化Dapr。初始化Dapr將會獲取Dapr Sidecar二進制文件並安裝到本地。
此外,默認的初始化過程還會創建一個開發環境,來幫助簡化Dapr的應用開發。這將包含以下步驟:
- 啟動一個Redis容器實例來作為本地狀態存儲和消息代理;
- 啟動一個Zipkin容器實例(一個分布式追蹤系統)
- 創建一個上述組件的默認文件夾
- 啟動一個Dapr placement service容器實例以獲取本地Actor支持
在擁有管理員權限的命令行(實測不用管理員權限也可以)中執行:
dapr init
注:如果你當前沒有安裝並啟動Docker for Windows是無法繼續初始化的,啟動Docker后再次執行init命令:
以上說明Dapr已經初始化成功,我們可以執行dapr --version查看當前版本情況:
執行成功后我們可以查看當前docker容器的啟動情況:
可以看到分別啟動了三個容器:dapr、redis、zipkin
如上述步驟所述,除了啟動這三個容器外還會生成一個文件夾來存放一系列YMAL文件,用來定義狀態存儲、訂閱 以及 zipkin。這些文件將會被Dapr Sidecar讀取,告訴Sidecar使用Redis容器來進行狀態管理和消息傳遞,並使用Zipkin容器來追蹤信息。Windows環境下此文件夾目錄為:%USERPROFILE%.dapr\
使用Dapr API
完成Dapr初始化工作后就可以通過運行sidecar然后可以直接調用Dapr API
第一步:運行Dapr Sidecar
運行以下命令以啟動Dapr Sidecar,它將在端口5000上偵聽名為DaprDemoApp的空應用程序:
dapr run --app-id DaprDemoApp --dapr-http-port 5000
第二步:測試保存狀態
使用curl命令來向http://localhost:5000/v1.0/state/statestore地址post一個json數據:
curl -X POST -H "Content-Type: application/json" -d '[{ "key": "name", "value": "Edward"}]' http://localhost:5000/v1.0/state/statestore
使用以下命令來查看剛才提交的數據:
curl http://localhost:3500/v1.0/state/statestore/name
這些狀態值都存儲在redis容器里,我們可以進入redis容器查看剛才提交的內容:
或直接使用RDM查看寫入情況:
定義組件
剛才的例子中我們通過Dapr API將數據保存到redis中。Dapr知道使用Redis是因為初始化Dapr時我們使用了默認的組件定義文件。當創建一個應用時,我們大概率會根據實際需求(所需組件)來創建自己的組件定義文件,下面的例子演示如何使用JSON文件作為密鑰管理的組件存儲密鑰。
第一步:創建一個JSON文件來存儲密鑰:
Dapr支持許多密鑰存儲,此處使用最簡單的JSON文件來保存我們的密鑰(注意,此密鑰存儲僅用於開發目的,不建議生產環境使用)。
C:/Edward/mysecrets.json:
{
"my-secret" : "I'm Batman"
}
第二步:創建一個Dapr密鑰存儲組件
首先創建一個新的目錄(my-components)來存放組件文件localSecretStore.yaml:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: my-secret-store
namespace: default
spec:
type: secretstores.local.file
version: v1
metadata:
\- name: secretsFile
value: C:/Edward/mysecrets.json
\- name: nestedSeparator
value: ":"
第三步:運行Dapr sidecar同時指定新創建的組件文件:localSecretStore.yaml:
dapr run --app-id DaprDemoApp --dapr-http-port 5000 --components-path C:\Edward\my-components
第四步:測試從本地JSON文件中獲取密鑰:
curl http://localhost:5000/v1.0/secrets/my-secret-store/my-secret
以上就是Windows平台安裝Dapr的簡易入門教程,后續我會繼續測試.NET 5應用如何使用Dapr提供的相關功能。