使用 Tye 輔助開發 k8s 應用竟如此簡單(六)
- 2021 年 2 月 26 日
- 筆記
續上篇,這篇我們來進一步探索 Tye 更多的使用方法。本篇我們將進一步研究 Tye 與分散式應用程式運行時 Dapr 如何碰撞出更精彩的火花。
Newbe.Claptrap 是一個用於輕鬆應對並發問題的分散式開發框架。如果您是首次閱讀本系列文章。建議可以先從本文末尾的入門文章開始了解。
巧了,巧了,真是巧了
今天正值 dapr 1.0 發布的日子。如果你暫時還不了解什麼是 dapr。
那不如通過以下簡短的影片來了解一下什麼是 dapr:
//www.bilibili.com/video/BV1xz4y167XA/
簡單來說, dapr 為開發者提供了一個開發雲原生應用所需構件的一個抽象層。透過這個抽象層,開發者可以節約很多基礎設施上所需要投入的精力,進一步得到自我解放。
安裝 Dapr runtime
為了在開發環境運行 dapr runtime。 需要先在開發機上進行一些簡單的安裝。
開發者可以通過 dapr 文檔庫中的 get started 章節來了解如何在本地初始化開發環境:
//docs.dapr.io/getting-started/
當然,你也可以通過社區提供的中文文檔庫來了解相關過程:
//dapr-cn.gitee.io/getting-started/
dapr 中文社區致力於為中文用戶提供更加易讀的 dapr 文檔中文譯制內容。現在,我們仍然需要更多志同道合的夥伴一同獻力,協作奮進。如果您有意願,歡迎前往項目首頁進行了解://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 //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 版本,並且使用介面上的命令行安裝項目模板:
//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:
這就說明服務已經全部啟動成功了。
這實際上是一個拍賣競價的樣例項目。更多的細節可以前往 //claptrap.newbe.pro 進行了解。
調用之後可以在 Jaeger UI 上查看到服務之間的調用關係和性能細節:
小結
本篇,我們嘗試了 Tye 和 Dapr 的聯動操作。初步體驗了一下 dapr 的特性。
開發者如果想要了解更多關於 dapr 的內容,歡迎閱讀官網文檔進行了解。
至此,本系列也就告一段落。如果您覺得本系列內容對您有所幫助,歡迎轉發、評論、收藏文章以及項目。
本系列所有測試程式碼,均可以在以下倉庫查看:
//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 項目地址://github.com/newbe36524/Newbe.Claptrap
Gitee 項目地址://gitee.com/yks/Newbe.Claptrap
您當前查看的是先行發佈於 www.newbe.pro 上的部落格文章,實際開發文檔隨版本而迭代。若要查看最新的開發文檔,需要移步 claptrap.newbe.pro。
- 本文作者: newbe36524
- 本文鏈接: //www.newbe.pro/Newbe.Claptrap/Try-Tye-6/
- 版權聲明: 本部落格所有文章除特別聲明外,均採用 BY-NC-SA 許可協議。轉載請註明出處!