三分鐘遷移Spring boot工程到Serverless

前言

Spring Boot已成爲當今最流行的Java後端開發框架,典型的應用方式是在雲上購買一臺虛擬機,每天24小時在上面運行Java程序,在這種情況下,用戶必須維護自己的虛擬機環境,而且按照包月包年等方式進行付費。

 

華爲雲FunctionGraph(函數工作流服務)有着零運維、低成本計算的特點,FunctionGraph按需運行代碼,無需配置和管理主機,您僅需爲代碼執行的每100ms和次數付費,如果代碼沒有運行的話,不會產生任何費用,而且每個月還有較多的免費額度。

 

FunctionGraph有明顯的成本和維護優勢,但是怎樣才能把標準的Spring Boot應用程序當做函數在FunctionGraph上運行起來呢?現在以我本地的一個SpringBoot工程(鏈接https://functionstage-examples.obs.cn-north-1.myhwclouds.com/ServerlessSpringBootDemo.zip)爲例展示快速遷移到華爲雲FunctionGraph的流程。

 

準備工作

下載ServerlessSpringBoot2-1.0.0.jar(鏈接https://functionstage-examples.obs.cn-north-1.myhwclouds.com/ServerlessSpringBoot2-1.0.0.jar)。

 

遷移流程

01.製作函數zip包

按照上面的動圖添加fgs.properties配置文件,增加兩個配置項fgs.component-scan和fgs.mapper-scan,然後導包。

 

所得的ServerlessSpringBootDemo.zip就是最終的函數代碼包。

 

02.創建函數

在華爲雲入口找到FunctionGraph服務,進去後選擇創建函數,函數名稱建議設置爲Controller中的根路徑,例如本例的webtest,選擇語言爲Java8,另外設置函數執行入口爲com.huawei.fgs.ext.handler.Main.handler,選擇zip包方式上傳代碼(或者可以將代碼先傳入OBS桶,使用OBS上傳方式創建),創建成功。

 

03.創建APIG觸發器

函數創建完成後修改內存爲1024,修改超時時間爲30(首次啓動時間較長)並保存。接下來切換到觸發器選項卡,點擊創建觸發器,選擇APIG,將安全認證改成NONE,後端超時設置爲30000,和函數超時保持一致,點擊確定完成創建。

 

檢驗結果

直接在瀏覽器中訪問APIG生成的URL,因爲demo中的Controller中並沒有匹配/webtest路徑的RequestMapping,因此一開始提示找不到路徑,稍加修改後可以看到效果:

注意事項

1、使用SpringBoot的AOP特性時,請不要將切面定義到Controller層,否則會導致無法使用;

2、目前Controller都會視作RestController,所有的接口均會以ResponseBody形式返回,暫時不支持返回html頁面;

3、在application.properties中去掉server.port配置,加入spring.main.web-environment=false配置項可以小幅提升首次啓動速度;

4、如果代碼需要經常改動,請將所有的依賴包打包成一個zip,上傳到OBS,創建函數時填入依賴代碼包的地址,後續更新代碼時,只需要上傳一個小的jar包即可;

5、如果業務代碼中使用了filter,需要對代碼進行修改,具體方式後續會提供(本demo中有簡單使用例子,依賴FunctionGraph的Java SDK(鏈接https://functionstage-sdk.obs.myhwclouds.com/java-sdk/fss-java-sdk-1.1.0.zip)中的Runtime-1.1.0.jar和ServerlessSpringBoot2-1.0.0.jar);

6、如果需要使用本demo的代碼,請先把application.properties中的mysql信息改爲自己的公網訪問配置:

 

另外在數據庫中創建users表和books表。

users表結構如下:

 

books表結構如下:

 

總結

綜上所述,整個遷移過程非常簡單,用戶無需改造自己的業務代碼,只需在資源目錄下新增fgs.properties文件即可,導包過程和常規情況稍有不同,按照上面的步驟也可以在數秒內完成,最後創建好函數和觸發器之後,整個流程就完成了。關於API網關的詳情,可以點擊這裏體驗哦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章