apisix高性能網關-中文開發文檔


2020年6月12日13:48:33

github:https://github.com/apache/incubator-apisix

目前此項目已有成為apache孵化項目

官方中文文檔 :https://github.com/apache/incubator-apisix/blob/master/README_CN.md

支持的功能很多,我個人比較推薦服務發現,這個很省資源,不然得吧java的一套全部上上去,這樣其他語言的也可以輕松做微服務了

APISIX

Build Status
License

  • QQ 交流群: 552030619
  • 郵件列表: 發郵件到 dev-subscribe@apisix.apache.org, 然后跟着回復郵件操作即可。
  • Twitter Follow

APISIX 是一個雲原生、高性能、可擴展的微服務 API 網關。

它是基於 Nginx 和 etcd 來實現,和傳統 API 網關相比,APISIX 具備動態路由和插件熱加載,特別適合微服務體系下的 API 管理。

為什么選擇 APISIX?

如果你正在構建網站、移動設備或 IoT(物聯網)的應用,那么你可能需要使用 API 網關來處理接口流量。

APISIX 是基於雲原生的微服務 API 網關,它是所有業務流量的入口,可以處理傳統的南北向流量,也可以處理服務間的東西向流量,也可以當做 k8s ingress controller 來使用。

APISIX 通過插件機制,提供動態負載平衡、身份驗證、限流限速等功能,並且支持你自己開發的插件。

功能

你可以把 Apache APISIX 當做流量入口,來處理所有的業務數據,包括動態路由、動態上游、動態證書、
A/B 測試、金絲雀發布(灰度發布)、藍綠部署、限流限速、抵御惡意攻擊、監控報警、服務可觀測性、服務治理等。

  • 全平台

    • 雲原生: 平台無關,沒有供應商鎖定,無論裸機還是 Kubernetes,APISIX 都可以運行。
    • 運行環境: OpenResty 和 Tengine 都支持。
    • 支持 ARM64: 不用擔心底層技術的鎖定。
  • 多協議

    • TCP/UDP 代理: 動態 TCP/UDP 代理。
    • 動態 MQTT 代理: 支持用 client_id 對 MQTT 進行負載均衡,同時支持 MQTT 3.1.*5.0 兩個協議標准。
    • gRPC 代理:通過 APISIX 代理 gRPC 連接,並使用 APISIX 的大部分特性管理你的 gRPC 服務。
    • gRPC 協議轉換:支持協議的轉換,這樣客戶端可以通過 HTTP/JSON 來訪問你的 gRPC API。
    • Websocket 代理
    • Proxy Protocol
    • Dubbo 代理:基於 Tengine,可以實現 Dubbo 請求的代理。
    • HTTP(S) 反向代理
    • SSL:動態加載 SSL 證書。
  • 全動態能力

    • 熱更新和熱插件: 無需重啟服務,就可以持續更新配置和插件。
    • 代理請求重寫: 支持重寫請求上游的hosturischemaenable_websocketheaders信息。
    • 輸出內容重寫: 支持自定義修改返回內容的 status codebodyheaders
    • Serverless: 在 APISIX 的每一個階段,你都可以添加並調用自己編寫的函數。
    • 動態負載均衡:動態支持有權重的 round-robin 負載平衡。
    • 支持一致性 hash 的負載均衡:動態支持一致性 hash 的負載均衡。
    • 健康檢查:啟用上游節點的健康檢查,將在負載均衡期間自動過濾不健康的節點,以確保系統穩定性。
    • 熔斷器: 智能跟蹤不健康上游服務。
    • 動態服務發現:支持基於注冊中心的服務發現功能,降低反向代理維護成本。
  • 精細化路由

  • 安全防護

  • 運維友好

    • OpenTracing 可觀測性: 支持 Apache SkywalkingZipkin
    • 監控和指標: Prometheus
    • 集群:APISIX 節點是無狀態的,創建配置中心集群請參考 etcd Clustering Guide
    • 高可用:支持配置同一個集群內的多個 etcd 地址。
    • 控制台: 內置控制台來操作 APISIX 集群。
    • 版本控制:支持操作的多次回滾。
    • CLI: 使用命令行來啟動、關閉和重啟 APISIX。
    • 單機模式: 支持從本地配置文件中加載路由規則,在 kubernetes(k8s) 等環境下更友好。
    • 全局規則:允許對所有請求執行插件,比如黑白名單、限流限速等。
    • 高性能:在單核上 QPS 可以達到 18k,同時延遲只有 0.2 毫秒。
    • 故障注入
    • REST Admin API: 使用 REST Admin API 來控制 Apache APISIX,默認只允許 127.0.0.1 訪問,你可以修改 conf/config.yaml 中的 allow_admin 字段,指定允許調用 Admin API 的 IP 列表。同時需要注意的是,Admin API 使用 key auth 來校驗調用者身份,在部署前需要修改 conf/config.yaml 中的 admin_key 字段,來保證安全。
    • 外部日志記錄器:將訪問日志導出到外部日志管理工具。(HTTP Logger, TCP Logger, Kafka Logger, UDP Logger)
  • 高度可擴展

    • 自定義插件: 允許掛載常見階段,例如init, rewriteaccessbalancer,header filerbody filterlog 階段。
    • 自定義負載均衡算法:可以在 balancer 階段使用自定義負載均衡算法。
    • 自定義路由: 支持用戶自己實現路由算法。

安裝

APISIX 在以下操作系統中可順利安裝並做過運行測試,需要注意的是:OpenResty 的版本必須 >= 1.15.8.1:

CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, ARM64 Ubuntu 18.04

安裝 APISIX 的步驟:

  1. 安裝運行時依賴:OpenResty 和 etcd,參考依賴安裝文檔
  2. 有以下幾種方式來安裝 Apache APISIX:

快速上手

  1. 啟動 APISIX
sudo apisix start
  1. 入門指南

入門指南是學習 APISIX 基礎知識的好方法。按照 入門指南的步驟即可。

更進一步,你可以跟着文檔來嘗試更多的插件

控制台

APISIX 內置了對 Dashboard 的支持,使用步驟如下:

  1. 確保你的運行環境中使用了最新的 Node.js 版本(>= 10)。

  2. 下載 dashboard 子模塊的源碼:

git submodule update --init --recursive
  1. 安裝 yarn

  2. 安裝依賴並構建

cd dashboard
yarn && yarn build:prod
  1. 與 APISIX 集成
    把編譯后的在 /dist 目錄下的所有文件,拷貝到 apisix/dashboard 目錄下。
cp -r dist/* .

使用瀏覽器打開 http://127.0.0.1:9080/apisix/dashboard/ 即可使用,
不用填寫用戶名和密碼,直接登錄。

Dashboard 默認只允許 127.0.0.1 訪問。你可以自行修改 conf/config.yaml 中的 allow_admin 字段,指定允許訪問 dashboard 的 IP 列表。

性能測試

使用 AWS 的 8 核心服務器來壓測 APISIX,QPS 可以達到 140000,同時延時只有 0.2 毫秒。

文檔

Apache APISIX 文檔索引

Apache APISIX 和 Kong 的比較

API 網關核心功能點,兩者均已覆蓋

功能 Apache APISIX KONG
動態上游 支持 支持
動態路由 支持 支持
健康檢查和熔斷器 支持 支持
動態SSL證書 支持 支持
七層和四層代理 支持 支持
分布式追蹤 支持 支持
自定義插件 支持 支持
REST API 支持 支持
CLI 支持 支持

Apache APISIX 的優勢

功能 Apache APISIX KONG
項目歸屬 Apache 軟件基金會 Kong Inc.
技術架構 Nginx + etcd Nginx + postgres
交流渠道 微信群、QQ群、郵件列表、Github、meetup Github、論壇、freenode
單核 QPS (開啟限流和prometheus插件) 18000 1700
平均延遲 0.2 毫秒 2 毫秒
支持 Dubbo 代理
配置回滾
支持生命周期的路由
插件熱更新
用戶自定義:負載均衡算法、路由
resty <--> gRPC 轉碼
支持 Tengine 作為運行時
MQTT 協議支持
配置生效時間 事件通知,低於1毫秒更新 定期輪詢,5 秒
自帶控制台
對接外部身份認證服務
配置中心高可用(HA)
指定時間窗口的限速
支持任何 Nginx 變量做路由條件

視頻和文章

用戶實際使用案例

APISIX 的用戶有哪些?

有很多公司和組織把 APISIX 用戶學習、研究、生產環境和商業產品中,包括:

歡迎用戶把自己加入到 Powered By 頁面。

全景圖

  

APISIX 被納入 雲原生軟件基金會 API 網關全景圖

參與社區

如果你對 APISIX 的開發和使用感興趣,歡迎加入我們的 QQ 群來交流:

致謝

靈感來自 Kong 和 Orange。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM