您好,登錄后才能下訂單哦!
前言
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網關的詳情,可以點擊這里體驗哦~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。