Dapr是一套開源、可移植的事件驅動型執行時,允許開發人員輕鬆立足雲端與邊緣位置執行彈性、微服務、無狀態以及有狀態等應用程式型別。Dapr能夠確保開發人員專注於編寫業務邏輯,而不必分神於解決分散式系統難題,由此顯著提高生產力並縮短開發時長。Dapr降低了構建微服務架構類現代雲原生應用程式的入門門檻,Dapr應用程式已經能夠在生產場景中部署自託管基礎設施或Kubernetes叢集。當使用自託管模式部署在虛擬機器環境選用Consul 作為服務發現元件時, 1.8版本解決了一個問題 : Consul 用作名稱解析元件時,相同的 appid 無法實現負載平衡[1]。
2022年7月8日正式釋出了1.8 版本[2],這是自從2021年2月釋出首個1.0 版本以來第八次小版本更新,Dapr 1.8.0 版本的貢獻者數量眾多,我們要感謝所有 92位新的和現有的貢獻者,他們幫助實現了這個版本。 這次更新的內容很多都是大家期盼的功能,例如分散式鎖API,中介軟體元件的外部 WASM 支援,更多的成熟Stable元件等。接下來我們一起來看看更新的內容。
1、死信Topic:有時,由於各種原因,應用程式可能無法處理訊息。例如,檢索處理訊息所需的資料時可能存在暫時性問題,或者應用業務邏輯無法返回錯誤。死信Topic[3]用於轉發無法傳遞到訂閱應用的訊息。
2、分散式鎖 API: 分散式鎖提供對應用程式中共享資源的互斥訪問。在此版本中,引入了一個新的 alpha API,使您能夠在共享資源上使用互斥鎖。這是踐行標準API的第一個,在Dapr中,處理共享資源的互斥訪問推薦採用Dapr Actor 構建塊,但是呢Dapr Actor 構建塊在社群的採用上比較低,一個例外就是.NET相關的Dapr 解決方案裡面對於Actor的採用是非常高的,在其他的Java,go,python等等相關專案中目前採用Dapr Actor的還是很少。
3、對中介軟體元件的 WASM 支援: 現在,您可以使用外部 WASM 模組編寫 Dapr 中介軟體元件,並使用非 Go 語言擴充套件 Dapr。
4、容錯彈性策略[4]進入預覽版階段,Dapr 1.7.0 實現了容錯彈性策略第一階段目標, 1.8 版本進入預覽, Dapr 的元件版本分Alpha、Preview、Stable,我們會把Stable的元件和API 投入到生產。
5、狀態共享的名稱空間支援:在應用程式之間共享狀態時,名稱空間現在可用於隔離狀態。這允許具有相同名稱空間的應用重用相同的狀態儲存。
6、後設資料 API 返回元件功能列表:現在可以查詢後設資料 API,以獲取該 sidecar 已載入的元件的功能[5],特別是 pub/sub 和 state store
7、邊車證照安裝支援:Dapr sidecar現在可以支援為Linux和Windows容器安裝證照。
8、Kubernetes 改進:Dapr Operator 現在包括一個“看門狗”功能[6],以確保 Dapr sidecar 存在於 Pod 中,這在應用程式或叢集故障期間尤其重要,以提供更高水平的彈性。部署 Dapr 時,無論是在 Kubernetes 上還是在 Docker 自託管中,提取的預設容器映像都基於distroless[7],現在,您可以使由Microsoft維護的免費開源Linux發行版和容器基礎映像Mariner[8](正式名稱為CBL-Mariner)的Image。
9、元件改進,在之前的 Dapr 版本中具有穩定候選版本的以下元件已升級為穩定版本
- Azure Table Storage State Store (stable candidate)
- Azure Event Hubs Binding (stable candidate)
- Azure Storage Queues Binding (stable candidate)
- Postgresql State Store (stable candidate)
- Azure Event Hubs Pubsub (stable candidate)
Dapr現在有超過100多個元件(總共105個)。此版本中新增的新元件,其中2個是華為雲的元件,一個阿里的 Apache Dubbo Binding:
- 1.6 版本新增的 RouterChecker HTTP Request Routing ,已經有文件了。
- Commerce Tools Binding
- Apache Dubbo Binding
- Huawei OBS Binding
- Huawei CSMS Secret Store
- In-memory State Store used for development
- RocketMQ PubSub
- Wasm Basic HTTP Middleware
- Redis Distributed Lock
10、開發工具SDK 改進:
Python
- 支援配置 API Unsubscribe events
- 支援 per-actor-type configuration
- 支援Actor 計時器和提醒中的TTL和時間/間隔格式
Java
- 新增 pubsub routing
.NET
- 支援配置API的 Unsubscribe events
- 支援 per-actor-type configuration
- 支援 distributed lock API
JavaScript
- JavaScript SDK現在在@dapr/dapr上可用。較舊的包 dapr-client 正處於棄用的路上
- 支援 Actor reminder/timer TTL support
- 支援 Configuration API
- 支援 gRPC proxy
- 支援 configuring the SDK logger
11、CLI 改進:
- 新增了
註釋
CLI 命令,用於將 Dapr 註釋新增到已部署的 Kubernetes 配置中。 dapr init
在 k8s 模式下,現在可以使用 GHCR 和私有登錄檔來拉取映像- 給 Dapr version 加上了文件
如果您不熟悉 Dapr,請訪問入門頁面並熟悉 Dapr。 文件已更新,包含此版本的所有新功能和更改。通過概念和開發應用程式文件開始使用此版本中引入的新功能。要將 Dapr 升級到 1.8.0 版,請跳至本節。
相關連結:
[1] Consul 用作名稱解析元件時,相同的 appid 無法實現負載平衡:https://github.com/dapr/components-contrib/issues/1199
[2]Dapr 1.8 版本:https://blog.dapr.io/posts/2022/07/08/dapr-v1.8-is-now-available/
[3]死信Topic:https://v1-8.docs.dapr.io/developing-applications/building-blocks/pubsub/pubsub-deadletter
[4]容錯彈性策略:https://v1-7.docs.dapr.io/operations/resiliency/
[5]元件的功能:https://v1-8.docs.dapr.io/reference/api/metadata_api/#components
[6]Dapr Operator 現在包括一個“看門狗”功能:https://github.com/dapr/dapr/blob/master/charts/dapr/README.md#dapr-operator-options
[7]distroless映象:https://github.com/GoogleContainerTools/distroless
[8]CBL-Mariner: https://github.com/microsoft/CBL-Mariner/