Dapr 是一個開源、可移植的、事件驅動的執行時,可以幫助開發人員構建在雲和邊緣上執行的彈性的、微服務的、無狀態和有狀態應用程式,並且關注於業務邏輯而不用考慮分散式相關的問題,相關的問題可以交給Dapr來解決。
2022年4月8日正式釋出了1.7 版本, 這是這是自Dapr v1.0 釋出以來的第七次小版本更新,Dapr 1.7.0 版本的貢獻者數量非常多。我們要感謝所有 83 位新的和現有的貢獻者,他們幫助我們完成了這個版本。這次更新的內容很多都是大家期待的功能,例如:支援離線部署、更多的成熟Stable元件等,接下來我們一起來看看更新的內容。
跨Dapr API配置重試、超時和斷路器
這部分我也寫了一篇文章:Dapr 彈性的策略,Dapr 1.7.0 實現了第一階段目標。分散式應用程式通常由許多服務組成,任何給定應用程式都有數十個甚至數百個例項。這些應用程式並非孤立存在,而是多次依賴於資料庫、快取、釋出/訂閱、祕密儲存和其他基礎設施服務。隨著更多的依賴關係,系統故障的可能性增加,例如:由於硬體故障、資料庫執行緩慢、請求數量過多、應用程式重新啟動/橫向擴充套件,或其他原因,例項可能會失敗或無響應。設計和實施具有容錯能力(檢測、緩解和響應故障的能力)的應用程式,可以使您的應用程式恢復到正常執行狀態並自我修復,還有助於防止一系列的故障,包括基礎設施服務故障。
Dapr 提供了通過彈性規範定義和應用容錯彈性策略的能力。彈性規範儲存在與元件規範相同的位置,並在 Dapr sidecar 啟動時應用。Sidecar確定如何將彈性策略應用於您的 Dapr API 呼叫。在彈性規範中,您可以為流行的彈性模式定義策略,例如:
- 超時
- 重試
- 斷路器
然後可以將策略一致地應用於目標,其中包括:
- 通過服務呼叫的應用程式
- 元件
- Actors
在可觀測性方面進一步加強
為了提高操作的可見性,元件中新增了新的指標,包括髮布/訂閱、繫結、狀態儲存等。例如:
- 使用元件時的延遲
- 呼叫給定元件的次數
Dapr 執行時將事件記錄到標準輸出以便於診斷,例如:列出啟動時載入的元件的其他執行時資訊。
使用此版本,您現在可以:
- 開啟應用程式和 Dapr sidecar 之間API 呼叫的日誌記錄
- 在輸出日誌中檢視這些呼叫
元件改進
以下元件已升級為穩定版本,特別是MQTT 釋出訂閱元件進入穩定狀態,對於在邊緣計算的採用提供了一個非常好的支援:
- MQTT 釋出/訂閱
- RabbitMQ 釋出/訂閱
- Azure Blob 儲存繫結
- Azure CosmosDB 繫結
- Azure 服務匯流排佇列繫結
在這個版本中新增了3個狀態元件,現共有22個狀態元件。
- CockroachDB 狀態儲存元件
- NATS JetStream 狀態儲存元件
- Oracle 資料庫狀態儲存元件
在現有元件中加入了新的功能:
influxdb繫結現在支援查詢。在這個版本中,現在共有 97 個元件,包括 41 個繫結、1 個配置、8 個 HTTP 中介軟體、3 個名稱解析、13 個 pub/sub、8 個祕密儲存和 23 個狀態儲存。
功能從預覽版移至穩定版
在至少兩個版本可用並徵求反饋和修復後,一些功能從預覽狀態變為穩定狀態。此版本中的以下功能現已穩定:
- Actor重入
- gRPC 代理
- 自動狀態儲存加密,包括新增對使用 128 位、192 位和 256 位金鑰大小的新支援
CLI 更新
▌Kubernetes 名稱空間支援
CLI 的命令 components, configurations, 和 list 在返回的輸出結果中支援Kubernetes的名稱空間
▌簡化證書的更新
- 引入了dapr mtls renew-certificate命令,可以更輕鬆地解決叢集中的根證書到期和續訂問題。
- -k 如果根證書到期時間不足 30 天,任何使用 Kubernetes 選項的 CLI 命令現在都會引發警告訊息。
在自託管模式下安裝 Dapr 的新方法
▌私有和備用映像登錄檔(預覽)
在自託管模式下,CLI init命令現在可以:
- 指定任何私有登錄檔以提取安裝 Dapr 所需的容器Image。
- 提供選擇公共 Docker hub 或 Github 儲存庫的能力。這使您能夠:
將Image放置在您選擇的受信任儲存庫中。
在Image 限制的情況下從不同的公共資源中提取。
▌離線安裝(預覽)
預設情況下,Dapr 會下載二進位制檔案並從網路中提取Image 來設定開發環境。在此版本中,無論是使用 Docker 還是silm環,Dapr 現在可以支援使用預下載的製品進行離線安裝。每個 Dapr 版本的製品現在都內建在Dapr Installer Bundle中,可以從repo :https://github.com/dapr/insta... 下載。通過將此安裝程式包與 Dapr CLI init命令一起使用,從而實現離線安裝。
效能改進
Unix Domain Sockets現在在 Kubernetes 上可用,現在,您可以在使用註釋 dapr.io/unix-domain-socket-path 呼叫 Dapr sidecar 時將 Unix Domain Sockets 與 Kubernetes(以及自託管)一起使用,可提高吞吐量並降低延遲。
如果您不熟悉 Dapr,請點選文末按鈕,前往學習頁面。
本文作者:張善友