天天看點

從零入門 Serverless | SAE 的遠端調試和雲端聯調

從零入門 Serverless | SAE 的遠端調試和雲端聯調

來源 |

Serverless 公衆号

作者 | 弈川 阿裡巴巴雲原生團隊

導讀:本節課程包含三部分内容,前兩個部分簡單介紹遠端調試以及端雲聯調的原理,最後在 Serverless 應用引擎中進行實際示範。

經過之前課程的學習,相信大家對于 Serverless 應用引擎(SAE)已經有了一定的了解,SAE 是一款基于容器與 kuberneters 的應用 PaaS 平台,在 SAE 提供的 Serverless 場景下,我們不需要再關注底層資源的運維,隻需要關注應用的業務邏輯本身。但是,我們在開發測試階段通常會需要用到調試功能,是以,為了友善使用者調試,我們提供了遠端調試功能,目前隻支援 Java 程式的遠端調試。

遠端調試

Java 遠端調試原理

從零入門 Serverless | SAE 的遠端調試和雲端聯調

衆所周知,我們的 Java 程式是運作在 Java 虛拟機(JVM)之上的,JVM 不單單為我們的 Java 程式提供了跨平台能力,并且也提供了相應接口與協定友善遠端調試。JDK 中有一個叫 JPDA 的體系來規範與支援 Java 程式的調試,在這個體系中,調試發起者與被調試程式的 JVM 底層分别由 JDI 與 JVMTI 子產品來支援,而兩個接口之間則是有 JDWP 來負責互相之間的通信。

由此可見,遠端調試的本質就是兩個 JVM 通過一個連接配接保持通信,被調試的程式作為服務端,在某個指定的端口監聽調試指令,而調試發起者則是作為用戶端連接配接目标端口,發送各種調試指令并且接收調試狀态。

我們此時已經了解了 Java 程式遠端調試的原理,那麼對于部署在 SAE 中的 Java 應用是如何實作遠端調試的?

SAE 中的 Java 遠端調試

從零入門 Serverless | SAE 的遠端調試和雲端聯調

首先,在 SAE 部署的 Java 應用需要先開啟調試模式,是以需要在部署應用時添加相關的啟動指令。另外,由于 SAE 的應用預設是無法提供公網通路的,是以需要一個 SLB 提供公網通路能力。以上兩條都設定好之後,最後可以獲得一個調試程式用 IP 與端口,将這個 IP+端口 設定到 IDE 中就能夠開始遠端調試了。

注:以上操作見文章【實操示範】部分。

端雲聯調

除了遠端調試,對于微服務的應用,端雲聯調也是一個非常重要的功能。

我們在微服務架構下的開發測試過程中,經常會遇到需要上線一個新的服務或者更新一個舊服務的版本的情況。如果沒有端雲聯調,我們隻能先在測試環境測試之後再上線生産環境。而通常測試環境與生産環境有着這樣那樣的差異,導緻有些隐藏的問題無法被及時發現。

而有了端雲聯調功能後,在正式上線之前,我們能夠直接實作本地服務與部署在雲端的服務互相調用,這樣就能夠友善我們更加貼近實際生産環境進行調試。

從零入門 Serverless | SAE 的遠端調試和雲端聯調

首先,部署在 SAE 上的服務與本地網絡上是有隔離的,是以需要在同一個 VPC 下購買一個 ECS 充當跳闆機。借助這個跳闆機我們可以通過 IDEA 的插件完成本地服務在雲端注冊中心的注冊與服務發現。最後即可完成端雲互聯,進行端雲聯調。

實操示範

最後對 SAE 提供的遠端調試與端雲聯調功能進行實際示範,示範過程請點選連結:

https://developer.aliyun.com/lesson_2026_23271#_23271

進行觀看。