开源微服务运行时 Dapr 1.0 版本
作者 | 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 的發展保持關注。
譯者注
譯者簡介
敖小劍,資深碼農,十九年軟件開發經驗,微服務專家,Service Mesh 布道師,Servicemesher 社區聯合創始人。專注于基礎架構,Cloud Native 擁護者,敏捷實踐者,堅守開發一線打磨匠藝的架構師。曾在亞信、愛立信、唯品會、螞蟻金服等任職,對基礎架構和微服務有過深入研究和實踐。目前就職于阿里云云原生應用平臺從事 Service Mesh、Serverless、Multiple Runtime 等云原生產品設計和開發。
原文鏈接:https://developer.aliyun.com/article/782060?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的开源微服务运行时 Dapr 1.0 版本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: E百科 | 基于MEC的边缘AI服务
- 下一篇: 从no-code到low-code:企业