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