博客 / 詳情

返回

開源微服務運行時 Dapr 發佈 1.0 版本

簡介: Dapr 是 2019 年 10 月開源的分佈式運行時。早在 Dapr 開源初期,阿里雲就開始參與 Dapr 社區建設和代碼開發,目前已有兩位 Dapr 成員,是 Dapr 項目中除微軟之外代碼貢獻最多的公司。作為 Dapr 項目的早期採用者,阿里在 Dapr v1.0 發佈之前就在內部小規模的試點。本文由 Dapr 社區成員敖小劍翻譯。

分佈式應用程序運行時現在已經生產就緒啦!

今天,我們很高興地發佈分佈式應用運行時(Distributed APplication Runtime / Dapr)的 v1.0 版本,它已經達到了生產就緒所需的穩定性和企業準備。Dapr 是一個開源、可移植、事件驅動的運行時,它使開發人員能夠輕鬆地構建運行在雲平台和邊緣的彈性而微服務化的應用程序,無論是無狀態還是有狀態。Dapr 讓開發人員能夠專注於編寫業務邏輯,而不是解決分佈式系統的挑戰,從而顯著提高生產力並減少開發時間。Dapr 降低了基於微服務架構構建現代雲原生應用的准入門檻,而通過此次發佈的 v1.0 版本,Dapr 應用可以部署到生產場景中的自託管基礎設施或 Kubernetes 集羣。

自 2019 年 10 月首次發佈 以來,Dapr 已有 14 個版本,每個版本都建立在大量的社區和用户反饋基礎上,以推動改進、穩定性和性能。這些版本立足於構建真實的應用,反映了當今開發者在開發雲原生應用時的實際情況;無論是在雲平台、邊緣還是私有基礎設施上,社區都在加緊貢獻與 Azure、AWS、阿里巴巴和 Google cloud 集成的 Dapr 組件。

解決現實世界場景中的分佈式應用挑戰

從成立之初開始,Dapr 開源項目就面向那些正在構建新的現實世界綠色地帶(greenfield)應用的開發者,以及那些在雲原生架構中遷移和利用現有應用和組件的開發者。Dapr 方法的關鍵是滿足開發者和企業的現狀,幫助他們實現應用的現代化,並利用他們在雲原生和微服務架構中的現有技能。在 v1.0 版本中,我們專注於將 Kubernetes 作為運行生產應用的主要託管環境,隨着 Dapr 的進一步成熟,我們希望在無服務器(serverless)環境中看到 Dapr。在過去的一年半時間中,我們與早期採用者和合作夥伴緊密合作,因此 Dapr 現在已經成為多個基於 Kubernetes 的生產和預生產應用的核心。在這個用户驅動的過程中,Dapr 社區改進了 Java、.NET 和 Python SDK 的原生語言體驗,用真實的工作負載測試了規模和性能,增加了安全特性,並證明了 Dapr 的 Actor 編程模型是工作流和物聯網(IoT)場景的最佳選擇。以下是一些早期採用者的故事,以凸顯 Dapr 如今的使用情況。

蔡司:光學和光電子領域的國際技術領導者

ZEISS 面臨的挑戰是維護和更新一個具有 20 年曆史的帶有硬編碼業務規則的後端系統。原來的訂單驗證和路由解決方案是基於一個具有固定容量的單體架構,開發人員在不直接在系統中重新配置表格的情況下,無法輕鬆的更新、重新路由或跟蹤訂單。此外,業務部門無法直接控制其訂單處理流程。由於存在大量的系統依賴,變更總是需要代價高昂而耗時的開發人員干預。為了解決這個問題,ZEISS 使用 Azure 和 Dapr 開發了一個新的應用程序,可以更快地完成客户訂單,同時還加快了開發速度,並改善了公司的業務連續性。你可以在 這裏 閲讀更多關於他們的故事。

Ignition Group:一家位於南非的技術企業,專注於客户承諾和銷售支持工具

Ignition Group 打造的訂單處理軟件可以跟蹤產品、管理訂閲和處理來自各種來源的支付。訂單處理涉及許多依賴,有一個採購跟蹤機制,這個機制會調用客户訂閲,觸發會計和計費流程,並確定適當的支付渠道。Ignition Group 希望微服務能給其工作流邏輯帶來好處——高可用性、彈性、可擴展性和性能。使用 Dapr 和 .NET Core,Ignition Group 構建了一個新的、可擴展性更好的、可維護的訂單處理和支付系統,該系統目前已在生產中運行。Ignition Group 今天已經運行在生產中,你可以在 這裏 閲讀更多關於他們的故事。

Roadwork:採集數據洞若觀火

Roadwork 是一家為自主系統提供端到端平台的初創公司,讓用户產生可執行的洞察力並據此行動。目前,他們專注於數據提取技術,並以全面集成自主系統為路徑。通過對 Dapr 與 KEDA 的梳理,他們在 Kubernetes 上創建了一個生產服務,根據傳入的客户負載請求,自動擴展應用和集羣。Dapr 提供了使用 RabbitMQ 的 pub/sub 的抽象和集成,其能夠輕鬆擁有 競爭消費者模式。今天,Roadwork 的第一個產品 Scraper.ai 已經在生產中運行。在 這裏 瞭解更多信息。

社區和生態系統

是社區的努力讓 Dapr 成長到 v1.0。自 Dapr 首次公佈以來,開源社區團結在 Dapr 周圍並不斷成長,令人驚歎——從 2019 年 10 月的 114 個貢獻者增長到今天的 700 個。在短短的 16 個月內,增長了 6 倍多!

社區對項目的貢獻涉及到 Dapr 的每一個倉庫,範圍包括提交問題、參與功能提案討論、提供樣本,當然也包括貢獻代碼。社區成員對項目貢獻最大的部分包括 Dapr 運行時、文檔、CLI 和 SDK。另外一個關鍵的貢獻領域是創建了一個豐富的組件生態系統。可供開發人員使用的組件超過 70 個,使 Dapr 成為一個可以適用於廣泛場景的解決方案,包括開源技術和雲提供商的特定集成。當開發人員希望創建具有高可移植性的雲平台無關的應用程序時,這些使得 Dapr 成為一個有吸引力的選擇。

貢獻並不侷限於個人,還包括阿里雲、HashiCorp、微軟等組織,以及上文提到的 ZEISS 和 Ignition Group 等早期採用者。Dapr 生態系統還包括合作伙伴的技術棧,這些技術棧為使用 Dapr 的開發者提供了附加值。例如,New Relic 提供了關於他們的監控工具如何與 Dapr 無縫工作的指導,這要歸功於 Dapr 使用的標準跟蹤協議,這些協議可以在不改變任何代碼的情況下輕鬆地檢測您的應用程序。

培養一個開放和包容的社區是 Dapr 項目的首要目標。作為該承諾的一部分,我們分享了 向開放治理模式的過渡,這也是我們保持 Dapr 開放、供應商中立和包容性的方式。我們的願景是繼續這一旅程,並打算在不久的將來讓 Dapr 加入一個開放軟件基金會。同時,我們邀請您通過 GitHub、Dapr 社區定期會議 和最近推出的 Discord 服務器 與 Dapr 社區互動。

"在阿里雲,我們相信 Dapr 將引領微服務的發展。通過採用 Dapr,我們的客户現在可以以更快的速度來構建可移植和健壯的分佈式系統。"

—— 阿里雲資深技術專家 李響

發佈亮點

在最近的幾個月中,我們已經發布了三個 v1.0 版本的候選版本,專注於從社區獲得反饋,併為 v1.0 版本做準備。在性能、安全、高可用性(HA)和一致性等方面更深入地關注於生產就緒。完整的發佈説明可以在 這裏 獲得,以下是一些亮點:

作為生產環境的 Kubernetes

對於 v1.0 版本,Kubernetes 是首選的託管環境,它與 Dapr 控制平面和 Dapr sidecar架構深度集成。例如,在運維上,通過 Dapr CLI "init" 和 "upgrade" 命令簡化了 Dapr 在 Kubernetes 上的安裝和升級,這些命令可以拉取正確的 Dapr 運行時版本,並確保這些版本以受控的方式推出,包括遷移正在使用中的證書。您可以在 HA 模式下安裝 Dapr 控制平面,確保多個實例同時運行,而且 Dapr sidecar 有一個健康端點,可以實現 Kubernetes 就緒(readiness)和活潑度(liveness)探針以確定其健康狀態。在整個發佈候選版本的過程中,我們與早期採用者密切合作,以確保他們能夠以可運維的方式遷移到每個 Dapr 運行時版本,而不是構建新的集羣。請參閲 生產部署指南 以瞭解更多信息。

性能、一致性和支持

在雲原生應用中,性能是至關重要的,而 Dapr 對高性能非常重視。一個經常被提起的話題是,由 sidecar 模型為應用程序完成所有繁重工作所帶來的影響,以及數據平面性能的權衡取捨。其中一個特別關注的領域是服務調用構建塊,在這裏,當通過兩個 Dapr sidecar 在兩個應用之間調用並收到響應時,Dapr 在 p90 時增加了約 1.2ms 的端到端延遲,在 p99 時增加了約 2ms。由此可見,Dapr 具有極低的服務間延遲,並針對高吞吐量場景進行了優化。

Dapr 有超過 70 個由社區開發的組件,為了確保對這些組件的使用信心,它們要經過一系列的一致性測試。組件首先從 alpha 狀態開始,最終達到 GA 狀態,並需要用户在生產中使用它們。對於 v1.0 版本,只有部分已經在生產中廣泛使用的組件被批准為 GA,其他組件在滿足標準後也將加入其中。與眾多開源雲原生技術一樣,變更、修復和改進的引入速度很快,這意味着受支持版本存在滾動窗口。重要的是,Dapr v1.0 版本宣稱 API 層面是穩定的,如果未來需要修改,將通過 版本機制 來保證 API 的完全向後兼容,如果需要破壞性的修改,則會提前幾個版本註明。最後,從支持的角度來看,當前和之前的版本都將支持 在出現關鍵問題或安全問題時進行補丁更新。

安全

安全一直是 Dapr 的核心主題,因為我們已經認識到基於微服務架構構建安全的現代分佈式應用的複雜性,而 Dapr 已經通過了多項獨立的安全審計。為了抵禦應用程序之間的中間人攻擊,您需要進行加密,而 Dapr 通過其控制平面服務發出的 x.509 證書提供加密,這些證書會自動更新和滾動。為了提供對資源的訪問控制,如狀態存儲、密鑰、服務間調用,或發佈/訂閲特定主題的能力,您需要細粒度的訪問控制策略(ACL)。當使用 spiffe 作為身份標準訪問資源時,Dapr 提供了廣泛的 ACL。當運行應用程序時,您可以將這些應用程序隔離在不同的命名空間中,以便進行運維部署和隔離。這些廣泛的安全能力在下圖中顯示,這裏有三個利用 Dapr 安全特性的微服務:

編程語言和 SDK

Dapr 以其編程語言、框架和工具擁抱所有的開發者社區。Dapr 被設計為可以通過 HTTP 和 gRPC 協議從任何編程語言中使用,這意味着您不需要在編譯時包含任何依賴關係。當然,為了改善開發者的原生語言體驗,Java、.NET、Python 和 Go 的 SDK 也以 v1.0 生產就緒的形式發佈,這反映了它們在社區和組織中的成熟應用。這些 SDK 可以讓您作為開發者,使用您最喜歡的開發環境,如 VS Code 或 IntelliJ。JavaScript/Node.js、C++、Rust 和 PHP 的 SDK 目前處於預覽階段,隨後將發佈 v1.0 版本。PHP SDK 包括對 Actor 的支持,這是社區為 Dapr 廣泛且不斷增長的編程語言列表做出貢獻的一個極佳的例子。

展望未來

通過這個 v1.0 版本,我們為構建現代雲原生應用所需的基本構建塊奠定基礎的旅程才剛剛起步。社區驅動意味着社區將在未來的版本中設定項目的優先級,其中許多優先級已經被投票通過。例如,增強現有構建塊的亮點,包括在狀態管理中使用 OData 查詢和過濾多個值的能力。在 pub/sub 中,支持 CloudEvents v1.0 過濾功能,以根據消息內容過濾出用户感興趣的事件。在可觀測性方面,提供一個 API 用於 從應用中追蹤事件,防止您不得不綁定到特定的監控類庫,並使 actor 能夠直接訂閲 pub/sub 事件,從而開啓了豐富的事件驅動場景。

新的構建塊提案包括用於讀寫應用程序配置數據的配置 API,例如來自 Azure Configuration Manager 或 GCP Configuration Management。領導者選舉構建塊,提供創建單例實例、同步或鎖定語義能力。用於網絡級服務調用的透明代理構建塊,使您能夠根據 URL 或 DNS 地址來路由消息,以及用於熔斷器、隔離艙和超時等模式的更多彈性構建塊。

最後,在 v1.0 版本中,Dapr 集成了多個開發者框架,包括 ASP.NET Core、Java Spring Boot、Azure Functions 和 Logic Apps,而我們認為這還將繼續,更多的開源框架如 Django、Nodejs 和 Kyma 都是潛在的例子。此外,考慮到 Dapr 的託管平台獨立性,在虛擬機、邊緣平台(如 Azure Stack Hub 或 AWS Outpost)和其他分佈式系統平台上提供對 Dapr 控制平面一流的支持,可以實現應用的可移植性。

開始和貢獻

我們希望您能試用 Dapr v1.0。您可以使用文檔中的 入門指南 進行學習,然後通過 快速入門 來深入瞭解。如果你需要更多信息,樣本庫 是 Dapr 社區捐贈的不同的應用程序的展示。Dapr 文檔 docs.dapr.io 是全面的指南,還有幾本書,包括《 Learning Dapr》、《使用 Dapr 和 .NET 實踐微服務》以及最新發布的免費電子書《Dapr for .NET 開發者》。如果您有任何疑問,遇到問題或想與社區的其他成員交流,Dapr 社區隨時在 Discord 上歡迎您的到來。

對於 Dapr 來説,v1.0 版本的發佈只是一個開始,在這個過程中,我們感謝並鼓勵您的持續幫助、反饋和貢獻。無論是編寫新的組件,提出建議,貢獻新的構建塊,還是增強您最喜歡的語言的 SDK,我們都希望聽到您的意見並與您一起參與。在這個微服務開發的時代,作為一名開發者,這是一個令人興奮的時刻,Dapr 將釋放您的生產力和創造力,輕鬆構建現代化的分佈式應用。我們非常高興的看到您繼續使用這個項目,看到您使用它進行構建,並對 Dapr 的發展保持關注。

譯者注

  1. 英文原文來自 Dapr 官方網站博客文章 Announcing Dapr v1.0。
  2. 譯者所在的阿里云云原生團隊深度參與了 Dapr 1.0 的開發,同時也正在內部小規模的試點 Dapr ,稍後將分享阿里雲在 Dapr 上的實踐。
  3. 文中提到的 《 Learning Dapr》 一書,譯者所在的團隊正在翻譯中,預計很快就將出版發行,歡迎關注。
  4. Dapr 中文社區 目前正在組織翻譯 Dapr 的官方文檔,預計不久將完成部分章節並在官方上線,同樣歡迎關注,更歡迎一起參與。

譯者簡介

敖小劍,資深碼農,十九年軟件開發經驗,微服務專家,Service Mesh 佈道師,Servicemesher 社區聯合創始人。專注於基礎架構,Cloud Native 擁護者,敏捷實踐者,堅守開發一線打磨匠藝的架構師。曾在亞信、愛立信、唯品會、螞蟻金服等任職,對基礎架構和微服務有過深入研究和實踐。目前就職於阿里云云原生應用平台從事 Service Mesh、Serverless、Multiple Runtime 等雲原生產品設計和開發。

原文鏈接

user avatar jasinyip 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.