溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

三分鐘遷移Spring boot工程到Serverless

發(fā)布時間:2020-05-22 07:57:43 來源:網(wǎng)絡 閱讀:1109 作者:中間件小哥 欄目:云計算

前言

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

 

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

 

FunctionGraph有明顯的成本和維護優(yōu)勢,但是怎樣才能把標準的Spring Boot應用程序當做函數(shù)在FunctionGraph上運行起來呢?現(xiàn)在以我本地的一個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.制作函數(shù)zip包

三分鐘遷移Spring boot工程到Serverless

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

 

三分鐘遷移Spring boot工程到Serverless

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

 

02.創(chuàng)建函數(shù)

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

三分鐘遷移Spring boot工程到Serverless

 

03.創(chuàng)建APIG觸發(fā)器

函數(shù)創(chuàng)建完成后修改內(nèi)存為1024,修改超時時間為30(首次啟動時間較長)并保存。接下來切換到觸發(fā)器選項卡,點擊創(chuàng)建觸發(fā)器,選擇APIG,將安全認證改成NONE,后端超時設置為30000,和函數(shù)超時保持一致,點擊確定完成創(chuàng)建。

三分鐘遷移Spring boot工程到Serverless

 

檢驗結(jié)果

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

三分鐘遷移Spring boot工程到Serverless

注意事項

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

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

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

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

5、如果業(yè)務代碼中使用了filter,需要對代碼進行修改,具體方式后續(xù)會提供(本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信息改為自己的公網(wǎng)訪問配置:

三分鐘遷移Spring boot工程到Serverless

 

另外在數(shù)據(jù)庫中創(chuàng)建users表和books表。

users表結(jié)構如下:

三分鐘遷移Spring boot工程到Serverless

 

books表結(jié)構如下:

三分鐘遷移Spring boot工程到Serverless

 

總結(jié)

綜上所述,整個遷移過程非常簡單,用戶無需改造自己的業(yè)務代碼,只需在資源目錄下新增fgs.properties文件即可,導包過程和常規(guī)情況稍有不同,按照上面的步驟也可以在數(shù)秒內(nèi)完成,最后創(chuàng)建好函數(shù)和觸發(fā)器之后,整個流程就完成了。關于API網(wǎng)關的詳情,可以點擊這里體驗哦~

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI