注意:
文章中提到的命令列工具即是
Windows Terminal
/PowerShell
/cmd
其中的一個,推薦使用Windows Terminal
執行命令列工具的時候建議以管理員身份,避免踩坑
為了保證操作順暢,建議使用PowerShell先執行一下
set-ExecutionPolicy RemoteSigned
安裝Docker
因為Dapr CLI預設會在Docker內啟動 redis、zipkin、placement。
當然這些也不是必須要安裝的,只是推薦安裝可以體驗Dapr的完整能力,方便後續章節的學習。
-
下載並安裝Docker Desktop
-
安裝WSL2,使用命令列工具執行命令
wsl --instal
如果不能使用wsl直接安裝的話可以手動安裝,執行
PowerShell
並執行下面兩句命令dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
如果你再次遇到錯誤提示:0x800f080c 功能名稱 VirtualMachinePlatform 未知。
請保證自己的作業系統版本在Windows 10 build 18917以上
-
重啟電腦後下載WSL2核心
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
-
執行命令列工具,設定預設使用WSL2
wsl --set-default-version 2
-
下載Ubuntu 20.04
-
設定Docker使用WSL2
你“可能”需要一個小工具
不能說的祕密,看檔名猜功能
https://github.com.cnpmjs.org/dotnetcore/FastGithub/releases/download/2.0.4/fastgithub_win-x64.zip
安裝Dapr CLI
官方解釋:Dapr CLI 是您用於各種 Dapr 相關任務的主要工具。 您可以使用它來執行一個帶有Dapr sidecar的應用程式, 以及檢視sidecar日誌、列出執行中的服務、執行 Dapr 儀表板。
CLI是必須要安裝嗎?其實也不是,但新手不建議去體驗這些騷操作。後續文章會講解脫離dapr cli工作。
-
執行
Windows Terminal
或PowerShell
,執行命令,這裡要耐心等待一下iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex
如果是
cmd
執行下面命令:powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"
-
驗證安裝,重新開啟命令列工具執行命令
dapr
,看到下面的提示即安裝正確__ ____/ /___ _____ _____ / __ / __ '/ __ \/ ___/ / /_/ / /_/ / /_/ / / \__,_/\__,_/ .___/_/ /_/ =============================== Distributed Application Runtime Usage: dapr [command] Available Commands: completion Generates shell completion scripts components List all Dapr components. Supported platforms: Kubernetes configurations List all Dapr configurations. Supported platforms: Kubernetes dashboard Start Dapr dashboard. Supported platforms: Kubernetes and self-hosted help Help about any command init Install Dapr on supported hosting platforms. Supported platforms: Kubernetes and self-hosted invoke Invoke a method on a given Dapr application. Supported platforms: Self-hosted list List all Dapr instances. Supported platforms: Kubernetes and self-hosted logs Get Dapr sidecar logs for an application. Supported platforms: Kubernetes mtls Check if mTLS is enabled. Supported platforms: Kubernetes publish Publish a pub-sub event. Supported platforms: Self-hosted run Run Dapr and (optionally) your application side by side. Supported platforms: Self-hosted status Show the health status of Dapr services. Supported platforms: Kubernetes stop Stop Dapr instances and their associated apps. . Supported platforms: Self-hosted uninstall Uninstall Dapr runtime. Supported platforms: Kubernetes and self-hosted upgrade Upgrades a Dapr control plane installation in a cluster. Supported platforms: Kubernetes Flags: -h, --help help for dapr -v, --version version for dapr Use "dapr [command] --help" for more information about a command.
初始化Dapr
-
使用命令列工具執行命令
dapr init
如此之外還有一個精簡版的安裝方式
dapr init --slim
看看官方解釋slim
在此模式下安裝了兩個不同的二進位制檔案
daprd
和placement
。placement
是給actor用的,之前有提到過。在此模式下,不會為狀態管理或釋出/訂閱安裝任何預設元件(如 Redis),那就只能用服務呼叫。其他的需要使用者自己設定環境和自定義元件。
說白了,你只用服務呼叫,那slim是可以的,否則的話你需要手動配置來解決CLI代替你做的那部分工作。
-
驗證Dapr版本
dapr --version
當前時間下,我的版本是
CLI version: 1.4.0 Runtime version: 1.4.3
-
驗證容器
docker ps
dapr init
的容器是包括dapr_placement, dapr_redis, dapr_zipkin -
驗證元件目錄,開啟目錄
%USERPROFILE%\.dapr\
,看到如下結構即代表安裝完成
執行一個示例程式碼看看效果
執行環境準備
vs 2022/2019,建議直接上VS2022體驗64位VS
https://visualstudio.microsoft.com/zh-hans/vs/preview/#download-preview
.net 6,如果你用的不是vs2022,需要自行安裝.net 6
從Github下載示例程式碼
使用命令列工具克隆程式碼庫到本地
ssh(推薦)用下面的命令
git clone git@github.com:doddgu/dapr-study-room.git
https用下面的命令
git clone https://github.com/doddgu/dapr-study-room.git
沒有git的需要先安裝一下git,具體教程可以自行百度
https://github.com/git-for-windows/git/releases/download/v2.33.1.windows.1/Git-2.33.1-64-bit.exe
使用Dapr執行.Net示例程式碼
-
使用命令列工具,跳轉到原始碼目錄
dapr-study-room\Assignment03\Assignment.Server
Tips:在資源管理器找到原始碼目錄
Win 11可以右鍵空白區域 -> 在Windows終端中開啟即可
Win 11以下在資源管理器輸入cmd
-
執行命令
dapr run --app-id assignment-server --app-port 5038 dotnet run
可以先不用瞭解命令列的意思,後續章節會講解
-
看到輸入內容如下即執行成功
== APP == info: Microsoft.Hosting.Lifetime[14] == APP == Now listening on: https://localhost:7038 == APP == info: Microsoft.Hosting.Lifetime[14] == APP == Now listening on: http://localhost:5038 == APP == info: Microsoft.Hosting.Lifetime[0] == APP == Application started. Press Ctrl+C to shut down. == APP == info: Microsoft.Hosting.Lifetime[0] == APP == Hosting environment: Development == APP == info: Microsoft.Hosting.Lifetime[0] == APP == Content root path: D:\Project\OpenSource\dapr-study-room\Assignment03\Assignment.Server time="2021-10-27T18:06:11.8422605+08:00" level=info msg="application discovered on port 5038" app_id=assignment-server instance=SSHZ014 scope=dapr.runtime type=log ver=1.4.3 time="2021-10-27T18:06:11.8788949+08:00" level=info msg="application configuration loaded" app_id=assignment-server instance=SSHZ014 scope=dapr.runtime type=log ver=1.4.3 time="2021-10-27T18:06:11.8803982+08:00" level=info msg="actor runtime started. actor idle timeout: 1h0m0s. actor scan interval: 30s" app_id=assignment-server instance=SSHZ014 scope=dapr.runtime.actor type=log ver=1.4.3 time="2021-10-27T18:06:11.8844485+08:00" level=info msg="dapr initialized. Status: Running. Init Elapsed 1830.3305ms" app_id=assignment-server instance=SSHZ014 scope=dapr.runtime type=log ver=1.4.3 time="2021-10-27T18:06:11.8920835+08:00" level=info msg="placement tables updated, version: 0" app_id=assignment-server instance=SSHZ014 scope=dapr.runtime.actor.internal.placement type=log ver=1.4.3
-
還有一個驗證方式,使用命令列工具執行命令
dapr list
其中APP ID,APP PORT,COMMAND是不變的,其餘都是變的
APP ID HTTP PORT GRPC PORT APP PORT COMMAND AGE CREATED PID
assignment-server 49948 49949 5038 dotnet run 13m 2021-10-27 18:06.09 22596
呼叫Dapr API
-
重新開啟一個命令列工具
-
測試Dapr API,再開啟一個命令列工具
dapr invoke --app-id assignment-server --method hello
-
驗證執行是否成功
執行dapr inovoke的命令列視窗輸出如下
App invoked successfully
執行dapr run的命令列視窗輸出如下
== APP == Hello World!
這個Hello World就是Assignment.Server的API
/hello
列印出來的,此時你的環境已經ok,且第一個示例也執行成功了
給自己點個贊吧?
在這個環境的搭建過程中,可以看到dapr還有點“稚嫩”,畢竟現在才1.4版本,還有很長的路要走
但是這並不妨礙他帶來的一些思想的進步,如果你錯過了微服務的第一波浪潮,也錯過了Service Mesh,那分散式應用執行時(Dapr)
可以作為你新的起點
本章原始碼
Assignment03
https://github.com/doddgu/dapr-study-room
我們正在行動,新的框架、新的生態
我們的目標是自由的
、易用的
、可塑性強的
、功能豐富的
、健壯的
。
所以我們借鑑Building blocks的設計理念,正在做一個新的框架MASA Framework
,它有哪些特點呢?
- 原生支援Dapr,且允許將Dapr替換成傳統通訊方式
- 架構不限,單體應用、SOA、微服務都支援
- 支援.Net原生框架,降低學習負擔,除特定領域必須引入的概念,堅持不造新輪子
- 豐富的生態支援,除了框架以外還有元件庫、許可權中心、配置中心、故障排查中心、報警中心等一系列產品
- 核心程式碼庫的單元測試覆蓋率90%+
- 開源、免費、社群驅動
- 還有什麼?我們在等你,一起來討論
經過幾個月的生產專案實踐,已完成POC,目前正在把之前的積累重構到新的開源專案中
目前原始碼已開始同步到Github(文件站點在規劃中,會慢慢完善起來):
QQ群:7424099
微信群:加技術運營微信(MasaStackTechOps),備註來意,邀請進群
轉載自:(鬼谷子)