Dapr v1.13 版本已釋出

张善友發表於2024-03-06

Dapr是一套開源、可移植的事件驅動型執行時,允許開發人員輕鬆立足雲端與邊緣位置執行彈性、微服務、無狀態以及有狀態等應用程式型別。Dapr能夠確保開發人員專注於編寫業務邏輯,而不必分神於解決分散式系統難題,由此顯著提高生產力並縮短開發時長。Dapr 是用於構建雲原生應用程式的開發人員框架,可以更輕鬆幫助開發人員在 Kubernetes 上構建執行多個微服務,並與外部狀態儲存/資料庫、機密儲存、釋出/訂閱代理以及其他雲服務和自託管解決方案進行互動。

2024年3月6日正式釋出了1.13版本,,Dapr v1.13 版本提供了幾項新功能,元件熱過載、Go和Javascript/Typescript SDK對工作流的支援、HTTP伺服器的低指標基數、優雅關機,Rust SDK對Actor的支援等。

  • 詳細瞭解Dapr[1]
  • 閱讀 Dapr 1.13 的發行說明[2]

以下是 v1.13 版本的亮點:

元件熱過載

元件“熱過載”[3]是一種新的預覽功能,啟用後,可以自動拾取元件更新,而無需重新啟動 Dapr 程序。元件規範已協調,並在 Kubernetes 和自託管模式下執行時生效。

Go 和 JavaScript/TypeScript SDK 對工作流的支援

現在,您可以使用 Go 和 JavaScript/TypeScript 編寫具有持久執行能力的容錯、基於工作流的應用程式。
有關詳細資訊,請參閱 Go SDK[4],並嘗試快速入門或
示例
有關更多詳細資訊,請參閱 Javascript SDK[5],並嘗試快速入門或示例

HTTP 伺服器的低指標基數

Dapr 現在包含一個可選設定,用於為 HTTP 伺服器發出的指標啟用低基數,這將在 Dapr 1.14 中預設啟用。

目前,Dapr HTTP 伺服器會發出每個請求路徑的指標,據觀察,這會導致大量記憶體使用併產生其他負面效能影響。
啟用低基數指標後,HTTP Dapr 伺服器的行為更像 gRPC 伺服器,並將每個 Dapr API 的請求組合在一起,從而可能顯著減少記憶體消耗。

優雅關機

Dapr 現在接受一個註釋或 CLI 標誌,該標誌會在此持續時間內延遲完全關閉過程,或者直到應用程式報告為不健康 - 以較早者為準。dapr.io/block-shutdown-duration--dapr-block-shutdown-duration

在此期間,所有訂閱和輸入繫結都將關閉。這對於需要使用 Dapr API 作為其自己的關閉過程的一部分的應用程式非常有用。

執行時和 SDK 中的標準化錯誤程式碼

Dapr、PubSub 和 State API 現在具有返回給應用程式的適當和標準化的錯誤程式碼,包括基於 gRPC 更豐富的錯誤模型的豐富錯誤詳細資訊。

其餘的 API 正在進行中,非常感謝社群對這項工作的貢獻,並且非常有影響力。在此處檢視有關錯誤程式碼的其他資訊。
檢視每個 SDK 的文件,瞭解每個 SDK 的錯誤程式碼解析和處理。請參閱此處的 Go SDK 錯誤解析和處理示例[6]。

Actor Reminder 效能改進

現在,您可以選擇使用 protobuf 序列化而不是 JSON,使 actor Reminder資料使用 protobuf 序列化,從而在多個 Dapr 例項對同一Reminder執行時提高吞吐量、減少延遲並提高穩定性。啟用此功能後,我們觀察到 actor 提醒和工作流基準測試的改進高達 40%。此序列化方法將成為 v1.14 中的預設方法。

重要:啟用此功能後,您不應將 Dapr 控制平面降級到早期版本,因為您的提醒資料可能會變得不可讀。

若要為 actor 提醒啟用 protobuf 序列化,請在 Kubernetes 上設定以下 Helm 引數:
在自託管模式下,執行帶有標誌的 daprd:dapr_placement.maxActorApiLevel=20--max-api-level=20

Rust SDK 對 actor 的支援 (alpha)

您現在可以使用 Rust 來執行 Dapr Actors,這是一種用於高度可擴充套件的有狀態應用程式的程式設計模型。有關更多詳細資訊,請參閱 Rust SDK

元件
基於SQLite的本地名稱解析器

現在,您可以使用基於 SQLite 的名稱解析程式在自承載模式下進行服務呼叫。這對於處理過濾 mDNS 的公司防火牆和 VPN 非常有用。

PostgreSQL 狀態儲存 v2

PostgreSQL 有一個新的 v2 實現,其中包含對效能和可靠性的改進。建議新應用程式使用 v2。v1 實現仍受支援,並且未棄用。沒有從 v1 到 v2 的遷移路徑。

Azure Blob 儲存狀態儲存 v2

Azure Blob 儲存具有新的 v2 實現,建議用於所有新專案,因為它修復了具有鍵字首的向後不相容 bug。v1 實現仍受支援,並且未棄用。沒有從 v1 到 v2 的遷移路徑。

相關連結:

[1]詳細瞭解Dapr: https://docs.dapr.io/concepts/overview/

[2]閱讀 Dapr 1.13的發行說明:https://github.com/dapr/blog/blob/v1.13_release_notes/daprblog/content/posts/2024/v1.13-release.md

[3]元件“熱過載”:https://v1-13.docs.dapr.io/operations/components/component-updates/#hot-reloading-preview-feature

[4]Workflow Go SDK: ttps://github.com/dapr/go-sdk/tree/main/examples/workflow

[5]Workflow Javascript SDK: https://github.com/dapr/js-sdk/tree/main/examples/workflow/authoring

[6]Go SDK 錯誤解析和處理示例:https://v1-13.docs.dapr.io/developing-applications/sdks/go/go-client/#error-handling

相關文章