國產開源項目 APISIX:基於雲原生的微服務 API 網關

技術編輯:鳴飛 發自北京
SegmentFault 思否報道丨公衆號:SegmentFaulthtml


apisix.jpg

APISIX 是基於雲原生的微服務 API 網關,它是全部業務流量的入口,能夠處理傳統的南北向流量,也能夠處理服務間的東西向流量,也能夠當作 k8s ingress controller 來使用。APISIX 由深圳支流科技團隊研發而且進入 Apache 基金會開始孵化。python

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

更多詳細的信息,能夠查閱APISIX 的白皮書git

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

項目地址:https://github.com/apache/inc...web

功能

  • 全平臺正則表達式

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

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

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

  • 安全防禦

  • 運維友好

    • OpenTracing 可觀測性:支持 Apache Skywalking 和 Zipkin
    • 監控和指標:Prometheus
    • 集羣:APISIX 節點是無狀態的,建立配置中心集羣請參考etcd Clustering Guide
    • 高可用:支持配置同一個集羣內的多個 etcd 地址。
    • 控制檯: 內置控制檯來操做 APISIX 集羣。
    • 版本控制:支持操做的屢次回滾。
    • CLI: 使用命令行來啓動、關閉和重啓 APISIX。
    • 單機模式: 支持從本地配置文件中加載路由規則,在 kubernetes(k8s) 等環境下更友好。
    • 全局規則:容許對全部請求執行插件,好比黑白名單、限流限速等。
    • 高性能:在單核上 QPS 能夠達到 18k,同時延遲只有 0.2 毫秒。
    • 故障注入
    • REST Admin API
    • Python SDK
  • 高度可擴展

    • 自定義插件: 容許掛載常見階段,例如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,ARM64Ubuntu 18.04

安裝 APISIX 的步驟:

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

SegmentFault思否微信公衆號

相關文章
相關標籤/搜索