記網(wǎng)關(guān)APISIX調(diào)研

為什么要調(diào)研使用網(wǎng)關(guān)

公司現(xiàn)狀,生產(chǎn)上的服務(wù)器服務(wù)僅僅是使用nginx反向代理,隨著公司發(fā)展,項(xiàng)目不斷新增,需要頻繁的修改生產(chǎn)服務(wù)器配置;證書過(guò)期需要開發(fā)人員配置(運(yùn)營(yíng)人員不熟悉生產(chǎn)環(huán)境不會(huì)配置,開發(fā)人員需要回公司找運(yùn)營(yíng)人員獲取生產(chǎn)權(quán)限才能配置),更新麻煩;不具備限流、黑白名單配置等功能。更重要的是每更新配置nginx配置生效,都需要·nginx -s reload重新加載配置影響用戶使用。
為了進(jìn)一步保障生產(chǎn)環(huán)境的安全性,決定引入網(wǎng)關(guān)API

什么是微服務(wù)API網(wǎng)關(guān)

API網(wǎng)關(guān)并非一個(gè)新興的概念,在十幾年前就已經(jīng)存在了,它的作用主要是作為流量的入口,統(tǒng)一處理和業(yè)務(wù)相關(guān)的請(qǐng)求,讓API更佳安全、快速和準(zhǔn)確的得到處理,它有以下傳統(tǒng)功能:

  • 反向代理和負(fù)載均衡,這和Nginx的定位和功能是一致的

  • 動(dòng)態(tài)上游、動(dòng)態(tài)SSL證書和動(dòng)態(tài)限流限速等運(yùn)行時(shí)的動(dòng)態(tài)功能,這是開源版本的Nginx并不具備的功能

  • 上游的主動(dòng)和被動(dòng)健康檢查,以及服務(wù)熔斷

  • 在API網(wǎng)關(guān)的基礎(chǔ)上進(jìn)行擴(kuò)展,成為全生命周期的API管理平臺(tái)


    API Gateway(圖源于網(wǎng)絡(luò))

APISIX微服務(wù)網(wǎng)關(guān)

APISIX是一個(gè)云原聲,高性能,可擴(kuò)展的微服務(wù)API網(wǎng)關(guān),基于OpenResty和etcd實(shí)現(xiàn)。它進(jìn)行動(dòng)態(tài)路由和插件熱加載,特別適合微服務(wù)體系下的API管理。

為什么選擇APISIX?

APISIX是基于云原聲的微服務(wù)API網(wǎng)關(guān),可以處理傳統(tǒng)的南北向流量,也可以處理服務(wù)間的東西向流量。
APISIX通過(guò)插件機(jī)制,提供動(dòng)態(tài)負(fù)載均衡,身份驗(yàn)證,限流限速等功能,并支持你自己開發(fā)的插件。
雖說(shuō)APISIX是新出的產(chǎn)品,但它卻功能強(qiáng)大具有蓬勃活力與生機(jī)。對(duì)比現(xiàn)有流行的網(wǎng)關(guān),他具有強(qiáng)大的優(yōu)勢(shì)。而且市區(qū)活躍,對(duì)于用戶的疑惑能夠得到很快的回復(fù)解答,產(chǎn)品問(wèn)題也及時(shí)完善修復(fù)。具體的大家可自己市區(qū)了解,我這里就僅做簡(jiǎn)單介紹。

image.png

具備功能

  • 運(yùn)行環(huán)境:OpenResty和Tengine都支持
  • 云原生:平臺(tái)無(wú)關(guān),沒有供應(yīng)商鎖定,無(wú)論裸機(jī)還是其他都可以運(yùn)行
  • 熱更新和熱插件:無(wú)需重啟服務(wù),就可以持續(xù)更新配置和插件
  • 動(dòng)態(tài)負(fù)載均衡:動(dòng)態(tài)支持呦權(quán)重的循環(huán)負(fù)載均衡
  • 支持一致性hash的負(fù)載均衡:動(dòng)態(tài)支持一致性hash的負(fù)載均衡
  • ssl:動(dòng)態(tài)加載SSL證書
  • HTTP(S)反向代理
  • 健康檢查:?jiǎn)⒂蒙嫌紊嫌蔚慕】禉z查,將在負(fù)載均衡期間自動(dòng)過(guò)濾不健康的路由器,以確保系統(tǒng)穩(wěn)定性。
  • 熔斷器:智能跟蹤不健康上游服務(wù)。
  • 身份認(rèn)證key-authJWT
  • 限制速率
  • 限制請(qǐng)求數(shù)
  • 限制并發(fā)
  • 代理請(qǐng)求重寫:支持重寫請(qǐng)求上游的hosturischemaenable_websocketheaders信息。
  • 輸出內(nèi)容重寫:支持自定義修改返回內(nèi)容的status codebodyheaders
  • OpenTracing:支持Apache Skywalking和Zipkin
  • 監(jiān)控和指標(biāo)普羅米修斯
  • gRPC代理:通過(guò)APISIX代理gRPC連接,并使用APISIX的大部分特性管理你的gRPC服務(wù)。
  • gRPC協(xié)議轉(zhuǎn)換:支持協(xié)議的轉(zhuǎn)換,這樣客戶端可以通過(guò)HTTP / JSON來(lái)訪問(wèn)你的gRPC API。
  • Serverless:在APISIX的每一個(gè)階段,你都可以添加并調(diào)用自己編寫的函數(shù)。
  • 自定義插件:允許掛載常見階段,例如rewriteaccessheader filerbody filterlog,網(wǎng)求允許還掛載balancer階段。
  • 控制臺(tái):內(nèi)置控制臺(tái)來(lái)操作APISIX。
  • 版本控制:支持操作的多次回滾。
  • CLI:使用命令行來(lái)啟動(dòng),關(guān)閉和重啟APISIX。
  • REST API
  • Websocket代理
  • IPv6:支持使用IPv6格式匹配路由。**
  • 群集:APISIX例程是群集的
  • 可擴(kuò)展:簡(jiǎn)單易用的插件機(jī)制方便擴(kuò)展。
  • 高級(jí):在單核上QPS可以達(dá)到24k,同時(shí)延遲只有0.2毫秒。**
  • 防御ReDoS(正則表達(dá)式拒絕服務(wù))
  • IP黑名單
  • IdP支持:支持外部的身份認(rèn)證服務(wù),例如Auth0,Okta,Authing等,用戶可以通過(guò)對(duì)對(duì)接Oauth2.0等認(rèn)證方式。**
  • 單機(jī)模式:支持從本地配置文件中加載路由規(guī)則,在kubernetes(k8s)等環(huán)境下更友好。
  • 總體規(guī)則:允許對(duì)所有請(qǐng)求執(zhí)行插件,例如黑白名單,限流限速等。
  • TCP / UDP代理:動(dòng)態(tài)TCP / UDP代理。
  • 動(dòng)態(tài)MQTT代理:支持client_id對(duì)MQTT進(jìn)行負(fù)載均衡,同時(shí)支持MQTT 3.1。*5.0兩個(gè)協(xié)議標(biāo)準(zhǔn)。

網(wǎng)關(guān)APISIX實(shí)戰(zhàn)

網(wǎng)關(guān)APISIX實(shí)戰(zhàn)分享敬請(qǐng)關(guān)注(http://www.lxweimin.com/p/4f52aaf44738)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容