开源微服务运行时 Dapr 发布 1.0 版本
作者 | Dapr 社區(qū)
譯者 | 敖小劍
來源|阿里巴巴云原生公眾號
Dapr 是 2019 年 10 月開源的分布式運行時。早在 Dapr 開源初期,阿里云就開始參與 Dapr 社區(qū)建設(shè)和代碼開發(fā),目前已有兩位 Dapr 成員,是 Dapr 項目中除微軟之外代碼貢獻最多的公司。作為 Dapr 項目的早期采用者,阿里在 Dapr v1.0 發(fā)布之前就在內(nèi)部小規(guī)模的試點。本文由 Dapr 社區(qū)成員敖小劍翻譯。
分布式應(yīng)用程序運行時現(xiàn)在已經(jīng)生產(chǎn)就緒啦!
今天,我們很高興地發(fā)布分布式應(yīng)用運行時(Distributed APplication Runtime / Dapr)的 v1.0 版本,它已經(jīng)達到了生產(chǎn)就緒所需的穩(wěn)定性和企業(yè)準(zhǔn)備。Dapr 是一個開源、可移植、事件驅(qū)動的運行時,它使開發(fā)人員能夠輕松地構(gòu)建運行在云平臺和邊緣的彈性而微服務(wù)化的應(yīng)用程序,無論是無狀態(tài)還是有狀態(tài)。Dapr 讓開發(fā)人員能夠?qū)W⒂诰帉憳I(yè)務(wù)邏輯,而不是解決分布式系統(tǒng)的挑戰(zhàn),從而顯著提高生產(chǎn)力并減少開發(fā)時間。Dapr 降低了基于微服務(wù)架構(gòu)構(gòu)建現(xiàn)代云原生應(yīng)用的準(zhǔn)入門檻,而通過此次發(fā)布的 v1.0 版本,Dapr 應(yīng)用可以部署到生產(chǎn)場景中的自托管基礎(chǔ)設(shè)施或 Kubernetes 集群。
自 2019 年 10 月首次發(fā)布 以來,Dapr 已有 14 個版本,每個版本都建立在大量的社區(qū)和用戶反饋基礎(chǔ)上,以推動改進、穩(wěn)定性和性能。這些版本立足于構(gòu)建真實的應(yīng)用,反映了當(dāng)今開發(fā)者在開發(fā)云原生應(yīng)用時的實際情況;無論是在云平臺、邊緣還是私有基礎(chǔ)設(shè)施上,社區(qū)都在加緊貢獻與 Azure、AWS、阿里巴巴和 Google cloud 集成的 Dapr 組件。
解決現(xiàn)實世界場景中的分布式應(yīng)用挑戰(zhàn)
從成立之初開始,Dapr 開源項目就面向那些正在構(gòu)建新的現(xiàn)實世界綠色地帶(greenfield)應(yīng)用的開發(fā)者,以及那些在云原生架構(gòu)中遷移和利用現(xiàn)有應(yīng)用和組件的開發(fā)者。Dapr 方法的關(guān)鍵是滿足開發(fā)者和企業(yè)的現(xiàn)狀,幫助他們實現(xiàn)應(yīng)用的現(xiàn)代化,并利用他們在云原生和微服務(wù)架構(gòu)中的現(xiàn)有技能。在 v1.0 版本中,我們專注于將 Kubernetes 作為運行生產(chǎn)應(yīng)用的主要托管環(huán)境,隨著 Dapr 的進一步成熟,我們希望在無服務(wù)器(serverless)環(huán)境中看到 Dapr。在過去的一年半時間中,我們與早期采用者和合作伙伴緊密合作,因此 Dapr 現(xiàn)在已經(jīng)成為多個基于 Kubernetes 的生產(chǎn)和預(yù)生產(chǎn)應(yīng)用的核心。在這個用戶驅(qū)動的過程中,Dapr 社區(qū)改進了 Java、.NET 和 Python SDK 的原生語言體驗,用真實的工作負載測試了規(guī)模和性能,增加了安全特性,并證明了 Dapr 的 Actor 編程模型是工作流和物聯(lián)網(wǎng)(IoT)場景的最佳選擇。以下是一些早期采用者的故事,以凸顯 Dapr 如今的使用情況。
蔡司:光學(xué)和光電子領(lǐng)域的國際技術(shù)領(lǐng)導(dǎo)者
ZEISS 面臨的挑戰(zhàn)是維護和更新一個具有 20 年歷史的帶有硬編碼業(yè)務(wù)規(guī)則的后端系統(tǒng)。原來的訂單驗證和路由解決方案是基于一個具有固定容量的單體架構(gòu),開發(fā)人員在不直接在系統(tǒng)中重新配置表格的情況下,無法輕松的更新、重新路由或跟蹤訂單。此外,業(yè)務(wù)部門無法直接控制其訂單處理流程。由于存在大量的系統(tǒng)依賴,變更總是需要代價高昂而耗時的開發(fā)人員干預(yù)。為了解決這個問題,ZEISS 使用 Azure 和 Dapr 開發(fā)了一個新的應(yīng)用程序,可以更快地完成客戶訂單,同時還加快了開發(fā)速度,并改善了公司的業(yè)務(wù)連續(xù)性。你可以在 這里 關(guān)于他們的故事。
Ignition Group:一家位于南非的技術(shù)企業(yè),專注于客戶承諾和銷售支持工具
Ignition Group 打造的訂單處理軟件可以跟蹤產(chǎn)品、管理訂閱和處理來自各種來源的支付。訂單處理涉及許多依賴,有一個采購跟蹤機制,這個機制會調(diào)用客戶訂閱,觸發(fā)會計和計費流程,并確定適當(dāng)?shù)闹Ц肚馈gnition Group 希望微服務(wù)能給其工作流邏輯帶來好處——高可用性、彈性、可擴展性和性能。使用 Dapr 和 .NET Core,Ignition Group 構(gòu)建了一個新的、可擴展性更好的、可維護的訂單處理和支付系統(tǒng),該系統(tǒng)目前已在生產(chǎn)中運行。Ignition Group 今天已經(jīng)運行在生產(chǎn)中,你可以在 這里 關(guān)于他們的故事。
Roadwork:采集數(shù)據(jù)洞若觀火
Roadwork 是一家為自主系統(tǒng)提供端到端平臺的初創(chuàng)公司,讓用戶產(chǎn)生可執(zhí)行的洞察力并據(jù)此行動。目前,他們專注于數(shù)據(jù)提取技術(shù),并以全面集成自主系統(tǒng)為路徑。通過對 Dapr 與 KEDA 的梳理,他們在 Kubernetes 上創(chuàng)建了一個生產(chǎn)服務(wù),根據(jù)傳入的客戶負載請求,自動擴展應(yīng)用和集群。Dapr 提供了使用 RabbitMQ 的 pub/sub 的抽象和集成,其能夠輕松擁有 競爭消費者模式。今天,Roadwork 的第一個產(chǎn)品 Scraper.ai 已經(jīng)在生產(chǎn)中運行。在 這里 了解更多信息。
社區(qū)和生態(tài)系統(tǒng)
是社區(qū)的努力讓 Dapr 成長到 v1.0。自 Dapr 首次公布以來,開源社區(qū)團結(jié)在 Dapr 周圍并不斷成長,令人驚嘆——從 2019 年 10 月的 114 個貢獻者增長到今天的 700 個。在短短的 16 個月內(nèi),增長了 6 倍多!
社區(qū)對項目的貢獻涉及到 Dapr 的每一個倉庫,范圍包括提交問題、參與功能提案討論、提供樣本,當(dāng)然也包括貢獻代碼。社區(qū)成員對項目貢獻最大的部分包括 Dapr 運行時、文檔、CLI 和 SDK。另外一個關(guān)鍵的貢獻領(lǐng)域是創(chuàng)建了一個豐富的組件生態(tài)系統(tǒng)。可供開發(fā)人員使用的組件超過 70 個,使 Dapr 成為一個可以適用于廣泛場景的解決方案,包括開源技術(shù)和云提供商的特定集成。當(dāng)開發(fā)人員希望創(chuàng)建具有高可移植性的云平臺無關(guān)的應(yīng)用程序時,這些使得 Dapr 成為一個有吸引力的選擇。
貢獻并不局限于個人,還包括阿里云、HashiCorp、微軟等組織,以及上文提到的 ZEISS 和 Ignition Group 等早期采用者。Dapr 生態(tài)系統(tǒng)還包括合作伙伴的技術(shù)棧,這些技術(shù)棧為使用 Dapr 的開發(fā)者提供了附加值。例如,New Relic 提供了關(guān)于他們的監(jiān)控工具如何與 Dapr 無縫工作的指導(dǎo),這要歸功于 Dapr 使用的標(biāo)準(zhǔn)跟蹤協(xié)議,這些協(xié)議可以在不改變?nèi)魏未a的情況下輕松地檢測您的應(yīng)用程序。
培養(yǎng)一個開放和包容的社區(qū)是 Dapr 項目的首要目標(biāo)。作為該承諾的一部分,我們分享了 向開放治理模式的過渡,這也是我們保持 Dapr 開放、供應(yīng)商中立和包容性的方式。我們的愿景是繼續(xù)這一旅程,并打算在不久的將來讓 Dapr 加入一個開放軟件基金會。同時,我們邀請您通過 GitHub、Dapr 社區(qū)定期會議 和最近推出的 Discord 服務(wù)器 與 Dapr 社區(qū)互動。
“在阿里云,我們相信 Dapr 將引領(lǐng)微服務(wù)的發(fā)展。通過采用 Dapr,我們的客戶現(xiàn)在可以以更快的速度來構(gòu)建可移植和健壯的分布式系統(tǒng)。”
—— 阿里云資深技術(shù)專家 李響
發(fā)布亮點
在最近的幾個月中,我們已經(jīng)發(fā)布了三個 v1.0 版本的候選版本,專注于從社區(qū)獲得反饋,并為 v1.0 版本做準(zhǔn)備。在性能、安全、高可用性(HA)和一致性等方面更深入地關(guān)注于生產(chǎn)就緒。完整的發(fā)布說明可以在 這里 獲得,以下是一些亮點:
作為生產(chǎn)環(huán)境的 Kubernetes
對于 v1.0 版本,Kubernetes 是首選的托管環(huán)境,它與 Dapr 控制平面和 Dapr sidecar架構(gòu)深度集成。例如,在運維上,通過 Dapr CLI “init” 和 “upgrade” 命令簡化了 Dapr 在 Kubernetes 上的安裝和升級,這些命令可以拉取正確的 Dapr 運行時版本,并確保這些版本以受控的方式推出,包括遷移正在使用中的證書。您可以在 HA 模式下安裝 Dapr 控制平面,確保多個實例同時運行,而且 Dapr sidecar 有一個健康端點,可以實現(xiàn) Kubernetes 就緒(readiness)和活潑度(liveness)探針以確定其健康狀態(tài)。在整個發(fā)布候選版本的過程中,我們與早期采用者密切合作,以確保他們能夠以可運維的方式遷移到每個 Dapr 運行時版本,而不是構(gòu)建新的集群。請參閱 生產(chǎn)部署指南 以了解更多信息。
性能、一致性和支持
在云原生應(yīng)用中,性能是至關(guān)重要的,而 Dapr 對高性能非常重視。一個經(jīng)常被提起的話題是,由 sidecar 模型為應(yīng)用程序完成所有繁重工作所帶來的影響,以及數(shù)據(jù)平面性能的權(quán)衡取舍。其中一個特別關(guān)注的領(lǐng)域是服務(wù)調(diào)用構(gòu)建塊,在這里,當(dāng)通過兩個 Dapr sidecar 在兩個應(yīng)用之間調(diào)用并收到響應(yīng)時,Dapr 在 p90 時增加了約 1.2ms 的端到端延遲,在 p99 時增加了約 2ms。由此可見,Dapr 具有極低的服務(wù)間延遲,并針對高吞吐量場景進行了優(yōu)化。
Dapr 有超過 70 個由社區(qū)開發(fā)的組件,為了確保對這些組件的使用信心,它們要經(jīng)過一系列的一致性測試。組件首先從 alpha 狀態(tài)開始,最終達到 GA 狀態(tài),并需要用戶在生產(chǎn)中使用它們。對于 v1.0 版本,只有部分已經(jīng)在生產(chǎn)中廣泛使用的組件被批準(zhǔn)為 GA,其他組件在滿足標(biāo)準(zhǔn)后也將加入其中。與眾多開源云原生技術(shù)一樣,變更、修復(fù)和改進的引入速度很快,這意味著受支持版本存在滾動窗口。重要的是,Dapr v1.0 版本宣稱 API 層面是穩(wěn)定的,如果未來需要修改,將通過 版本機制 來保證 API 的完全向后兼容,如果需要破壞性的修改,則會提前幾個版本注明。最后,從支持的角度來看,當(dāng)前和之前的版本都將支持 在出現(xiàn)關(guān)鍵問題或安全問題時進行補丁更新。
安全
安全一直是 Dapr 的核心主題,因為我們已經(jīng)認識到基于微服務(wù)架構(gòu)構(gòu)建安全的現(xiàn)代分布式應(yīng)用的復(fù)雜性,而 Dapr 已經(jīng)通過了多項獨立的安全審計。為了抵御應(yīng)用程序之間的中間人攻擊,您需要進行加密,而 Dapr 通過其控制平面服務(wù)發(fā)出的 x.509 證書提供加密,這些證書會自動更新和滾動。為了提供對資源的訪問控制,如狀態(tài)存儲、密鑰、服務(wù)間調(diào)用,或發(fā)布/訂閱特定主題的能力,您需要細粒度的訪問控制策略(ACL)。當(dāng)使用 spiffe 作為身份標(biāo)準(zhǔn)訪問資源時,Dapr 提供了廣泛的 ACL。當(dāng)運行應(yīng)用程序時,您可以將這些應(yīng)用程序隔離在不同的命名空間中,以便進行運維部署和隔離。這些廣泛的安全能力在下圖中顯示,這里有三個利用 Dapr 安全特性的微服務(wù):
編程語言和 SDK
Dapr 以其編程語言、框架和工具擁抱所有的開發(fā)者社區(qū)。Dapr 被設(shè)計為可以通過 HTTP 和 gRPC 協(xié)議從任何編程語言中使用,這意味著您不需要在編譯時包含任何依賴關(guān)系。當(dāng)然,為了改善開發(fā)者的原生語言體驗,Java、.NET、Python 和 Go 的 SDK 也以 v1.0 生產(chǎn)就緒的形式發(fā)布,這反映了它們在社區(qū)和組織中的成熟應(yīng)用。這些 SDK 可以讓您作為開發(fā)者,使用您最喜歡的開發(fā)環(huán)境,如 VS Code 或 IntelliJ。JavaScript/Node.js、C++、Rust 和 PHP 的 SDK 目前處于預(yù)覽階段,隨后將發(fā)布 v1.0 版本。PHP SDK 包括對 Actor 的支持,這是社區(qū)為 Dapr 廣泛且不斷增長的編程語言列表做出貢獻的一個極佳的例子。
展望未來
通過這個 v1.0 版本,我們?yōu)闃?gòu)建現(xiàn)代云原生應(yīng)用所需的基本構(gòu)建塊奠定基礎(chǔ)的旅程才剛剛起步。社區(qū)驅(qū)動意味著社區(qū)將在未來的版本中設(shè)定項目的優(yōu)先級,其中許多優(yōu)先級已經(jīng)被投票通過。例如,增強現(xiàn)有構(gòu)建塊的亮點,包括在狀態(tài)管理中使用 OData 查詢和過濾多個值的能力。在 pub/sub 中,支持 CloudEvents v1.0 過濾功能,以根據(jù)消息內(nèi)容過濾出用戶感興趣的事件。在可觀測性方面,提供一個 API 用于 從應(yīng)用中追蹤事件,防止您不得不綁定到特定的監(jiān)控類庫,并使 actor 能夠直接訂閱 pub/sub 事件,從而開啟了豐富的事件驅(qū)動場景。
新的構(gòu)建塊提案包括用于讀寫應(yīng)用程序配置數(shù)據(jù)的配置 API,例如來自 Azure Configuration Manager 或 GCP Configuration Management。領(lǐng)導(dǎo)者選舉構(gòu)建塊,提供創(chuàng)建單例實例、同步或鎖定語義能力。用于網(wǎng)絡(luò)級服務(wù)調(diào)用的透明代理構(gòu)建塊,使您能夠根據(jù) URL 或 DNS 地址來路由消息,以及用于熔斷器、隔離艙和超時等模式的更多彈性構(gòu)建塊。
最后,在 v1.0 版本中,Dapr 集成了多個開發(fā)者框架,包括 ASP.NET Core、Java Spring Boot、Azure Functions 和 Logic Apps,而我們認為這還將繼續(xù),更多的開源框架如 Django、Nodejs 和 Kyma 都是潛在的例子。此外,考慮到 Dapr 的托管平臺獨立性,在虛擬機、邊緣平臺(如 Azure Stack Hub 或 AWS Outpost)和其他分布式系統(tǒng)平臺上提供對 Dapr 控制平面一流的支持,可以實現(xiàn)應(yīng)用的可移植性。
開始和貢獻
我們希望您能試用 Dapr v1.0。您可以使用文檔中的 入門指南 進行學(xué)習(xí),然后通過 快速入門 來深入了解。如果你需要更多信息,樣本庫 是 Dapr 社區(qū)捐贈的不同的應(yīng)用程序的展示。Dapr 文檔 docs.dapr.io 是全面的指南,還有幾本書,包括《 Learning Dapr》、《使用 Dapr 和 .NET 實踐微服務(wù)》以及最新發(fā)布的免費電子書《Dapr for .NET 開發(fā)者》。如果您有任何疑問,遇到問題或想與社區(qū)的其他成員交流,Dapr 社區(qū)隨時在 Discord 上歡迎您的到來。
對于 Dapr 來說,v1.0 版本的發(fā)布只是一個開始,在這個過程中,我們感謝并鼓勵您的持續(xù)幫助、反饋和貢獻。無論是編寫新的組件,提出建議,貢獻新的構(gòu)建塊,還是增強您最喜歡的語言的 SDK,我們都希望聽到您的意見并與您一起參與。在這個微服務(wù)開發(fā)的時代,作為一名開發(fā)者,這是一個令人興奮的時刻,Dapr 將釋放您的生產(chǎn)力和創(chuàng)造力,輕松構(gòu)建現(xiàn)代化的分布式應(yīng)用。我們非常高興的看到您繼續(xù)使用這個項目,看到您使用它進行構(gòu)建,并對 Dapr 的發(fā)展保持關(guān)注。
譯者注
英文原文來自 Dapr 官方網(wǎng)站博客文章 Announcing Dapr v1.0。
譯者所在的阿里云云原生團隊深度參與了 Dapr 1.0 的開發(fā),同時也正在內(nèi)部小規(guī)模的試點 Dapr ,稍后將分享阿里云在 Dapr 上的實踐。
文中提到的 《 Learning Dapr》 一書,譯者所在的團隊正在翻譯中,預(yù)計很快就將出版發(fā)行,歡迎關(guān)注。
Dapr 中文社區(qū) 目前正在組織翻譯 Dapr 的官方文檔,預(yù)計不久將完成部分章節(jié)并在官方上線,同樣歡迎關(guān)注,更歡迎一起參與。
譯者簡介
敖小劍,資深碼農(nóng),十九年軟件開發(fā)經(jīng)驗,微服務(wù)專家,Service Mesh 布道師,Servicemesher 社區(qū)聯(lián)合創(chuàng)始人。專注于基礎(chǔ)架構(gòu),Cloud Native 擁護者,敏捷實踐者,堅守開發(fā)一線打磨匠藝的架構(gòu)師。曾在亞信、愛立信、唯品會、螞蟻金服等任職,對基礎(chǔ)架構(gòu)和微服務(wù)有過深入研究和實踐。目前就職于阿里云云原生應(yīng)用平臺從事 Service Mesh、Serverless、Multiple Runtime 等云原生產(chǎn)品設(shè)計和開發(fā)。
總結(jié)
以上是生活随笔為你收集整理的开源微服务运行时 Dapr 发布 1.0 版本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里巴巴云原生应用安全防护实践与 Ope
- 下一篇: 为了让你在“口袋奇兵”聊遍全球,Serv