VX-API-GatewayAPI網關
VX-API-Gateway是基于Vert.x3.5.1(java)開發(fā)的API網關,是一個集分布式,全異步,高性能,可擴展 ,輕量級的API網關
軟件使用說明
VX-API 執(zhí)行流程
綠線代表一定會執(zhí)行,黑線代表當存在時執(zhí)行,當用戶請求的時候,完整的流程按組件順序由1開始執(zhí)行到7,如果不滿足任意一個組件時請求結束并響應(fail-end-response),當任意組件出現(xiàn)異常時統(tǒng)一進入異常組件(Exception Handler)請求結束并響應錯誤信息
API的執(zhí)行流程參考組件介紹
組件介紹
1.黑名單檢查
該組件永遠會被執(zhí)行! 用戶請求時第一步先經過黑名單檢查,VX-API會讀取請求中的remote Address并獲取用戶的host(也就是獲取用戶的IP地址),如果用戶的IP地址在全局黑名單中,結束請求并響應狀態(tài)碼:404,狀態(tài)信息:you can't access this service;反則繼續(xù)執(zhí)行處理...
2.訪問限制
當創(chuàng)建API時開啟了訪問限制,該組件會被執(zhí)行! 訪問限制單位分別為:天/小時/分;可以設置API與IP限制,IP的限制不能大于API的限制;
假設開啟API限制:1分鐘可以訪問1000次;如果1分鐘內訪問次數大于1000將結束請求并響應請求(響應內容為:創(chuàng)建API中定義API返回結果:訪問限制返回);反則繼續(xù)執(zhí)行處理...
3.參數檢查
當創(chuàng)建API時如果在定義API請求中添加了入參定義,該組件會被執(zhí)行! 組件會根據入參定義規(guī)定的格式檢查請求中的參數;
如果參數不符合入參定義結束請求并響應請求(響應內容為:創(chuàng)建API中定義API返回結果:網關入口參數檢查失敗返回);反則繼續(xù)執(zhí)行處理...
4.權限認證
當創(chuàng)建API時開啟了安全認證,該組件會被執(zhí)行! 組件會將流程交給權限認證插件,權限認證插件負責做相關處理后決定將流程交給下一個組件處理或結束請求
5.前置處理器
當創(chuàng)建API時開啟了前置處理器,該組件會被執(zhí)行! 組件會將流程交給前置處理器插件,前置處理器插件負責做相關處理后決定將流程交給下一個組件處理或結束請求
6.中心處理器(主處理器)
當前面的組件都執(zhí)行通過時,該組件永遠會被執(zhí)行! 組件會根據服務類型做相應的處理,處理完畢后組件會判斷是否開啟了后置處理器,如果開啟了后置處理器,組件會將流程交給后置處理器,并傳遞一個標識告訴后置處理器當前組件處理的結果;反則結束請求并返回服務結果;
7.后置處理器
當創(chuàng)建API時開啟了后置處理器,該組件會被執(zhí)行! 該組件是正常流程的最后一個組件,組件會收到主處理器的執(zhí)行結果,組件做完相應操作后必須做對請求的響應用戶的請求;
8.異常處理器
當以上任意組件在執(zhí)行的過程中出現(xiàn)了異常,該組件會被執(zhí)行! 組件會結束請求并響應請求(響應內容為:創(chuàng)建API中定義API返回結果:發(fā)生異常/失敗返回);
服務類型介紹
服務類型指網關主處理器要處理的類型,詳情參考類型以下的介紹
HTTP/HTTPS
表示后臺服務是常見的HTTP/HTTPS,也就是網關要將用戶的請求發(fā)送的目的地,該服務支持帶權重的負載均衡支持輪詢與哈希策略(默認輪詢),自動斷路并重試連接;當網關請求后臺服務地址失敗時會提交給策略,如果同一個服務地址失敗兩次及以上時,會被策略移除,網關會檢測策略中是否存在不可用的服務地址,如果存在會根據設定的重試時間進行重試,重試后如果服務地址可用則將服務地址重新添加到策略中
頁面跳轉
該服務用于做鏈接重定向,當用戶請求該服務的API時會,網關會返回狀態(tài)302,告訴瀏覽器跳轉到指定的URL;
自定義服務
自定義服務其實跟前置處理器實現(xiàn)的功能差不多,因為前置處理器可以做完相應處理后響應用戶請求,自定義服務中提供了三個默認的實現(xiàn),分別為獲取網關時間戳,返回常量值與Session認證的授權
執(zhí)行方式與環(huán)境要求
該項目基于vert.x 3.5.1開發(fā),開發(fā)環(huán)境jdk1.8_121,理論上只要帶有JDK/JRE 1.8以上都可以運行該項目
可以在發(fā)行版中下載已經打包好的或者自己編譯打包該項目,方法如下:
執(zhí)行mvn clean package appassembler:assemble 對項目進行編譯打包
mvn clean package appassembler:assemble 打包完畢后進入target/VX-API-Gateway/bin執(zhí)行相應bat/sh文件
如果機器上沒有JDK8環(huán)境,可以自己下載一個JRE/JDK環(huán)境并在腳本中指定軟件使用哪個JRE/JDK啟動
修改示例(Windows環(huán)境):
假設jre在D盤/java目錄下,可以在start.bat找到%JAVACMD% %JAVA_OPTS% -Dfile....
在以上語句前cd到jre的所在bin目錄,也就是在執(zhí)行java之前切換到D:/java/jreXXX/bin目錄在執(zhí)行java,相當于設置了一個運行環(huán)境
cd D:/java/jreXXX/bin %JAVACMD% %JAVA_OPTS% -Dfile.encoding=UTF-8 ...
軟件目錄說明:
bin 執(zhí)行腳本
conf 配置文件與客戶端靜態(tài)文件
lib 項目依賴的架包
logs 日志文件
temp 緩存/臨時文件
項目目錄說明
src/main/java中core包存放核心代碼,spi包存放用戶可以自定義插件的接口與工廠,自定義插件時實現(xiàn)相應的接口并在工場中添加獲取
