
apisix logo.jpeg
1、什么是APISIX?
APISIX 是一個高性能、可擴展的微服務(wù)API網(wǎng)關(guān),基于 nginx(openresty)和 Lua 實現(xiàn)功能,借鑒了Kong的思路,將Kong底層的關(guān)系型數(shù)據(jù)庫(Postgres)替換成了NoSQL型的 etcd,這使得 APISIX 相較于 Kong 在性能上有了很大提升,在啟用各類插件的情況下,Apache APISIX 的性能據(jù)說是 Kong 的 10 倍,極具吸引力。
且相較于 Kong 來說,源碼更為簡潔,二次開發(fā)難度更低,但是相對的,開源時間較短,在插件功能完備性上不如Kong,比如缺少關(guān)于灰度相關(guān)的插件,但是其已納入Apache 基金會孵化,社區(qū)也較為活躍,后期的發(fā)展空間較為可觀。
和傳統(tǒng)的API網(wǎng)關(guān)相比,APISIX 和 Kong 一樣也是通過插件的形式來提供負載均衡、日記記錄、身份鑒權(quán)、流量控制等功能。
2、與 Kong的比較
兩者優(yōu)缺點:
| 產(chǎn)品/特性 | 優(yōu)勢 | 劣勢 | 二次開發(fā)難度 |
|---|---|---|---|
| Kong | 開源社區(qū)活躍、產(chǎn)品思路清晰 | 代碼量大、封裝多、依賴關(guān)系型數(shù)據(jù)庫、底層架構(gòu)跟不上趨勢 | 支持、難度大 |
| APISIX | 基于etcd、代碼易讀、插件熱加載 | 開源時間短 | 支持、難度小 |
從 API 網(wǎng)關(guān)核心功能點出發(fā):
| 功能 | Apache APISIX | Kong |
|---|---|---|
| 動態(tài)上游 | 支持 | 支持 |
| 動態(tài)路由 | 支持 | 支持 |
| 健康檢查和熔斷器 | 支持 | 支持 |
| 動態(tài)SSL證書 | 支持 | 支持 |
| 七層和四層代理 | 支持 | 支持 |
| 分布式追蹤 | 支持 | 支持 |
| 自定義插件 | 支持 | 支持 |
| REST API | 支持 | 支持 |
| CLI | 支持 | 支持 |
詳細比較:
| 功能 | Apache APISIX | Kong |
|---|---|---|
| 項目歸屬 | Apache 軟件基金會 | Kong Inc. |
| 是否開源 | Apache 2.0 協(xié)議 | Apache 2.0 協(xié)議(社區(qū)版) |
| 核心技術(shù) | Nginx + Lua | Nginx + Lua |
| 數(shù)據(jù)存儲 | etcd | Postgres、Cassandra |
| 部署模式 | 單機和集群 | 單機和集群 |
| 支持yaml | Yes | Yes |
| 交流渠道 | 郵件, 微信群, QQ群, GitHub, Slack, meetup | GitHub, Freenode, 論壇 |
| 單核 CPU, QPS(開啟限流和Prometheus 插件) | 18000 | 1700 |
| 延遲 | 0.2 ms | 2 ms |
| 支持Dubbo代理 | Yes | No |
| 配置回滾 | Yes | No |
| 支持生命周期的路由 | Yes | No |
| 插件熱加載 | Yes | No |
| 用戶自定義負載均衡算法和路由 | Yes | No |
| REST API <--> gRPC 轉(zhuǎn)碼 | Yes | No |
| 支持Tengine | Yes | No |
| 支持MQTT協(xié)議 | Yes | No |
| 配置生效時間 | 事件驅(qū)動, < 1ms | 輪詢, 5 seconds |
| Dashboard | Yes | No |
| IdP認證對接 | Yes | No |
| 配置中心高可用(HA) | Yes | No |
| 在指定的時間窗口內(nèi)限速 | Yes | No |
| 支持nginx變量作為路由條件 | Yes | No |