這個雲原生開發的痛點你遇到了嗎?

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"背景","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在雲原生時代,國內外衆多雲廠商釋放出強大的技術紅利,如何利用廉價、穩定且高效的雲設施是當今的一個主要命題。在雲上,我們可以很方便地創建虛擬網絡、虛擬機、數據庫、消息隊列等基礎設施和中間件,也可以使用容器服務、EDAS、SAE、函數計算等 PaaS 和 Serverless 服務來減輕應用管控的壓力。","attrs":{}}]},{"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":"但事情並不是一帆風順的。應用上雲已是歷史大潮不可阻擋,但隨之而來開發者很快就體會到上雲的另一面:由雲上和雲下網絡不通所帶來的開發體驗割裂感。在上雲之前,開發者可以在本地完成代碼開發、測試、聯調等開發流程閉環;而上雲之後,數據庫、緩存、消息隊列和其他微服務應用都部署在雲上的虛擬網絡之中,我們再無法在本地完成開發流程。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/4d/4d38f61826187a5c8356ec7357e5230b.png","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":"如果是中東土豪,他可能會考慮使用物理專線來打通網絡。因爲他只需支付光纖鋪設費、樓內光纜租賃費、端口占用費、流量費等百萬量級的錢,同時說服安全團隊來允許完全打通環境而已。","attrs":{}}]},{"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":"如果是專業運維人員,他可能會考慮搭建 VPN 來打通網絡。當他花費精力搭建 VPN 服務器,發現同事們還是用不起來,紛紛抱怨:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“一打開 VPN,整個本地系統網絡流量都轉發到雲端了,其他事情幹不了啦!”","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“除了配置 VPN,還要配置應用運行參數,太麻煩了!”","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“雲端服務怎麼調用不了本地服務,雲端網絡路由添加了嗎?”","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"...","attrs":{}}]}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" ","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"看到這些問題,運維小哥內心也感到心累...","attrs":{}}]},{"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":"而現在,我們提供了一個開箱即用的插件工具,無需你花費大量的金錢或者人力。你所需要的只是在 IDE 中一鍵開啓開關,然後通過 IDE 所啓動的應用就能訪問到雲端環境裏的數據庫、MQ、緩存和其他微服務。所有的事情都由插件來幫你完成。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"介紹","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這款工具是我們自主研發的“端雲互聯”插件,“端”指的是開發端,“雲”指的是雲上網絡,通過某種方式實現“端”和“雲”的雙向互通,並且沒有傳統 VPN 的問題。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ae/ae43f5581d988822307f22487f3324f9.png","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":"端雲互聯功能集成在 Alibaba Cloud Toolkit(簡稱  ACT)這個上雲工具產品中,並支持 Intellij IDEA 和 Eclipse 兩款 IDE。你只需在插件市場中搜索“Alibaba Cloud Toolkit”進行安裝即可,例如在 Intellij IDEA 中搜索如下:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/e1/e13a3d3122b44e5a7a8d0ae47cd3449a.png","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":"我們在 2018年就開始了端雲互聯項目的研發,這個過程中迭代了大大小小的版本,共經歷了三個里程碑,至今有數十萬人次的使用。下面來介紹它的特性支持和實現原理。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"端雲互聯1.0","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1.0 階段解決了本地和雲端雙向互聯的問題,使得本地服務不僅僅可訪問雲端資源,還可以跟雲端服務互相通信。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"雙向互聯","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以下爲端雲互聯的核心架構,整體分爲兩個模塊:通道服務和代理機。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/b5/b519d60c10929f69f8900e3b14dbd3ba.png","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":"其中,模塊功能如下:","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"代理機:負責雲端的流量轉發。端雲互聯方案對代理機的要求很低,一臺普通規格的 ECS 就可以充當“乞丐版”的代理機。並且,Debian、Ubuntu、Redhat 等 Linux 系統已經包含端雲互聯所依賴的底層庫,無需額外安裝其他軟件。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通道服務:負責本地的流量轉發。當我們打開端雲互聯開關並啓動應用時,插件會在本地拉起一個通道服務進程。這個進程的職責非常簡單,它只負責本地應用和雲端代理機之間的流量轉發,無其他操作。","attrs":{}}]}]}],"attrs":{}},{"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 原生的代理參數和自研的流量攔截方案來將應用的流量轉發至通道服務。","attrs":{}}]},{"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":"開發人員在 IDE 中啓動應用時,端雲互聯插件會自動拉起通道服務,並注入相關參數至應用中。啓動後,應用流量自動轉發至通道服務,無需人工干預。","attrs":{}}]},{"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":"從架構上來看,端雲互聯跟 VPN 有點類似,都分爲服務端和客戶端。但實際上,兩者有很大的差異,下圖進行了對比總結:","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/a1/a1ea31f573cc7a9451378110645fab24.png","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":"其中,在“雲端訪問本地”這一點上,雖然兩者都支持,但具體原理並不相同。如果採取 VPN 方案,那麼其他雲端服務訪問本地服務時,需要手動配置網絡路由,否則網絡不可達。而端雲互聯通過改造微服務框架,可使得雲端服務調用代理機,再通過代理機轉發到本地應用中,無需設置網絡路由。在易用性和安全性上,端雲互聯都優於 VPN。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"端雲互聯2.0","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在 1.0 階段,我們實現了本地和雲端的雙向互通,這滿足了最基本的開發需求。在實際業務中,客戶提出了更高的要求。","attrs":{}}]},{"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":"我們一個客戶有龐大的研發團隊,他們都使用端雲互聯進行開發,但在聯調時發現一個問題:研發人員A發起的服務調用有時候調到別的節點去了,沒有到所期望的研發人員B的本地節點上。這個問題是由於微服務框架的路由機制引起的,當環境中一個服務存在多個節點時,會使用隨機(或輪流)算法來進行調用。微服務模塊越多,鏈路越長,這個問題就越嚴重。","attrs":{}}]},{"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":"在 2.0 中,我們提供了多人精準聯調能力,此能力可使得服務請求“指哪打哪”,可大幅提高服務聯調效率。除此之外,我們還提供基於代理的遠程調試能力,方便本地對雲端環境中的微服務節點進行調試,提高調試效率。","attrs":{}}]},{"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":"同時,通過橫向產品支持,端雲互聯 2.0 可服務於雲原生產品 EDAS、SAE 和 MSE 等開發者,受到廣泛好評。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"多人精準聯調","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下圖描述了多人聯調的一個典型場景:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/55/55f21b24a3753d7da92cf832b1c5fbc4.png","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":"小王負責服務 A,小張負責服務 B,在一次需求迭代中他們完成了代碼開發,正在進行聯調。由於微服務框架使用隨機(或輪流)策略進行調用,導致了兩個問題:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"測試同學小馬正在環境中進行功能測試,測試請求調用到小王和小張的本地節點上來了,導致測試不符合預期;","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"小王發起的測試請求調到其他節點去了,沒到他和小張的節點上,聯調效率很低;","attrs":{}}]}]}],"attrs":{}},{"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":"通過多人精準聯調能力,可以使得只有小王發起的請求調到他的本地節點和小張的本地節點,而測試小馬的請求只在雲端穩定環境中調用。","attrs":{}}]},{"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":"小王和小張需要做的事情比較簡單,他們只需要在控制檯開啓全鏈路流控功能,創建一個用於測試的流控環境。流控環境可配置請求識別規則,可通過 Cookie、Header、請求參數等維度來判斷是否爲測試請求,如果判斷通過則將請求調用到該環境中的節點中去。","attrs":{}}]},{"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":"然後小王和小張在 IDE 中將本地節點添加到這個測試環境中去即可,如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/39/39ea2ba6d045adaf5599e0859994903e.png","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":"這樣配置完成後,那麼只有符合特徵的請求才會調用到小王和小張的節點,下圖中只有 Header 包含“測試”的請求才會到他們節點中:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/87/871c4b33574b237cf8d0725a305825ee.png","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":"遠程調試","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"遠程調試(Remote Debug)一直都是排查問題的重要手段,但在雲原生環境裏遠程調試並不是一件簡單的事情。這是因爲在默認情況下雲上的微服務節點通常不能被公網訪問,如果需要進行遠程調試,我們需要對目標節點開放公網訪問,並且設置安全策略以放通調試端口流量。","attrs":{}}]},{"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":"如果當前有 A,B,C 三個服務,每個服務有 3 個節點,那麼我們需要分別建立 3 個安全組,並綁定 9 個公網網卡到機器節點。如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/cc/cc55d804977860cadda47b88f1642362.png","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":"這種方式存在以下問題:","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"浪費成本:每個微服務節點都需要綁定公網網卡,成本跟測試節點數成正相關。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置複雜:在雲上往往採取彈性伸縮的策略來維護機器節點,達到“用時即建,用完即放”的按需使用目的。而每當創建新的機器節點我們都需要單獨配置公網網卡和安全組,使用上較繁瑣。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"存在安全性隱患:如果微服務節點都對外暴露公網訪問,會存在較大的安全風險。","attrs":{}}]}]}],"attrs":{}},{"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":"甚至在有些場景下,由於安全要求內網機器節點不允許掛載公網網卡。對於這些問題,端雲互聯支持基於代理的遠程調試,如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/9e/9e6fa39e3a93a53ec3f60a0ca51b53ef.png","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":"調試請求通過通道服務來轉發給代理機,再由代理機轉發至目標調試節點。通道服務和代理機之間的通道是加密的。對於安全要求非常嚴格的場景,可以使用安全組(或白名單)策略來進一步提高代理機的安全水位。","attrs":{}}]},{"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":"在使用上,你只需配置 Alibaba Cloud Remote Debug,配置內容跟 IDE 自帶的遠程調試配置基本相同,但支持使用代理進行連接,如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/27/27cfcc10d7b109ca9e8cdde38b54c323.png","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":"其中有如下配置項:","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Proxy:指定雲端代理機。當運行時,插件會自動拉起通道服務連接代理機,無需人工干預。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Host:指定遠程調試的目標機器節點IP。圖中爲 172.16.0.1。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Port:指定遠程調試的目標機器調試端口。圖中爲 5005。","attrs":{}}]}]}],"attrs":{}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"雲原生產品支持","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"端雲互聯 2.0 支持了阿里雲上微服務領域三大產品,EDAS(企業級分佈式應用服務)、SAE(Serverless 應用引擎)和 MSE(微服務引擎)。這三個產品都支持微服務治理能力,滿足不同的企業需求,產品特性如下:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"企業級分佈式應用服務 EDAS(Enterprise Distributed Application Service):","attrs":{}},{"type":"text","text":"是應用全生命週期管理和監控的一站式 PaaS 平臺,支持部署於 Kubernetes/ECS,無侵入支持 Java/Go/Python/PHP/.NetCore 等多語言應用的發佈運行和服務治理 ,Java 支持 Spring Cloud、Apache Dubbo 近五年所有版本,多語言應用一鍵開啓 Service Mesh。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"Serverless 應用引擎(Serverless App Engine,簡稱 SAE):","attrs":{}},{"type":"text","text":"實現了 Serverless 架構 + 微服務架構的完美融合,真正按需使用、按量計費,節省閒置計算資源,同時免去 IaaS 運維,有效提升開發運維效率。SAE 支持 Spring Cloud、Dubbo 等流行的微服務架構,支持控制檯、Jenkins、雲效、插件等部署方式。除了微服務應用外,您還能通過 Docker 鏡像部署任何語言的應用。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"微服務引擎(Micro Service Engine,簡稱 MSE):","attrs":{}},{"type":"text","text":"是一個面向業界主流開源微服務生態的一站式微服務平臺, 幫助微服務用戶更穩定、更便捷、更低成本的使用開源微服務技術構建微服務體系。提供註冊中心、配置中心全託管(兼容 Nacos/ZooKeeper/Eureka)、網關(兼容 Zuul/Kong/Spring Cloud Gateway)和無侵入的開源增強服務治理能力。","attrs":{}}]}]}],"attrs":{}},{"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":"因此,無論你是 EDAS 用戶、SAE 用戶還是 MSE 用戶,都可以使用端雲互聯能力來提高上雲的開發效率。在插件上,這三個產品的配置步驟是基本相同的,除了產品自身的差異性以外。配置頁如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/f9/f98e2a141a8801a0fafba85774558d56.png","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":"在未來,我們會支持阿里雲上更多的雲原生產品進行互聯,同時也會服務於阿里雲以外的雲原生開發者,敬請期待。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"端雲互聯3.0","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2.0 版本解決了 Java 應用跟雲端互聯互通的問題,很多細節也打磨的比較完善,但它缺乏對容器領域和診斷能力的支持。這些能力我們在 3.0 階段進行了補齊。","attrs":{}}]},{"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":"如果你是 Kubernetes 用戶,那麼可以使用 3.0 插件的 Kubernetes 代理能力,無需額外配置雲端代理機。","attrs":{}}]},{"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 語言用戶,或者對應用運行環境有一定要求,那麼可以使用 3.0 插件的容器級互聯能力,來在本地使用 Docker 運行應用。在 Docker 容器中,應用可以正常訪問雲端服務和資源,流量自動通過代理來轉發。","attrs":{}}]},{"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.0 插件的本地鏈路診斷能力,我們會統一收集本地應用的調用鏈路,調用異常一目瞭然。","attrs":{}}]},{"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":"下面來具體介紹這些特性。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"Kubernetes 代理","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"3.0 版本的 Kubernetes 代理能力可基於 Kubernetes 集羣自動打通代理通道。","attrs":{}}]},{"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":"在面向 Kubernetes 的開發中,我們可以通過 kubectl 命令和 kubeconfig 配置文件來跟 API Server 進行通信,並訪問集羣中的容器。API Server 會對請求進行身份認證、鑑權和加密處理。如果開放 API Server 的公網訪問,那麼我們在本地通過 kubectl 執行交互式命令時,此時 API Server 將充當中間代理角色,如下所示:","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/de/de58455e97f7a60034ce80a73b9e30a3.png","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":"基於此特性,端雲互聯 3.0 插件在應用啓動時,調用 kubectl 臨時創建一個代理容器。通過結合 API Server 和臨時代理容器進行打通,本地應用可訪問雲端服務和其他資源。整體鏈路如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/61/6173003b0c8d86edced47abe5dcf7b72.png","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":"代理容器佔用 64MB ~ 128MB 的節點內存,並在本地應用停止時自動刪除。","attrs":{}}]},{"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":"而在插件配置上也非常簡單,你只需在插件中設置 kubeconfig 配置文件和選擇 Kubernetes 命名空間:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/91/91c0aaf57147526dcf2556ff31582041.png","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":"在啓動本地應用時,插件使用該 kubeconfig 配置文件來調用 kubectl 創建臨時容器,並進行通道打通和流量轉發。在終止應用時,插件使用該 kubeconfig 配置文件來調用 kubectl 刪除該臨時容器。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"容器級互聯","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"容器級互聯是指,本地會啓動 Docker 容器,並在容器內運行你的微服務應用,微服務應用可跟雲端環境進行互聯。如果你存在如下場景,那麼容器級互聯是你的最佳選擇:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"非 Java 語言應用;","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"應用運行時對操作系統存在特定要求;","attrs":{}}]}]}],"attrs":{}},{"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":"在此模式下,微服務應用和通道服務都使用容器來運行,整體交互如下:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/2b/2bd60c515d80332ff4a3162b40b709db.png","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":"在實現層面上,容器級互聯基於 iptables 來攔截和轉發流量到代理容器中的通道服務,通道服務再將數據通過雲端代理轉發至目標地址。在架構上,這種模式跟 Service Mesh 的 Sidecar 模式有點類似,應用容器把流量轉發給通道服務容器(sidecar 容器)。不過端雲互聯的通道容器只是做數據的透明轉發,而 Service Mesh 的 Sidecar 可進行微服務發現和治理的能力,這一點有所不同。","attrs":{}}]},{"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":"在使用上,插件運行容器的 Alibaba Microservice Container 配置,交互如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/7b/7be5a4fd0d366a53776c5982c897edee.png","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":"如果你在應用容器中運行的是 Java 語言應用,插件還支持快捷的應用調試,無需額外設置具體參數。啓動應用時,插件會通過環境變量注入 JDWP 調試參數,以打開調試端口。插件進一步結合 Intellij IDEA 的智能檢測,可通過 Attach debugger 來一鍵調試容器中的 Java 應用,如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/f0/f0105ec8350eccba3464da185cd306f3.png","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":"由圖可見,插件會將容器中應用的日誌輸出打印在IDE窗口中,日誌中的“Listening for transport dt_socket at address: 5005”表示容器中的 Java 應用已打開調試端口。點擊 Attach debugger,IDE 將會連接到容器中 Java 應用的調試端口,接下來便可進行代碼調試,如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/c6/c647d1eb5d19780c094a1bd79a7c5d27.png","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":"本地鏈路診斷","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在開發過程中,你是否遇到過這個場景:下游服務接口返回了 500,你只知道接口調用失敗了,但具體原因並不知曉?找該模塊研發人員來排查時,他過了半天回覆一句“現在有點忙,待會我看看”?等他有空排查後,發現問題出在另一個模塊,讓你去找另一個同學來排查?","attrs":{}}]},{"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":"諸如此類的場景在開發過程中屢見不鮮,往往一個小問題要花費大量精力和時間來進行排查。這個場景是鏈路追蹤技術的典型場景。現在,我們把鏈路追蹤也集成到端雲互聯能力上,使得本地調用鏈路也能上報到雲端,當出現異常時問題一目瞭然。","attrs":{}}]},{"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":"比如,當前環境中有交易中心、商品中心和庫存中心三個服務,你正在和測試同學驗證新版本特性。測試同學在頁面測試下單流程時,發現下單失敗,如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ea/ea5c70ac99e197c3025cf755dfec749c.png","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":"由於涉及模塊多,問題排查耗時非常長。端雲互聯 3.0 插件集成了 ARMS(應用實時監控服務)的 Java Agent,它通過代碼無侵入的埋點機制來收集調用鏈路上的信息並上報到 ARMS 服務端進行統一收集和智能分析。出現異常時,只需在雲端根據 TraceId 來查詢調用鏈路,問題了然於胸:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/87/879c55a4be5cb0d280db00c8efba113e.png","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":"TraceId 是用於鏈路追蹤底層的概念,從前端頁面開始生成並透傳至下游各節點。爲方便使用,插件還提供了打印本地鏈路的開關,開啓後將會輸出本地應用服務調用鏈路的相關信息,如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/9d/9d4b7a8968546c1adf3576bfc15bece2.png","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":"鏈路輸出中包含如下信息:","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"TraceId:用於標記請求的整體處理過程。在分佈式微服務調用場景下,TraceId  會從最前端的應用節點透傳至下游鏈路各個節點,可根據此 TraceId 在 EDAS 控制檯(https://edas.console.aliyun.com/)或 ARMS 控制檯(https://arms.console.aliyun.com/)查詢整體鏈路處理過程。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Service:當前應用的請求處理入口,如 Spring Cloud 服務、Dubbo 服務、HSF 服務等。 ","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"API:鏈路處理過程中的方法簽名。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Line:方法處理的具體行數。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Cost:此方法及其下游處理的耗時,單位毫秒。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Ext:擴展信息,包含請求處理狀態碼、數據庫訪問SQL、資源目標地址等信息。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Console link:ARMS 控制檯上收集的此鏈路信息,可點擊此鏈接直接查看全鏈路信息。","attrs":{}}]}]}],"attrs":{}},{"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":"點擊 Console link 鏈接,可查看此請求的上下游處理鏈路,如下所示:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/88/8879d4bc649ac872fb87f5d6ede01aea.png","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":"我們還可以進一步查看每個服務內的處理詳情:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/28/2819f98a8c2a479c52793088661ff763.png","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":"看到這裏,是不是感覺排查問題有更多思路了呢:)","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"寫在最後","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雲原生浪潮浩浩蕩蕩不可阻擋,業務上雲也是企業的必經之路。但上雲從來都不是一片坦途,在此過程中我們總會遇到一些困難和挑戰。得益於雲原生技術的日益成熟,這些問題一定會有相應的解法。","attrs":{}}]},{"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":"在開發態這一領域,我們是國內雲廠商當中走在前沿的探索者。從 2018年開始孵化端雲互聯 1.0 版本,到目前 2021年的端雲互聯 3.0 版本,當中遇到了大大小小的問題和挑戰,但最終都一一解決了。此能力爲公共雲和專有云的開發者帶來了極大的便利,使其在本地就可以完成開發、測試和聯調閉環。","attrs":{}}]},{"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":"在未來我們會不斷提供更好用、更強大、更易用的雲原生工具來服務開發者,敬請期待。","attrs":{}}]},{"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","attrs":{}}],"text":"參考資料:","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"端雲互聯:https://help.aliyun.com/document_detail/200032.html","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"EDAS(企業級分佈式應用服務):https://www.aliyun.com/product/edas","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"SAE(Serverless 應用引擎):https://www.aliyun.com/product/aliware/product/sae","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"MSE(微服務引擎):https://www.aliyun.com/product/aliware/mse","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"ARMS(應用實時監控服務):https://www.aliyun.com/product/arms","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Arthas:https://github.com/alibaba/arthas","attrs":{}}]}]}],"attrs":{}},{"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":"原文鏈接:","attrs":{}},{"type":"link","attrs":{"href":"https://mp.weixin.qq.com/s/4axjsgApCoOKQnxXt3oRjg","title":"","type":null},"content":[{"type":"text","text":"這個雲原生開發的痛點你遇到了嗎?","attrs":{}}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章