續上篇,這篇我們來進一步探索 Tye 更多的使用方法。本篇我們將進一步研究 Tye 與分散式應用程式執行時 Dapr 如何碰撞出更精彩的火花。
Newbe.Claptrap 是一個用於輕鬆應對併發問題的分散式開發框架。如果您是首次閱讀本系列文章。建議可以先從本文末尾的入門文章開始瞭解。
巧了,巧了,真是巧了
今天正值 dapr 1.0 釋出的日子。如果你暫時還不瞭解什麼是 dapr。
那不如通過以下簡短的視訊來了解一下什麼是 dapr:
https://www.bilibili.com/video/BV1xz4y167XA/
簡單來說, dapr 為開發者提供了一個開發雲原生應用所需構件的一個抽象層。透過這個抽象層,開發者可以節約很多基礎設施上所需要投入的精力,進一步得到自我解放。
安裝 Dapr runtime
為了在開發環境執行 dapr runtime。 需要先在開發機上進行一些簡單的安裝。
開發者可以通過 dapr 文件庫中的 get started 章節來了解如何在本地初始化開發環境:
https://docs.dapr.io/getting-started/
當然,你也可以通過社群提供的中文文件庫來了解相關過程:
https://dapr-cn.gitee.io/getting-started/
dapr 中文社群致力於為中文使用者提供更加易讀的 dapr 文件中文譯製內容。現在,我們仍然需要更多志同道合的夥伴一同獻力,協作奮進。如果您有意願,歡迎前往專案首頁進行了解:https://github.com/dapr-cn/docs
建立測試應用
首先,我們建立一個和 使用 Tye 輔助開發 k8s 應用竟如此簡單(二) 中提到一樣的測試用例。
即,包含兩個服務的測試應用。
然後,修改 tye.yml
以加入 dapr 擴充套件:
tye.yml
name: tyetest
extensions:
- name: dapr
services:
- name: tyetest
project: TyeTest/TyeTest.csproj
- name: tyetest2
project: TyeTest2/TyeTest2.csproj
|
執行 tye run
,便可以在 tye dashboard 中檢視成功執行的服務例項和 dapr 例項:
使用 swagger 頁面,可以正常的訪問服務。
同時,按照 dapr http 訪問服務也是可以的:
GET http://localhost:5295/v1.0/invoke/tyetest/method/WeatherForecast
|
使用以上方式訪問得到的結果和 swagger 得到的一樣。其中 5295 埠就是上圖中所示的 dapr http 終結點。可以通過日誌檢視到這個資訊:
tyetest.log
[tyetest-dapr_6432571f-b]:C:\Users\Administrator/.dapr/bin/daprd.exe -app-id tyetest -app-port 5290 -dapr-grpc-port 5294 --dapr-http-port 5295 --metrics-port 5296 --placement-host-address localhost:5289
|
這便是使用 tye 簡化 dapr 應用開發的簡易示例。
來點複雜的例子
下面,我們來嘗試執行 Newbe.Claptrap 的最新模板專案,體驗一下 Tye 與 dapr 結合的強力效果。
安裝專案模板
進入 nuget.org 查詢最新的 Newbe.Claptrap.Template 版本,並且使用介面上的命令列安裝專案模板:
https://www.nuget.org/packages/Newbe.Claptrap.Template/
install.sh
dotnet new --install Newbe.Claptrap.Template::0.9.4
|
使用模板建立專案
建立一個資料夾,然後在資料夾中執行以下命令以建立專案:
new.sh
dotnet new newbe.claptrap --name HelloClaptrap
|
部署輔助元件
新建好的專案中存在一個 docker-compose.yml
檔案,用於開發者部署 seq 和 zipkin 等等輔助元件。
將此檔案移動到單獨的位置,使用 docker-compose up -d
便可以順利啟動服務。
當然,開發者也可以自行採用其他方式部署,或者不要部署。這並非必要的內容。
啟動專案
在解決方案資料夾,使用 tye run
便可以順利啟動專案。啟動之後可以在 tye dashboard 上檢視到專案模板包含的所有專案:
進入 helloclaptrap-webapi
服務的 swagger 頁面。呼叫/AuctionItems/{itemId}/status
API:
這就說明服務已經全部啟動成功了。
這實際上是一個拍賣競價的樣例專案。更多的細節可以前往 https://claptrap.newbe.pro 進行了解。
呼叫之後可以在 Jaeger UI 上檢視到服務之間的呼叫關係和效能細節:
小結
本篇,我們嘗試了 Tye 和 Dapr 的聯動操作。初步體驗了一下 dapr 的特性。
開發者如果想要了解更多關於 dapr 的內容,歡迎閱讀官網文件進行了解。
至此,本系列也就告一段落。如果您覺得本系列內容對您有所幫助,歡迎轉發、評論、收藏文章以及專案。
本系列所有測試程式碼,均可以在以下倉庫檢視:
https://github.com/newbe36524/Newbe.Demo/tree/master/src/BlogDemos/Newbe.Tye
最後但是最重要!
如果讀者對該內容感興趣,歡迎轉發、評論、收藏文章以及專案。
最近作者正在構建以 Actor 模式 和 事件溯源 為理論基礎的一套服務端開發框架。希望為開發者提供能夠便於開發出 “分散式”、“可水平擴充套件”、“可測試性高” 的應用系統 ——Newbe.Claptrap
本篇文章是該框架的一篇技術選文,屬於技術構成的一部分。
專案文件庫:claptrap.newbe.pro
聯絡方式: QQ 群 610394020
您還可以查閱本系列的其他選文:
理論入門篇
術語介紹篇
- Actor 模式
- 事件溯源(Event Sourcing)
- Claptrap
- Minion
- 事件 (Event)
- 狀態 (State)
- 狀態快照 (State Snapshot)
- Claptrap 設計圖 (Claptrap Design)
- Claptrap 工廠 (Claptrap Factory)
- Claptrap Identity
- Claptrap Box
- Claptrap 生命週期(Claptrap Lifetime Scope)
- 序列化(Serialization)
- 最小競爭資源 (Minimal Competing Resources)
樣例實踐篇
開發工具篇
- 使用 Tye 輔助開發 k8s 應用竟如此簡單(一)
- 使用 Tye 輔助開發 k8s 應用竟如此簡單(二)
- 使用 Tye 輔助開發 k8s 應用竟如此簡單(三)
- 使用 Tye 輔助開發 k8s 應用竟如此簡單(四)
- 使用 Tye 輔助開發 k8s 應用竟如此簡單(五)
- 使用 Tye 輔助開發 k8s 應用竟如此簡單(六)
其他番外篇
- 談反應式程式設計在服務端中的應用,資料庫操作優化,從 20 秒到 0.5 秒
- 談反應式程式設計在服務端中的應用,資料庫操作優化,提速 Upsert
- 十萬同時線上使用者,需要多少記憶體?——Newbe.Claptrap 框架水平擴充套件實驗
- docker-mcr 助您全速下載 dotnet 映象
- 十多位全球技術專家,為你獻上近十個小時的.Net 微服務介紹
- 年輕的樵夫喲,你掉的是這個免費 8 核 4G 公網伺服器,還是這個隨時可用的 Docker 實驗平臺?
- 如何使用 dotTrace 來診斷 netcore 應用的效能問題
- 只要十步,你就可以應用表示式樹來優化動態呼叫
GitHub 專案地址:https://github.com/newbe36524/Newbe.Claptrap
Gitee 專案地址:https://gitee.com/yks/Newbe.Claptrap
您當前檢視的是先行釋出於 www.newbe.pro 上的部落格文章,實際開發文件隨版本而迭代。若要檢視最新的開發文件,需要移步 claptrap.newbe.pro。
- 本文作者: newbe36524
- 本文連結: https://www.newbe.pro/Newbe.Claptrap/Try-Tye-6/
- 版權宣告: 本部落格所有文章除特別宣告外,均採用 BY-NC-SA 許可協議。轉載請註明出處!