三分鐘遷移Spring boot工程到Serverless

前言html

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

 

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

 

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

 

準備工做spring

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

 

遷移流程數據庫

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,所以一開始提示找不到路徑,稍加修改後能夠看到效果:

 

注意事項

一、使用SpringBoot的AOP特性時,請不要將切面定義到Controller層,不然會致使沒法使用;

二、目前Controller都會視做RestController,全部的接口均會以ResponseBody形式返回,暫時不支持返回html頁面;

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

四、若是代碼須要常常改動,請將全部的依賴包打包成一個zip,上傳到OBS,建立函數時填入依賴代碼包的地址,後續更新代碼時,只須要上傳一個小的jar包便可;

五、若是業務代碼中使用了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);

六、若是須要使用本demo的代碼,請先把application.properties中的mysql信息改成本身的公網訪問配置:

 

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

users表結構以下:

 

books表結構以下:

 

總結

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

相關文章
相關標籤/搜索