api-gateway介紹和分析

網(wǎng)關(guān)架構(gòu)模型

  • 沒有網(wǎng)關(guān)之前,面對(duì)后端服務(wù),前端要對(duì)接n個(gè)系統(tǒng)
  • 沒有統(tǒng)一入口所以,鑒權(quán),監(jiān)控,熔斷等都要重復(fù)實(shí)現(xiàn)

參考

image.png

演變

image.png

開源產(chǎn)品

  • kong,go方面的
  • zuul

spring cloud zuul

  • 功能
    動(dòng)態(tài)路由
    監(jiān)控
    安全
    認(rèn)證鑒權(quán)
    壓力測試
    金絲雀測試
    審查
    服務(wù)遷移
    負(fù)載剪裁
    靜態(tài)應(yīng)答處理
  • 可擴(kuò)展性
  • 鑒權(quán),監(jiān)控,路由,灰度
  • 如何快速落地到我們的業(yè)務(wù)中

zuul組件

zuul整體架構(gòu)

image.png

流程分析

  • @EnableZuulServer 普通網(wǎng)關(guān),只支持基本的route與filter.
  • @EnableZuulProxy 配合上服務(wù)發(fā)現(xiàn)與熔斷開關(guān)的上面這位增強(qiáng)版,具有反向代理功能 【我們需要的】

zuul filter

  • PreDecorationFilter:該過濾器根據(jù)提供的RouteLocator確定路由到的地址,以及怎樣去路由。該路由器也可為后端請(qǐng)求設(shè)置各種代理相關(guān)的header。

  • RibbonRoutingFilter:該過濾器使用Ribbon,Hystrix和可插拔的HTTP客戶端發(fā)送請(qǐng)求。serviceId在RequestContext.getCurrentContext().get("serviceId") 中。該過濾器可使用不同的HTTP客戶端,例如

Apache HttpClient:默認(rèn)的HTTP客戶端
Squareup OkHttpClient v3:如需使用該客戶端,需保證com.squareup.okhttp3的依賴在classpath中,并設(shè)置ribbon.okhttp.enabled = true 。
Netflix Ribbon HTTP client:設(shè)置ribbon.restclient.enabled = true 即可啟用該HTTP客戶端。需要注意的是,該客戶端有一定限制,例如不支持PATCH方法,另外,它有內(nèi)置的重試機(jī)制。

  • SimpleHostRoutingFilter:該過濾器通過Apache HttpClient向指定的URL發(fā)送請(qǐng)求。URL在RequestContext.getRouteHost() 中。

動(dòng)態(tài)路由【避免網(wǎng)關(guān)發(fā)版本】【灰度】(api-getway admin or restapi)

  • 繼承SimpleRouteLocator 類 重載locateRoutes方法
  • 獲取請(qǐng)求上下文得到用戶id,根據(jù)redis或者db配置規(guī)則 進(jìn)行路由轉(zhuǎn)發(fā)到特定的機(jī)器
  • 如何上線【walle上簡單操作分開發(fā)特定機(jī)器結(jié)合開發(fā)手動(dòng)更新路由】實(shí)現(xiàn)簡單灰度方案

微服務(wù)中sso和權(quán)限方案

  • 網(wǎng)關(guān)層進(jìn)行權(quán)限管理 ;
  • 各服務(wù)獨(dú)立實(shí)現(xiàn)校驗(yàn);
  • 校驗(yàn)邏輯實(shí)現(xiàn)在各服務(wù)上,通過共享數(shù)據(jù)或者授權(quán)中心等方式實(shí)現(xiàn);
  • 參考:https://my.oschina.net/crazyFeng1/blog/867428

協(xié)議解析

如何在現(xiàn)有業(yè)務(wù)系統(tǒng)中落地

  • 思考
image.png
  • 驗(yàn)證

  • 運(yùn)維和發(fā)布,灰度Fenix

自建網(wǎng)關(guān)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容