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