簡述一下APIGateway的設計思路晃痴,準備從頭寫一個網(wǎng)關。
API網(wǎng)關的職能
請求接入财忽,承接所有外部請求倘核。
中介策略,承擔了外部請求和實際服務中間的功能即彪,比如:鑒權紧唱、驗簽、路由祖凫、流控琼蚯、緩存、黑白名單過濾等等惠况。
業(yè)務聚合遭庶,所有后端業(yè)務服務都可以在這里聚合,通過某種方式將業(yè)務服務都聚集到這里稠屠。
統(tǒng)一管理峦睡,提供管理工具、后臺服務等等权埠,可以對服務進行注冊榨了、修改以及各種配置。
API網(wǎng)關需要實現(xiàn)的功能
流控攘蔽,控制流量龙屉,針對同一個ip在指定的時間段內(nèi)訪問次數(shù)做限制
驗簽解密,校驗參數(shù)、驗證簽名信息转捕、將加密的信息解密
接口驗證作岖,驗證接口是否存在、接口信息是否是當前調(diào)用者的接口
接口權限驗證五芝,調(diào)用的ip是否在白名單內(nèi)
業(yè)務參數(shù)驗證痘儡,校驗業(yè)務接口參數(shù)是否正確
調(diào)用業(yè)務接口,可以使用dubbo泛化調(diào)用
熔斷降級枢步,業(yè)務方接口不可用的時候或者業(yè)務方處理速度變慢沉删,考慮進行熔斷降級
加密返回,將調(diào)用結果封裝醉途、加密矾瑰、返回
管理控制臺,負責接口服務注冊隘擎、配置等
實現(xiàn)要點
實現(xiàn)方式使用責任鏈模式脯倚,鏈中每個模塊負責一個功能
本地緩存和分布式緩存配合,需要考慮本地緩存的更新嵌屎,可以使用zookeeper通知或者MQ通知
異步處理請求推正,使用Jetty容器部署應用
線程池隔離,請求接收宝惰、請求處理植榕、服務調(diào)用可以使用不同線程池進行隔離
日志記錄,請求以及處理等日志記錄尼夺,方便問題查詢
數(shù)據(jù)統(tǒng)計尊残,接口的調(diào)用信息統(tǒng)計,方便直觀查看接口調(diào)用情況
報警監(jiān)控淤堵,針對異城奚溃或者其他錯誤選擇報警
源碼:https://github.com/dachengxi/APIGateway
原文鏈接:https://cxis.me/2020/04/06/APIGateway%E8%AE%BE%E8%AE%A1%E7%9A%84%E6%80%9D%E8%B7%AF/