Dapr是一套開源、可移植的事件驅動型運作時,允許開發人員輕松立足雲端與邊緣位置運作彈性、微服務、無狀态以及有狀态等應用程式類型。Dapr能夠確定開發人員專注于編寫業務邏輯,而不必分神于解決分布式系統難題,由此顯著提高生産力并縮短開發時長。Dapr 是用于建構雲原生應用程式的開發人員架構,可以更輕松幫助開發人員在 Kubernetes 上建構運作多個微服務,并與外部狀态存儲/資料庫、機密存儲、釋出/訂閱代理以及其他雲服務和自托管解決方案進行互動。
2022年10月13日正式釋出了1.9版本,Dapr v1.9.0 版本提供了幾項新功能,包括可插入元件、彈性名額和應用運作狀況檢查,以及核心運作時群組件中的許多修複。
- 詳細了解Dapr[1]
- 閱讀 Dapr 1.9.0 的發行說明[2]
亮點
可插拔元件
我們現在可以建立稱為“可插拔元件”[3]的私有元件。隻需使用任何支援gRPC 的語言編寫一個帶有 gRPC 服務的元件,将二進制檔案放入檔案系統中,即可開始使用。在Sample 倉庫裡提供了一個 .NET的模闆例子[4]。
可觀察性:Open Telemetry(OTEL) 協定支援
OpenTelemetry(OTEL) 将OpenCensus、Zipkin 和OpenTracing等項目組合到标準 API 和規範集中,用于跟蹤和名額。在1.9 版本中,Dapr 包括了 對OpenTelemetry的支援[5]。
可觀察性:彈性能力名額
已添加用于彈性能力[6]的名額,能夠跟蹤以下各項的數量:
- 已加載彈性政策
- 執行彈性政策的次數
可靠性:應用程式運作狀況檢查
應用運作狀況檢查[7]是一項新功能,允許探測應用程式的運作狀況并對狀态更改做出反應。啟用應用程式運作狀況檢查後,Dapr 運作時将通過 HTTP 或 gRPC 調用定期輪詢應用程式。當 Dapr 檢測到應用的運作狀況出現故障時,它會代表應用程式停止接受新的請求。
可靠性:預設彈性政策
借助彈性政策,我們現在可以設定預設政策[8],這些政策的範圍可能很廣。這是通過應用于給定政策的保留關鍵字來完成的。有 3 種預設政策類型:
- DefaultRetryPolicy
- DefaultTimeoutPolicy
- DefaultCircuitBreakerPolicy
如果定義了這些政策,将它們用于對服務、應用程式或元件的每個操作。還可以通過對特定目标使用其他關鍵字來修改它們以使其更具體。
服務調用:應用中間件
現在,在進行服務到服務調用時,可以使用任何中間件元件。例如,用于零信任環境中的令牌驗證或應用 OAuth 政策。服務到服務調用中間件元件[9]适用于從 Dapr sidecar 到接收應用程式的所有傳出調用。
釋出/訂閱:命名空間使用者組
将 Dapr 應用程式部署到所有共享相同app id的不同命名空間,并将所有主題訂閱的範圍限定在命名空間級别。使用用于釋出/訂閱的命名空間使用者組[10],開發團隊可以重用相同的釋出/訂閱底層基礎架構,而無需根據他們運作的命名空間更改其代碼。
相關連結:
[1]詳細了解Dapr: https://docs.dapr.io/concepts/overview/
[2]閱讀 Dapr 1.9.0 的發行說明:https://blog.dapr.io/posts/2022/10/13/dapr-v1.9-is-now-available/
[3]可插拔元件: https://v1-9.docs.dapr.io/operations/components/pluggable-components
[4].NET的模闆例子:https://github.com/dapr/samples/tree/master/pluggable-components-dotnet-template
[5]對OpenTelemetry的支援:https://v1-9.docs.dapr.io/developing-applications/building-blocks/observability/w3c-tracing-overview/
[6]彈性能力: https://github.com/dapr/dapr/blob/master/docs/development/dapr-metrics.md#resiliency
[7]應用運作狀況檢查:https://v1-9.docs.dapr.io/operations/observability/app-health
[8]預設政策:https://v1-9.docs.dapr.io/operations/resiliency/policies/#setting-default-policies
[9]服務到服務調用中間件元件:https://v1-9.docs.dapr.io/developing-applications/middleware/#configuring-app-middleware-pipelines
[10]用于釋出/訂閱的命名空間使用者組: https://v1-9.docs.dapr.io/developing-applications/building-blocks/pubsub/howto-namespace/