Apache APISIX是一個(gè)動(dòng)態(tài)、實(shí)時(shí)、高性能的API網(wǎng)關(guān),APISIX提供豐富的流量管理功能,如負(fù)載平衡、動(dòng)態(tài)上游、金絲雀釋放、斷路、認(rèn)證、可觀察性等,你可以使用Apache APISIX來(lái)處理傳統(tǒng)的南北流量,以及服務(wù)之間的東西向流量,它也可以作為一個(gè)k8s入口控制器使用。
功能介紹
您可以使用Apache APISIX作為流量入口來(lái)處理所有的業(yè)務(wù)數(shù)據(jù),包括動(dòng)態(tài)路由、動(dòng)態(tài)上游、動(dòng)態(tài)證書、A/B測(cè)試、金絲雀發(fā)布、藍(lán)綠部署、極限速率、防御惡意攻擊、指標(biāo)、監(jiān)控警報(bào)、服務(wù)可觀察性、服務(wù)治理等。
所有平臺(tái)
云原生。平臺(tái)不可知,沒(méi)有廠商鎖定,APISIX可以從裸機(jī)到Kubernetes運(yùn)行。
運(yùn)行環(huán)境。同時(shí)支持OpenResty和Tengine。
支持ARM64。不用擔(dān)心對(duì)infra技術(shù)的鎖定。
多種協(xié)議
TCP/UDP代理。動(dòng)態(tài)TCP/UDP代理。
Dubbo代理。動(dòng)態(tài)HTTP到Dubbo代理。
動(dòng)態(tài)MQTT代理。支持通過(guò)客戶端_id來(lái)平衡MQTT的負(fù)載,都支持MQTT 3.1.*, 5.0。
gRPC代理。代理gRPC流量。
gRPC轉(zhuǎn)碼。支持協(xié)議轉(zhuǎn)碼,使客戶可以通過(guò)使用HTTP/JSON訪問(wèn)你的gRPC API。
代理Websocket
代理協(xié)議
代理Dubbo?;赥engine的Dubbo代理。
HTTP(S)轉(zhuǎn)發(fā)代理
SSL:動(dòng)態(tài)加載一個(gè)SSL證書。
完全動(dòng)態(tài)
熱更新和熱插件。持續(xù)更新其配置和插件,而無(wú)需重新啟動(dòng)!
代理重寫。支持重寫主機(jī)、URI、模式、啟用網(wǎng)絡(luò)接口、請(qǐng)求的頭文件,然后再發(fā)送到上游。
響應(yīng)重寫。設(shè)置自定義的響應(yīng)狀態(tài)代碼、正文和頭信息給客戶端。
無(wú)服務(wù)器。在APISIX的每個(gè)階段調(diào)用函數(shù)。
動(dòng)態(tài)負(fù)載平衡。循環(huán)式負(fù)載平衡,有權(quán)重。
基于哈希的負(fù)載平衡。用一致的散列會(huì)話進(jìn)行負(fù)載平衡。
健康檢查。在上游節(jié)點(diǎn)上啟用健康檢查,并將在負(fù)載平衡期間自動(dòng)過(guò)濾不健康的節(jié)點(diǎn),以確保系統(tǒng)穩(wěn)定。
斷路器。對(duì)不健康的上游服務(wù)進(jìn)行智能跟蹤。
代理鏡像。提供鏡像客戶端請(qǐng)求的能力。
流量分割。允許用戶在各種上游之間逐步引導(dǎo)一定比例的流量。
細(xì)粒度的路由
支持全路徑匹配和前綴匹配
支持所有Nginx內(nèi)置變量作為路由的條件,因此可以使用cookie、args等作為路由條件,實(shí)現(xiàn)金絲雀發(fā)布、A/B測(cè)試等。
支持各種運(yùn)算符作為路由的判斷條件,例如{"arg_age", ">", 24}。
支持自定義路由匹配功能
IPv6:使用IPv6來(lái)匹配路由。
支持TTL
支持優(yōu)先級(jí)
支持批量Http請(qǐng)求
安全性
認(rèn)證:密鑰認(rèn)證、JWT、基本認(rèn)證、wolf-rbac
IP白名單/黑名單
引用者白名單/黑名單
IdP:支持外部認(rèn)證服務(wù),如Auth0、okta等,用戶可以借此連接到OAuth 2.0和其他認(rèn)證方式。
限制要求
限額-計(jì)數(shù)
限額貨幣(Limit-currency
反ReDoS(正則表達(dá)式拒絕服務(wù))。內(nèi)置政策,無(wú)需配置就可以反ReDoS。
CORS 為你的API啟用CORS(跨源資源共享)。
URI阻止器:通過(guò)URI阻止客戶端請(qǐng)求。
請(qǐng)求驗(yàn)證器
OPS友好型
OpenTracing:支持Apache Skywalking和Zipkin。
與外部服務(wù)發(fā)現(xiàn)一起工作:除了內(nèi)置的etcd,它還支持Consul和Nacos,以及Eureka。
監(jiān)測(cè)和度量。普羅米修斯
集群。APISIX節(jié)點(diǎn)是無(wú)狀態(tài)的,創(chuàng)建配置中心的集群,請(qǐng)參考etcd集群指南。
高可用性。支持在同一個(gè)集群中配置多個(gè)etcd地址。
儀表板
版本控制。支持操作的回滾。
CLI:通過(guò)命令行啟動(dòng)/停止/重新加載APISIX。
獨(dú)立的。支持從本地YAML文件加載路由規(guī)則,這對(duì)kubernetes(k8s)來(lái)說(shuō)更友好。
全局規(guī)則。允許對(duì)所有請(qǐng)求運(yùn)行任何插件,例如:限制速率、IP過(guò)濾等。
高性能。單核QPS達(dá)到18k,平均延遲小于0.2毫秒。
故障注入
REST管理API。使用REST Admin API控制Apache APISIX,默認(rèn)只允許127.0.0.1訪問(wèn),你可以修改conf/config.yaml中的allow_admin字段,指定允許調(diào)用Admin API的IP列表。另外,請(qǐng)注意,Admin API使用密鑰認(rèn)證來(lái)驗(yàn)證調(diào)用者的身份。conf/config.yaml中的admin_key字段需要在部署前進(jìn)行修改以確保安全。
外部記錄器。將訪問(wèn)日志導(dǎo)出到外部日志管理工具。(HTTP Logger, TCP Logger, Kafka Logger, UDP Logger)
舵手圖
高度的可擴(kuò)展性
自定義插件。允許鉤住常見(jiàn)的階段,如重寫、訪問(wèn)、標(biāo)題過(guò)濾、正文過(guò)濾和日志,也允許鉤住平衡器階段。
自定義負(fù)載平衡算法。你可以在平衡器階段使用自定義負(fù)載平衡算法。
自定義路由。支持用戶自己實(shí)現(xiàn)路由算法。