雲原生分佈式應用運行時 Dapr 在阿里的實踐

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Dapr 是什麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Dapr是一個開源、可移植、事件驅動的雲原生分佈式應用運行時,它使開發人員能夠輕鬆地構建運行在雲平臺和邊緣的彈性而微服務化的無狀態和有狀態的應用程序,從而降低基於微服務架構構建現代雲原生應用的准入門檻。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Dapr 的名字來源於分佈式應用運行時( "},{"type":"text","marks":[{"type":"strong"}],"text":"D"},{"type":"text","text":"istributed "},{"type":"text","marks":[{"type":"strong"}],"text":"Ap"},{"type":"text","text":"plication "},{"type":"text","marks":[{"type":"strong"}],"text":"R"},{"type":"text","text":"untime)的縮寫。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"備註:關於Dapr 的介紹,請參考我剛發表的文章 "},{"type":"link","attrs":{"href":"https:\/\/skyao.io\/talk\/202103-dapr-from-servicemesh-to-cloudnative\/","title":null,"type":null},"content":[{"type":"text","text":"Dapr v1.0展望:從servicemesh到雲原生"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"爲什麼我們選擇Dapr?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在阿里巴巴,Java 使用非常廣泛,不僅僅業務應用大量使用 Java,大量中間件和基礎能力的服務器端也是使用 Java 開發。在過去十幾年間,我們圍繞 Java 建立了非常完備的生態體系,經歷過各種嚴酷的考驗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而隨着業務形態的日漸豐富,"},{"type":"text","marks":[{"type":"strong"}],"text":"多語言"},{"type":"text","text":" 的需求在不斷的增加,如 nodejs \/ golang \/ c \/ c++ \/ rust 等。特別是在微服務流行之後,根據實際情況而選擇使用不同的編程語言開發微服務成爲趨勢。但效仿 Java ,爲每一種編程語言都打造一套功能完備的生態體系在成本上是不現實的。因此,需要一個成本可控的方案來解決多語言問題,讓微服務開發能真正的實現“語言自由”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着雲的採用,業務應用的形態也開始朝雲原生方向發展,越來越多的業務應用(尤其是前臺業務)開始擁抱 FaaS 和 Serverless 作爲應用託管和資源調度的解決方案。而在 FaaS 和 Serverless 場景下,需要更輕量化的解決方案以滿足快速啓動和伸縮的需求 —— 傳統類庫模式下由於需要集成大量的SDK,業務應用變得非常的臃腫。而在 Function 形態下更加的不協調,以nodejs爲例:幾百行的 nodejs Function 代碼依然需要依賴多達幾十兆的node module。同時 FaaS 和 Serverless 也對多語言的支持提供了更高的要求。因此,在 FaaS 和 Serverless 這種新型形態下有必要提供有別於傳統類庫方式的、更輕量化的、支持多語言的解決方案。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"顯然,Servicemesh 倡導的 Sidecar 模式是解決上述問題的絕佳方案。在過去幾年間,隨着 Servicemesh 的發展和採用, Sidecar 模式已經得到充分驗證:Sidecar 模式非常符合雲原生的理念,特別是在多語言支持和應用輕量化方面具備天然優勢。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們非常認可 Bilgin Ibryam 在 "},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/multi-runtime-microservice-architecture\/","title":null,"type":null},"content":[{"type":"text","text":"“Multi-Runtime Microservices Architecture”"}]},{"type":"text","text":" 一文中提出的 Multiple Runtime \/ Mecha Runtime 的理念,尤其是他對分佈式應用需求的分析,很符合我們的實際情況。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/77\/77de26843c9077fc6696293cd7a74f84.jpeg","alt":"","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而 Dapr 是第一個實踐 Multiple Runtime 理念的開源項目,我們從這個項目發佈開始就密切關注它,因爲 Dapr 可以很好的解決我們面臨的問題:Sidecar 模式天然提供了對多語言的支持,各種客戶端SDK被 Dapr Runtime 替代之後應用也得以輕量化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,從長期戰略的角度考慮,我們在2020年提出了”三位一體”的理念,即將”自研技術”、”開源項目”、”商業產品”形成統一的技術體系,最大化技術的價值。而當前的實際情況是三者有完全不同的產品和技術方案,導致當我們需要將某個產品在阿里內部、公有云、客戶私有云等不同的平臺上進行遷移時,或者是跨多個平臺部署時,就會遇到非常大的挑戰。Dapr 面向能力編程的理念,強調可移植性和可擴展性的標準API,平臺中立、無供應商鎖定的設計,深深的吸引了我們。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“在阿里雲,我們相信 Dapr 將引領微服務的發展。通過採用Dapr,我們的客戶現在可以以更快的速度來構建可移植和健壯的分佈式系統。” —— 阿里雲資深技術專家 李響"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在2020年年中,我們開始基於 Dapr 項目進行了內部小規模的試點,在實際的落地過程中探索和驗證 Dapr 的理念。我們也積極參與到 Dapr 開源項目的建設中,提交了大量的改進建議和代碼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下面我們將以 Dapr 在阿里的實際落地場景來具體說明 Dapr 是如何幫助我們解決上述問題的。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Dapr在阿里的實踐"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"概況"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"目前 Dapr 在阿里巴巴內部還處於實驗階段"},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們的首要工作是爲內部的中間件開發 Dapr 組件,使業務應用程序可以與這些中間件和實現它們的 Java 語言\/ Java Client SDK 解耦。然後通過小規模的業務應用落地,在各種場景下的對 Dapr 進行驗證,在驗證完成之後計劃繼續部署較大規模的業務應用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"截止到2021年3月,Dapr 在阿里內部落地的場景主要集中在2個方面:多語言支持和雲間遷移。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"多語言支持"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"Faas \/ Serverless 場景"}]},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"背景:在阿里的電商系統中,存在大量活動和導購需求。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些需求的特點是”短平快”:需要快速開發、快速迭代、生命週期相對比較短。因此這類需求非常適合通過採用 FaaS 的方式來落地。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Faas 對多語言支持有強烈的訴求,肯定不會侷限於 Java。而阿里內部大部分應用都是Java 體系,對多語言的支持比較弱,尤其是新興語言(如Dart)或者小衆語言(如Rust)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而從需求上說,採用 FaaS 的應用也同樣需要和內部運行的服務以及各種中間件\/基礎設施進行通訊,因此 FaaS 平臺迫切的需要解決多語言支持問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通過 Dapr ,我們很好的解決了 FaaS 的多語言問題,從而使得客戶通過 FaaS 實現了開發效率的大幅提升。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"多語言應用的接入"}]},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"背景:阿里收購有大量的公司"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些收購的公司有大量的應用,而這些應用中很多不是Java體系,在接入阿里的技術體系時,對多語言支持有明確的需求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另外,由於業務創新的需要,有些應用對 nodejs 和 golang 有強烈訴求,還有一些應用則需要使用到 Dart 和 C++。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但目前這些語言的生態系統並沒有像 Java 那麼完善,尤其部分中間件和基礎設施已經發展的非常成熟,進入維護狀態,不太可能在現在重新開發所有語言的客戶端:成本上代價很高,時間上也來不及。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通過 Dapr ,我們可以爲這些應用的提供多語言解決方案。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"複雜的Java遺留系統"}]},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"背景:基於 Java ClassLoader 機制而設計的複雜系統"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了解決類衝突問題,隔絕不同的業務模塊,阿里針對 Java 系統設計了基於 ClassLoader 機制的複雜系統,這些系統的設計往往非常複雜,應用也非常臃腫。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,部分業務團隊爲了能和現有的中間件進行互通,自行維護了一套多語言的中間件SDK,而這些SDK本來應該由中間件團隊維護並保持同步更新。這也帶來了穩定性方面的隱患和風險。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們期望將這些遺留的系統遷移到 Dapr 中,統一實現中間件SDK的維護和更新。比較特殊的是這裏存在一個需求:最好能讓業務開發團隊儘量不做代碼層面的調整,以減少遷移時對業務應用的衝擊。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"所以針對 Java 遺留系統,在遷往 Dapr 時,我們額外設計了一個Java適配層:將原來的 Java 調用適配到 Dapr 的客戶端API上。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以上三種多語言的落地實踐場景,如下圖所示:"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/a2\/a2d2b33e7d10872690f6c7070c65c887.jpeg","alt":"","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"雲間遷移"}]},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"背景:業務應用對外輸出時有跨平臺需求"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"阿里的部分業務,如釘釘文檔,原本是提供給阿里內部和外部用戶直接使用的,此時釘釘文檔只需要部署在阿里內部的業務集羣裏,直接訪問阿里內部的生態體系。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但是隨着 SaaS 業務的發展,以及部分信息安全敏感的用戶對於數據安全的強烈訴求, 需要將釘釘文檔部署到用戶VPC下或者公有云下。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲此,我們需要將釘釘文檔的系統從阿里內部遷移到公有云上進行部署,而釘釘文檔使用的底層技術需要從阿里內部的技術體系遷移到使用開源技術或阿里雲的商業化產品上。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"藉助 Dapr 的標準API和可擴展的組建模型,我們採取的策略是讓用戶不需要修改任何代碼,直接通過 Dapr Runtime 屏蔽底層使用的中間件:部署在不同平臺時,通過激活 Dapr 中的不同的 Component 來提供一致的能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以消息通訊威力,當應用需要訪問消息系統時:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在阿里內部:通過 Rocketmq.yaml 激活 Rocketmq 組件"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在公有云上:通過 Kafka.yaml 激活 kafka 組件"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通過 Dapr 的可移植性,上層的釘釘文檔應用現在可以和底層的基礎設施(如消息系統)解耦,從而實現在不同的雲平臺之間平滑遷移:"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/14\/145246a5d6ae9450986714afb5301b9a.jpeg","alt":"","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最終幫助我們的業務團隊實現了他們的"},{"type":"text","marks":[{"type":"strong"}],"text":"業務目標"},{"type":"text","text":":使 Dingtalk 在任何地方部署成爲可能。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"阿里的Dapr未來規劃"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"未來我們將繼續通過應用試點的方式對 Dapr 進行驗證,包括:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"適用場景"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"性能"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"穩定性"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可移植性"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"同時我們將繼續開發 Dapr 的組件,以集成更多的中間件和基礎設施,包括內部產品和阿里雲上支持的商業產品。其中對阿里雲商業產品的集成代碼,我們將在驗證通過之後貢獻給 Dapr 項目,從而爲 Dapr 提供阿里雲支持。這些項目預計將包括:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Apache Dubbo的RPC支持"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Apache RocketMQ的消息傳遞支持"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Nacos的動態配置支持"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"阿里雲RDS的MySQL支持"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"阿里雲緩存服務的Redis支持"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作爲 Multiple Runtime 架構的先驅者和 Dapr 項目的早期採用者,我們將繼續和 Dapr 社區合作,在落地的過程中努力完善 Dapr 的功能、性能、穩定性等關鍵指標,和社區一起聯手打造雲原生時代的 "},{"type":"text","marks":[{"type":"strong"}],"text":"D"},{"type":"text","text":"istributed "},{"type":"text","marks":[{"type":"strong"}],"text":"AP"},{"type":"text","text":"plication "},{"type":"text","marks":[{"type":"strong"}],"text":"R"},{"type":"text","text":"untime!"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"後記"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"關於這片文章的一點花絮,這是一篇應微軟dapr團隊請求撰寫的文章,簡單總結在過去一年間阿里巴巴在 Dapr 落地實踐方面的各種實踐,作爲 Dapr 生產落地的參考。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"文章最早發佈於 Dapr 官方博客,英文版本:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/blog.dapr.io\/posts\/2021\/03\/19\/how-alibaba-is-using-dapr\/","title":null,"type":null},"content":[{"type":"text","text":"How Alibaba is using Dapr"}]}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"發表的時間非常的巧合,3月19日,剛好是我生日。那天由於要參加20號在上海的雲原生meetup,我在生日當晚乘坐動車從深圳去往上海,未能和家人一起度過,沒有生日蛋糕和生日歌。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"後來這片文章被 InfoQ 轉載:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/news\/2021\/03\/alibaba-dapr\/","title":null,"type":null},"content":[{"type":"text","text":"Alibaba Cloud Uses Dapr to Support Its Business Growth"}]}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於考慮到國內 Dapr 的現狀,這篇 Dapr 實踐文章押後了一週發佈,在20號演講的 Dapr 介紹文章,也就是 "},{"type":"link","attrs":{"href":"https:\/\/skyao.io\/talk\/202103-dapr-from-servicemesh-to-cloudnative\/","title":null,"type":null},"content":[{"type":"text","text":"Dapr v1.0展望:從servicemesh到雲原生"}]},{"type":"text","text":" 一文發佈之後,纔對外發布這片 Dapr 的落地實踐篇。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但比較有意思的是國內 Dapr 社區的 "},{"type":"text","marks":[{"type":"strong"}],"text":"Edison"},{"type":"text","text":" 同學,非常積極的直接翻譯並補充了部分內容:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/toutiao.io\/posts\/6eipm5d\/preview","title":null,"type":null},"content":[{"type":"text","text":"[譯] 雲原生:阿里巴巴的 Dapr 實踐與探索"}]}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這篇文章的可讀性會比我的中文原文要好,畢竟原文是一篇比較官方的稿件,沒有展開細節,而且行文也不是我平時的風格。上面的翻譯加料版本其實寫的挺好的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/skyao.io\/tags\/dapr\/","title":null,"type":null},"content":[{"type":"text","text":"Dapr"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"作者介紹:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"敖小劍,中年碼農,我目前研究的方向主要在Microservice、Servicemesh、Serverless等Cloud Native相關的領域,全職從事Dapr開發,歡迎交流和指導。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"相關鏈接:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/skyao.io\/talk\/202103-dapr-from-servicemesh-to-cloudnative\/","title":null,"type":null},"content":[{"type":"text","text":"Dapr v1.0展望:從servicemesh到雲原生"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/skyao.io\/post\/202103-a-visual-guide-to-dapr\/","title":null,"type":null},"content":[{"type":"text","text":"[譯] Dapr可視化指南"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/skyao.io\/post\/202102-announcing-dapr-v1.0\/","title":null,"type":null},"content":[{"type":"text","text":"[譯] Dapr v1.0發佈"}]}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文轉載自:"},{"type":"link","attrs":{"href":"https:\/\/skyao.io\/post\/","title":"xxx","type":null},"content":[{"type":"text","text":"敖小劍的博客"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文鏈接:"},{"type":"link","attrs":{"href":"https:\/\/skyao.io\/post\/202103-how-alibaba-is-using-dapr\/","title":"xxx","type":null},"content":[{"type":"text","text":"雲原生分佈式應用運行時 Dapr 在阿里的實踐"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章