Dapr介紹
Dapr - Distributed Application Runtime
安裝Dapr
根據官方手冊安裝,由於安裝鏡像源使用了github導致下載失敗。所以手動下載,復制到了服務器路徑 /usr/local/bin
目錄下。
解壓縮壓縮文件 tar xf dapr_linux_amd64.tar.gz
運行 dapr
檢查安裝狀態
官方教程 Hello World
- Clone 官方quickstarts倉庫
git clone -b v1.5.0 https://github.com/dapr/quickstarts.git
當然,如果服務器沒有安裝git需要先安裝gityum install -y git
,雖然也是從github克隆代碼,一般情況下比較順利。
如果你的網絡不給力,也可以從碼雲上克隆代碼。
git clone -b v1.5.0 https://gitee.com/balabiu/dapr-quickstarts.git
- 啟動 Dapr
必要條件,已經安裝docker服務。
- 運行命令
dapr init
初始化 - 運行命令
dapr --version
檢查版本
- 查看示例代碼
- 其中一個示例服務是使用node.js開發的,首先你需要檢查你是否有node.js運行時。如果你沒有安裝nodejs,使用包管理器安裝
dnf module install nodejs:16
,使用node -v
檢查安裝狀態。
現在,你可以進入到文件夾 quickstarts/hello-world/node 查看 app.js 閱讀以下程序邏輯。
雖然沒有寫過nodejs代碼,但示例代碼是很簡單的,通過簡單閱讀基本邏輯是啟動一個http服務端,監聽幾個接口的端節點。
很簡單的三個接口,訪問node啟動的服務接口,操作dapr。
接口 | 方法 | 邏輯 |
---|---|---|
/order | GET | 請求 http://localhost:3500/v1.0/state/statestore/order 接口,返回訂單狀態 |
/neworder | POST | 請求 http://localhost:3500/v1.0/state/statestore/order 接口,新增訂單狀態 |
/order/:id | DELETE | 請求 http://localhost:3500/v1.0/state/statestore/order 接口,刪除訂單狀態 |
- 使用Dapr運行nodejs應用
- 進入 quickstarts/hello-world/node 目錄
- 運行
npm install
還原包 - 運行
dapr run --app-id nodeapp --app-port 3000 --dapr-http-port 3500 node app.js
啟動nodejs app
- 測試服務
- 使用POST方法請求接口
http://1.15.252.231:3000/neworder
新增訂單,請求數據如下:
{
"data": {
"orderId": "42"
}
}
- 使用GET方法請求接口
http://1.15.252.231:3000/order
,返回訂單數據Id - 使用DELET方法請求接口
http://1.15.252.231:3000/order/42
,刪除數據42
- 使用Dapr運行Python應用
這個應用會持續訪問nodejs應用更新訂單Id接口。
- 進入 hello-world/python 目錄下
- 使用dapr啟動python應用
dapr run --app-id pythonapp python3 app.py
。當然,上面的nodejs應用必須保持運行。
- 停止dapr應用
- 列表
dapr list
- 停止nodejs應用
dapr stop --app-id nodeapp
- 停止python應用
dapr stop --app-id pythonapp
總結
通過這次初體驗,得到的知識點如下
- Dapr默認初始化安裝
darp init
,必須有docker環境。 - 通過Dapr的服務調用,進行了一個狀態寫入和查詢。
- 使用dapr運行程序,是將程序注冊到了dapr。
--app-id
指定應用名稱,--dapr-http-port
指定應用的端口后,有這這兩個參數,為以后的服務調用做准備。(這個應該就是dapr的邊車sidecar模式,不影響原來的程序,通過啟動程序時候進行注冊來來進行服務發現調用)