
作者 | Dapr 社群
譯者 | 敖小劍
來源|
阿裡巴巴雲原生公衆号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 的發展保持關注。
譯者注
- 英文原文來自 Dapr 官方網站部落格文章 Announcing Dapr v1.0 。
- 譯者所在的阿裡雲雲原生團隊深度參與了 Dapr 1.0 的開發,同時也正在内部小規模的試點 Dapr ,稍後将分享阿裡雲在 Dapr 上的實踐。
- 文中提到的 一書,譯者所在的團隊正在翻譯中,預計很快就将出版發行,歡迎關注。
- Dapr 中文社群 目前正在組織翻譯 Dapr 的官方文檔,預計不久将完成部分章節并在官方上線,同樣歡迎關注,更歡迎一起參與。
譯者簡介
敖小劍,資深碼農,十九年軟體開發經驗,微服務專家,Service Mesh 布道師,Servicemesher 社群聯合創始人。專注于基礎架構,Cloud Native 擁護者,靈活實踐者,堅守開發一線打磨匠藝的架構師。曾在亞信、愛立信、唯品會、螞蟻金服等任職,對基礎架構和微服務有過深入研究和實踐。目前就職于阿裡雲雲原生應用平台從事 Service Mesh、Serverless、Multiple Runtime 等雲原生産品設計和開發。