Apache APISIX API 網關
Apache APISIX是一個動態、即時、高效能的 API 閘道。
APISIX API閘道提供負載平衡、動態上行、金絲雀發布、熔斷、認證、可觀察性等豐富的流量管理功能。
您可以使用APISIX API Gateway處理傳統的南北向流量以及服務之間的東西向流量。它也可以用作 k8s 入口控制器。
Apache APISIX的技術架構:
社群
- 請為 G2 中的 APISIX 撰寫評論。
- 郵件清單:發送郵件至 [email protected],依照回覆訂閱郵件清單。
- Slack Workspace - 邀請連結(如果此連結已過期,請開啟問題),然後加入 #apisix 頻道(頻道 -> 瀏覽頻道 -> 搜尋「apisix」)。
- - 使用主題標籤
#ApacheAPISIX
關注我們並與我們互動 - 文件
- 討論
- 部落格
特徵
您可以使用APISIX API網關作為流量入口來處理所有業務數據,包括動態路由、動態上行、動態憑證、A/B測試、金絲雀發布、藍綠部署、限速、惡意攻擊防禦、指標、監控警報、服務可觀測性、服務治理等。
所有平台
- 雲端原生:與平台無關,沒有供應商鎖定,APISIX API 閘道可以從裸機運行到 Kubernetes。
- 支援ARM64:不用擔心基礎設施技術的鎖定。
多協議
- TCP/UDP 代理程式:動態 TCP/UDP 代理程式。
- Dubbo 代理:動態 HTTP 到 Dubbo 代理。
- 動態MQTT代理:支援透過
client_id
負載平衡MQTT,皆支援MQTT 3.1.*、5.0。 - gRPC 代理:代理 gRPC 流量。
- gRPC Web 代理程式:將 gRPC Web 流量代理到 gRPC 服務。
- gRPC轉碼:支援協定轉碼,以便客戶端可以透過HTTP/JSON存取您的gRPC API。
- 代理Websocket
- 代理協定
- HTTP(S) 轉送代理
- SSL:動態載入SSL憑證
- 帶有 QUIC 的 HTTP/3
全動態
- 熱更新和熱插件:持續更新其配置和插件,無需重新啟動!
- 代理程式重寫:支援在傳送到上游之前重寫要求的
host
、 uri
、 schema
、 method
、 headers
。 - 回應重寫:向客戶端設定自訂回應狀態代碼、正文和標頭。
- 動態負載平衡:根據權重進行循環負載平衡。
- 基於哈希的負載平衡:使用一致的哈希會話進行負載平衡。
- 健康檢查:對上游節點啟用健康檢查,負載平衡時會自動過濾不健康的節點,確保系統穩定性。
- 斷路器:智慧追蹤不健康的上游服務。
- 代理鏡像:提供鏡像客戶端請求的能力。
- 流量分割:允許使用者逐步引導各個上游之間的流量百分比。
細粒度路由
- 支援全路徑匹配和前綴匹配
- 支援所有 Nginx 內建變數作為路由條件,因此可以使用
cookie
、 args
等作為路由條件來實現金絲雀發布、A/B 測試等。 - 支援各種運算子作為路由的判斷條件,例如
{"arg_age", ">", 24}
- 支援自訂路由匹配功能
- IPv6:使用IPv6來匹配路由。
- 支持TTL
- 支援優先
- 支援批量Http請求
- 支援透過GraphQL屬性過濾路由
安全
- 豐富的身份驗證和授權支援:
- 金鑰認證
- 智威湯遜
- 基本認證
- 沃爾夫-rbac
- 卡賓
- 鑰匙斗篷
- 卡斯多爾
- IP白名單/黑名單
- 引用者白名單/黑名單
- IdP:支援外部身分識別平台,如Auth0、okta等。
- 限制要求
- 限制計數
- 限制並發
- Anti-ReDoS(正規表示式阻斷服務):內建反ReDoS策略,無需設定。
- CORS 為您的 API 啟用 CORS(跨來源資源共用)。
- URI 阻止程式:透過 URI 封鎖客戶端請求。
- 請求驗證器
- CSRF 基於
Double Submit Cookie
方式,保護您的 API 免受 CSRF 攻擊。
操作友好
- Zipkin 追蹤:Zipkin
- 開源APM:支援Apache SkyWalking
- 與外部服務發現搭配使用:除了內建的etcd之外,還支援Consul、Consul_kv、Nacos、Eureka和Zookeeper(CP)。
- 監控和指標:Prometheus
- 集群:APISIX節點無狀態,建立配置中心集群,請參考etcd集群指南。
- 高可用性:支援在同一個叢集中配置多個etcd位址。
- 儀表板
- 版本控制:支援操作回滾。
- CLI:透過命令列啟動停止重新載入 APISIX。
- Standalone:支援從本機YAML檔案載入路由規則,在kubernetes(k8s)下更友善。
- 全域規則:允許針對所有請求運行任何插件,例如:限制速率、IP 過濾器等。
- 高效能:單核QPS達18k,平均延遲小於0.2毫秒。
- 故障注入
- REST Admin API:使用REST Admin API來控制Apache APISIX,預設只允許127.0.0.1訪問,可以修改
conf/config.yaml
中的allow_admin
欄位來指定允許呼叫Admin API的IP列表。另請注意,管理 API 使用金鑰身份驗證來驗證呼叫者的身份。 - 外部記錄器:將存取日誌匯出到外部日誌管理工具。 (HTTP 記錄器、TCP 記錄器、Kafka 記錄器、UDP 記錄器、RocketMQ 記錄器、SkyWalking 記錄器、阿里雲記錄器(SLS)、Google Cloud 記錄器、Splunk HEC 記錄器、檔案記錄器、SolarWinds Loggly 記錄器、騰訊雲CLS)。
- ClickHouse:將日誌推送到ClickHouse。
- Elasticsearch:將日誌推送到Elasticsearch。
- Datadog:透過 UDP 協定將自訂指標推送到 DogStatsD 伺服器,與 Datadog 代理程式捆綁在一起。 DogStatsD 基本上是 StatsD 協定的實現,它收集 Apache APISIX 代理程式的自訂指標,將其聚合成單一資料點並將其傳送到配置的 Datadog 伺服器。
- 舵圖
- HashiCorp Vault:支援秘密管理解決方案,用於從低信任環境中支援的 Vault 安全儲存存取秘密。目前,可以使用 APISIX Secret 資源從 jwt-auth 驗證插件中的保管庫連結 RS256 金鑰(公鑰-私鑰對)或金鑰。
高度可擴展
- 自訂插件:允許掛鉤常見階段,例如
rewrite
、 access
、 header filter
、 body filter
和log
,還允許掛鉤balancer
階段。 - 插件可以用Java/Go/Python編寫
- 可以使用 Proxy Wasm SDK 編寫插件
- 自訂負載平衡演算法:您可以在
balancer
階段使用自訂負載平衡演算法。 - 自訂路由:支援用戶自行實現路由演算法。
多語言支援
- Apache APISIX 是用於外掛程式開發的多語言網關,並透過
RPC
和Wasm
提供支援。 - RPC方式,是目前的方式。開發者可依需求選擇語言,用RPC啟動獨立程序後,透過本地RPC通訊與APISIX交換資料。到目前為止,APISIX 已支援 Java、Golang、Python 和 Node.js。
- Wasm 或 WebAssembly 是一種實驗性方式。 APISIX 可以透過使用 Proxy Wasm SDK 編寫的 APISIX wasm 外掛程式來載入並執行 Wasm 字節碼。開發者只需要根據SDK編寫程式碼,然後編譯成Wasm字節碼,在有APISIX的Wasm VM上執行。
無伺服器
- Lua函數:呼叫APISIX中各階段的函數。
- AWS Lambda:與 AWS Lambda 函數整合作為動態上游,將特定 URI 的所有請求代理到 AWS API 閘道終端節點。支援透過 api 金鑰和 AWS IAM 存取金鑰進行授權。
- Azure Functions:與 Azure Serverless Function 無縫集成,作為動態上游,將特定 URI 的所有請求代理到 Microsoft Azure 雲端。
- Apache OpenWhisk:與 Apache OpenWhisk 無縫集成,作為動態上游,將特定 URI 的所有請求代理到您自己的 OpenWhisk 叢集。
開始使用
安裝
請參閱安裝文件。
入門
入門指南是學習 APISIX 基礎知識的好方法。只需按照入門中的步驟操作即可。
此外,您可以按照文件嘗試更多插件。
管理介面
Apache APISIX 提供 REST Admin API 來動態控制 Apache APISIX 叢集。
插件開發
您可以參考插件開發指南,以及範例插件example-plugin
的程式碼實作。閱讀插件概念將幫助您了解有關插件的更多資訊。
更多文件請參考 Apache APISIX 文件站點
基準
使用AWS的八核心伺服器,APISIX的QPS達到14萬,延遲僅0.2毫秒。
Benchmark腳本已經開源,歡迎嘗試和貢獻。
APISIX 也可以在 AWS graviton3 C7g 中完美運作。
使用者故事
- 歐洲 eFactory 平台:API 安全閘道 – 在 eFactory 平台中使用 APISIX
- 哥白尼參考系統軟體
- 更多故事
誰使用 APISIX API 閘道?
各種各樣的公司和組織使用 APISIX API Gateway 進行研究、生產和商業產品,以下是其中的一些:
- 空中雲匯
- 嗶哩嗶哩
- 視源股份
- 歐洲電子工廠平台
- 歐洲哥白尼參考系統
- 吉利
- 榮譽
- 地平線機器人
- 愛奇藝
- 聯想
- 美國太空總署噴射推進實驗室
- 奈雪
- OPPO
- 青雲
- 瑞士電信
- 騰訊遊戲
- 環球旅天
- 體內
- 新浪微博
- 微城
- WPS
- 小鵬
- 飛漲
標誌
- Apache APISIX 標誌(PNG)
- Apache APISIX 標誌來源
致謝
靈感來自孔和橙色。
執照
阿帕契 2.0 許可證