使用 Tye 輔助開發 k8s 應用竟如此簡單(六)

Newbe36524發表於2021-02-26

續上篇,這篇我們來進一步探索 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 例項:

dapr instance

使用 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 上檢視到專案模板包含的所有專案:

newbe.claptrap service

進入 helloclaptrap-webapi 服務的 swagger 頁面。呼叫​/AuctionItems​/{itemId}​/statusAPI:

newbe.claptrap AuctionItems​

這就說明服務已經全部啟動成功了。

這實際上是一個拍賣競價的樣例專案。更多的細節可以前往 https://claptrap.newbe.pro 進行了解。

呼叫之後可以在 Jaeger UI 上檢視到服務之間的呼叫關係和效能細節:

newbe.claptrap AuctionItems​

小結

本篇,我們嘗試了 Tye 和 Dapr 的聯動操作。初步體驗了一下 dapr 的特性。

開發者如果想要了解更多關於 dapr 的內容,歡迎閱讀官網文件進行了解。

至此,本系列也就告一段落。如果您覺得本系列內容對您有所幫助,歡迎轉發、評論、收藏文章以及專案。

本系列所有測試程式碼,均可以在以下倉庫檢視:

https://github.com/newbe36524/Newbe.Demo/tree/master/src/BlogDemos/Newbe.Tye

最後但是最重要!

如果讀者對該內容感興趣,歡迎轉發、評論、收藏文章以及專案。

最近作者正在構建以 Actor 模式 和 事件溯源 為理論基礎的一套服務端開發框架。希望為開發者提供能夠便於開發出 “分散式”、“可水平擴充套件”、“可測試性高” 的應用系統 ——Newbe.Claptrap

本篇文章是該框架的一篇技術選文,屬於技術構成的一部分。

專案文件庫:claptrap.newbe.pro

聯絡方式: QQ 群 610394020

您還可以查閱本系列的其他選文:

理論入門篇

  1. Newbe.Claptrap - 一套以 “事件溯源” 和 “Actor 模式” 作為基本理論的服務端開發框架

術語介紹篇

  1. Actor 模式
  2. 事件溯源(Event Sourcing)
  3. Claptrap
  4. Minion
  5. 事件 (Event)
  6. 狀態 (State)
  7. 狀態快照 (State Snapshot)
  8. Claptrap 設計圖 (Claptrap Design)
  9. Claptrap 工廠 (Claptrap Factory)
  10. Claptrap Identity
  11. Claptrap Box
  12. Claptrap 生命週期(Claptrap Lifetime Scope)
  13. 序列化(Serialization)
  14. 最小競爭資源 (Minimal Competing Resources)

樣例實踐篇

  1. 設計一個火車票銷售系統

開發工具篇

  1. 使用 Tye 輔助開發 k8s 應用竟如此簡單(一)
  2. 使用 Tye 輔助開發 k8s 應用竟如此簡單(二)
  3. 使用 Tye 輔助開發 k8s 應用竟如此簡單(三)
  4. 使用 Tye 輔助開發 k8s 應用竟如此簡單(四)
  5. 使用 Tye 輔助開發 k8s 應用竟如此簡單(五)
  6. 使用 Tye 輔助開發 k8s 應用竟如此簡單(六)

其他番外篇

  1. 談反應式程式設計在服務端中的應用,資料庫操作優化,從 20 秒到 0.5 秒
  2. 談反應式程式設計在服務端中的應用,資料庫操作優化,提速 Upsert
  3. 十萬同時線上使用者,需要多少記憶體?——Newbe.Claptrap 框架水平擴充套件實驗
  4. docker-mcr 助您全速下載 dotnet 映象
  5. 十多位全球技術專家,為你獻上近十個小時的.Net 微服務介紹
  6. 年輕的樵夫喲,你掉的是這個免費 8 核 4G 公網伺服器,還是這個隨時可用的 Docker 實驗平臺?
  7. 如何使用 dotTrace 來診斷 netcore 應用的效能問題
  8. 只要十步,你就可以應用表示式樹來優化動態呼叫

GitHub 專案地址:https://github.com/newbe36524/Newbe.Claptrap

Gitee 專案地址:https://gitee.com/yks/Newbe.Claptrap

您當前檢視的是先行釋出於 www.newbe.pro 上的部落格文章,實際開發文件隨版本而迭代。若要檢視最新的開發文件,需要移步 claptrap.newbe.pro

Newbe.Claptrap

------ 本文結束 ------

相關文章