天天看點

五分鐘内免費體驗 EDAS ,完美解決微服務痛點

2019 月 10 月 3 日,Spring Cloud Alibaba 正式 "挂牌" Spring 官方,成為推薦的 Spring Cloud 規範實作之一,官宣位址點選 這裡

目前,已包括愛回收、東家、Acmedcare+、生學教育、聯想雲、鳳凰網、平安科技等企業正在通過 Spring Cloud Alibaba 建構自己的微服務架構,并能無縫連接配接到阿裡雲的各類服務。

如果您有計劃将 Spring Cloud Alibaba 部署到雲端,那麼本文将提供一種 5 分鐘内就能免費體驗阿裡雲 EDAS 的方法。閱讀本文,您将了解到如何使用 EDAS 公網體驗環境,并了解部分 EDAS 的功能的詳情介紹,學習到如何通過 EDAS 來解決 Spring Cloud Alibaba + Dubbo 建構微服務時遇到的痛點。

微服務架構在生産環境落地是一個複雜的工程,以下是您可能會遇到的問題:

  • 某個應用提供了哪些服務,應用有哪些具體的服務類型和服務方法 ?他們的 QPS 分别是什麼,響應時間快還是慢,服務的健康程度怎樣 ?
  • 使用者回報服務響應慢,怎麼排查 ,如何準确地定位到響應慢的是哪類請求?這些請求的鍊路裡,每一個服務内的處理時間是多少 ?最慢的是哪行代碼,該怎麼優化 ?
  • 能否準确地用一張拓撲圖将微服務的架構描繪出來 ?服務之間的互相調用關系是怎樣的,會不會出現循環依賴,服務有沒有被某個上遊偷偷調用 ?
  • 使用者回報在某個場景使用的時候出現了問題,怎麼定位這次錯誤?能否迅速地找到出錯是哪個服務、哪行代碼 ?
  • 如何部署和運維服務注冊中心,通過鑒權認證保證服務注冊和發現的安全,如何保障服務中心控制台安全 ?

上述問題,對大多數公司來說都是痛點和難點。雖然其中的一些問題,開源也提供了解決方案,但是卻不能完美地貼合生産環境的最佳實踐,在應用到生産之前需要花費大量的精力去研究和修改開源成本。而且在這之後還可能需要付出高昂的計算資源成本和存儲資源成本,以及運維時高昂的人力成本。

但是在使用

EDAS

的情況下,以上問題全都可以在低成本的前提下迎刃而解,運維成本大幅下降,監控資訊一目了然。

為了幫助使用者快速體驗 EDAS ,EDAS 最近上線了公網體驗環境。在公網體驗環境下,您在五分鐘之内就可以将本機應用接入 EDAS,快速體驗 EDAS 的部分功能,而且完全免費!

為了更好地示範 EDAS 的功能,我們這裡提供了一個簡易版本的網上商城供您體驗,網上商城有三個子產品組成,服務架構包含了 Spring Cloud Alibaba 和 Apache Dubbo 。

公網體驗操作步驟

  1. 開通 ,如果已開通請略過。
  2. 登入阿裡雲 使用者中心 ,查詢阿裡雲

    AccessKey ID

    Access Key Secret

    。下面簡稱

    {阿裡雲AccessKey}

    {阿裡雲SecretKey}

  3. 下載下傳 EDAS 網上商城 Demo 應用
  4. 打開三個不同的指令行視窗,分别進入到剛才下載下傳 Jar 包的目錄,并分别執行如下指令,啟動應用。(Mac 系統可以通過 iTerm2 或 Terminal 執行,Windows 系統推薦通過 Cygwin 執行。)
curl http://edas-public.oss-cn-hangzhou.aliyuncs.com/install_package/public-region-trial.sh | bash -s {阿裡雲AccessKey}    {阿裡雲SecretKey}    cartservice-provider.jar | bash -s {阿裡雲AccessKey}    {阿裡雲SecretKey}    productservice-provider.jar | bash -s {阿裡雲AccessKey}    {阿裡雲SecretKey}    frontend.jar

登入 EDAS 控制台檢視基本資訊

  1. 登入 EDAS 控制台,在頂部的地域清單中選擇 其他 > 公網。
  2. 檢視應用清單
    • 在左側導航欄中選擇 應用管理 > 應用清單。
    • 在 應用清單 頁面可以看到已經接入了 cartservice-provider、frontend、productservice-provider 三個應用 。
      五分鐘内免費體驗 EDAS ,完美解決微服務痛點
  3. 檢視服務清單
    • 在左側導航欄中選擇 微服務管理 > 服務查詢。
    • 類型選擇 全部 ,直接點選 搜尋 ,就可以看到已經注冊了三個服務。
      五分鐘内免費體驗 EDAS ,完美解決微服務痛點

體驗網上商城

在 EDAS 的更多功能之前,我們先使用一下隻具備最基礎的幾個示範功能的簡易版網上商城。

  • 打開 frontend 項目的首頁

    127.0.0.1:8080

    ,可以看到一系列的商品。
五分鐘内免費體驗 EDAS ,完美解決微服務痛點
  • 點選商品對應的

    Buy

    按鈕,跳到商品詳情頁,檢視商品的描述。
五分鐘内免費體驗 EDAS ,完美解決微服務痛點
  • 選擇需要購買的數量,點選

    Add to Cart

    按鈕将商品添加到購物車,頁面會自動跳轉到購物車頁面。
五分鐘内免費體驗 EDAS ,完美解決微服務痛點
  • 點選頁面左上方的

    Hipster Shop

    可以跳轉到首頁。在首頁裡直接點選右上角的

    View Cart

    也可以直接跳轉到購物車頁面。

為了在接下來的步驟中能夠看到更多鍊路的資訊,建議在購物車中多添加幾件商品,甚至可以反複多操作幾次。

通過 EDAS 解決微服務痛點

應用監控一直是微服務中的難題,我的服務 QPS 是多少,GC 情況如何,延時怎麼樣,服務的成功率是多少,服務調用關系是怎樣的 ?基于開源方案搭建完整的一套系統需要花費大量的精力去研究和部署,而且耗費的計算和存儲資源的成本也非常大,但是借助 EDAS,這些資訊卻可以在低成本的前提下一目了然。

應用總覽迅速了解全貌

在應用的清單頁面,點選應用名

frontend

,會跳轉應用的詳情頁,在左側導航欄選擇 應用監控 > 應用總覽。可以看應用監控的總覽。

五分鐘内免費體驗 EDAS ,完美解決微服務痛點

應用的總覽包含了 總請求量、平均響應時間、Full GC、慢SQL、應用提供服務、應用依賴服務、HTTP-狀态碼統計、系統資訊等内容,這裡着重介紹下面的内容。

  1. 總請求量

    ,顯示應用在所選擇的時間内收到的請求的總量。
  2. Full GC 次數

    ,可以看到應用的 Full GC 的情況,更多 GC 詳情可以在

    應用詳情

    JVM監控

    裡檢視。
  3. 應用提供的服務

    ,檢視應用提供的服務類型,以及被調用的情況。本示例中我們可以看到應用提供了 HTTP 服務,在 15:38 到 15:39 這段時間内被調用了6次。
  4. 應用提供服務的平均響應時間

    ,顯示應用提供服務的平均響應時間,實時地檢視應用的狀态。本示例中我們可以看到在 15:38 到 15:39 這段時間内,應用提供的 HTTP 服務的平均響應時間為 1.03 s。
  5. 應用依賴的服務

    ,檢視應用依賴的服務類型,本示例中我們可以看到應用調用了 HTTP 服務和 Dubbo 服務,且在 15:38 到 15:39 這段時間内調用了12次 Dubbo 服務和 4次 HTTP 服務。
  6. 應用依賴服務的平均響應時間

    ,本示例中我們可以看到在 15:38 到 15:39 這段時間内,應用調用下遊的 Dubbo 服務平均耗時為 34.9 ms,調用下遊的 HTTP 服務的平均耗時為 295.3 ms。
  7. HTTP 狀态碼統計

    ,統計應用提供的 HTTP 服務的狀态碼,本示例中我們可以看到在 15:38 到 15:39 這段時間内,應用提供了 6 次 HTTP 服務,狀态碼全是 200。

監控詳情精準分析應用

前面介紹了總覽,如果想要看到更詳細更細化的資訊,在左側導航欄選擇 應用監控 > 應用詳情。可以看應用監控的詳情。

概覽

五分鐘内免費體驗 EDAS ,完美解決微服務痛點

左側的節點選擇中,可以選擇此應用下的不同節點,我們這裡隻有 30.5.125.70 這一台機器接入,是以不需要再選擇。

右側的概覽中,EDAS 會繪制此應用上下遊的調用路線圖,同時還能看到調用的類型、次數 和延遲,将滑鼠停留在節點上,會顯示下遊應用的應用名

productservice-provider

在上圖中我們可以看到應用的上遊是使用者,通過 HTTP 調用,調用的頻率為 4次/小時,平均耗時為 45.75 ms。

在上圖中我們可以看到應用下遊有兩個應用,其中左側的應用是通過 Dubbo 調用的,調用的頻率為 6次/每小時,平均耗時為 0.83 ms。右側的應用是通過 HTTP 調用的,調用的頻率為 7次 /小時,平均耗時為 3.71 ms。

JVM 監控

五分鐘内免費體驗 EDAS ,完美解決微服務痛點

選擇 JVM 監控頁面,可以看到 JVM 監控的詳情。

YoungGC 次數和 Full GC 次數

可以看到

frontend

應用在對應時間的 GC 次數。

堆記憶體的詳情

在 15:51到 15:52 這段時間内,堆記憶體總和為 404.8 M,老年代為 24.6 M,年輕代 Surivor 區為 7.8 M,年輕代 Eden 區為 372.4 M。

元空間詳情

元空間比較穩定,一直保持在 71.8 M 大小。

非堆記憶體的詳情

在 15:51到 15:52 這段時間内,送出位元組數 110.3M,出事位元組數 2.4 M。

直接緩沖區詳情

直接緩沖區比較穩定,DirectBuffer 總大小和 DirectBuffer 使用大小 一直保持在 283.8 K。

JVM 線程數

在此示例中我們可以看到線程總數為 103,死鎖線程數為 0 ,阻塞線程數為 0 ,Runnable 的線程數為 17,Timed_Waitting 的線程數為 49,Waitting 的線程數為37。

主機監控

五分鐘内免費體驗 EDAS ,完美解決微服務痛點

SQL 分析

EDAS 提供了 慢 SQL 查詢和分析的功能,可以幫您定位、排查應用卡頓問題的原因,找到具體是哪條 SQL 導緻了應用的卡頓,進而徹底解決問題。本文所使用的 Demo 中并未涉及到 SQL 調用,是以這裡就無法示範此監控功能。EDAS SQL 分析功能底層是基于 ARMS 實作的,詳情可參考

ARMS 幫助文檔

異常分析

五分鐘内免費體驗 EDAS ,完美解決微服務痛點

frontend

提供了

http://127.0.0.1:8080/exception

http://127.0.0.1:8080/exception

兩個接口來模拟應用出現 Exception 的情況,在調用這些接口之後,就可以看到上圖中的資訊。

上圖中統計了應用出現的異常的類型,對應的代碼位址,以及出現的次數,結合下面的接口快照功能,可以檢視到完整的資訊。

接口快照

在右側的标簽清單中選擇 接口快照,可以看到 EDAS 采樣上來的調用鍊資訊,可以看到調用産生的時間、接口名稱、耗時、狀态、以及 TraceId,點選

1e057d4615710385566571131d72a1

這條具體調用鍊可以看到更詳細的資訊。

五分鐘内免費體驗 EDAS ,完美解決微服務痛點
五分鐘内免費體驗 EDAS ,完美解決微服務痛點

在調用鍊路中,可以看到這次請求完整的調用鍊,可以看到

/cart

這條鍊路,調用了兩次

cartservice-provider

,都是

com.alibabacloud.hipstershop.CartService@viewCart

方法,在這之後調用了 6 個 productservice-provider 下的

/product/*

接口。

從右邊的時間軸還可以看到請求耗時相關的資訊,在這裡可以看到請求的總耗時為 25 ms,以及看到每一次内部調用的具體耗時。在

方法棧

這一列,還可以看到一個 的按鈕,點選之後可以看到調用時方法堆棧的詳情。

五分鐘内免費體驗 EDAS ,完美解決微服務痛點

從上圖中可以看到請求調用時具體的堆棧資訊,詳細到 Java 的類名以及所在行号,右邊的時間軸同樣顯示了這個方法調用的耗時。有了這些資訊優化應用的調用時間自然是手到擒來。

接口調用監控快速解決問題

上一節介紹了應用監控詳情,如果想要看到更詳細更細化的資訊,在左側導航欄選擇 應用監控 > 接口調用。可以看應用監控的詳情。

接口詳情的概覽頁其實和應用詳情的概覽頁布局比較類似,不過這裡左側的節點選擇變成了接口選擇,選擇具體的請求後,可以看到這個請求對應的拓撲圖,以及對應的請求的頻率及平均響應時間。

這裡可以看到

/cart

請求的平均響應時間是 44.5 ms,總請求數為 22,錯誤數和異常數都是0。右邊的拓撲圖中,可以看到

/cart

請求的下遊調用包含了 2 次 Dubbo 和 5 次 HTTP。對應的請求頻率和平均響應時間都在拓撲圖中可以看到。将滑鼠移動到下遊的圖示中,會顯示下遊的具體資訊。

五分鐘内免費體驗 EDAS ,完美解決微服務痛點

鍊路上下遊

鍊路上下遊的資訊會顯示請求所對應的下遊的具體資訊,包括所屬的應用、應用的接口、請求數、響應時間、錯誤數。點選全部折疊/展開按鈕,還可以看到更詳細的圖形化資訊。

五分鐘内免費體驗 EDAS ,完美解決微服務痛點

五分鐘内免費體驗 EDAS ,完美解決微服務痛點

公網體驗其他注意事項

讀完本文之後,您應該已經迫不及待想 免費體驗 EDAS 了。為了能更好地使用公網體驗環境,您需要 注意 以下幾點:

  • 公網體驗環境最多支援部署 5 個應用。
  • 本文提供的應用隻是 Demo 應用,您也可以換成其他應用。
  • 公網體驗環境僅供本地體驗和開發提效使用,不保證 SLA,請勿用于生産環境。
  • 公網體驗環境目前僅提供 EDAS 的部分功能,想要體驗完整的 EDAS 功能請切換到其他區域。
  • 目前僅支援接入可執行 Jar 包應用。
  • 如果您想使用 EDAS 上的

    檢視服務清單

    功能,隻有在服務注冊中心是 Nacos 的情況下才支援。基于 Eureka、Zookeeper、Consul 等注冊中心的應用不支援此功能,但是其他功能均可正常使用。