為什么要調(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)單介紹。
具備功能
- 運(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-auth,JWT。
- 限制速率
- 限制請(qǐng)求數(shù)
- 限制并發(fā)
- 代理請(qǐng)求重寫:支持重寫請(qǐng)求上游的
host
,uri
,schema
,enable_websocket
,headers
信息。 - 輸出內(nèi)容重寫:支持自定義修改返回內(nèi)容的
status code
,body
,headers
。 - 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ù)。
-
自定義插件:允許掛載常見階段,例如
rewrite
,access
,header filer
,body filter
和log
,網(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)。