10 微服務架構學習與思考:微服務網關和開源 API 網關01-以 Nginx 為基礎的 API 網關詳細介紹( 二 )


它可以在物理機上運行也可以在 kubernetes 上運行 。

kong 官網:官網地址
github地址:kong github
kong 也提供了一張使用網關前后的對比圖 , 可以直觀看到使用 API 網關的變化,API 自身的功能明顯減少,都集成到 kong 里面:
10 微服務架構學習與思考:微服務網關和開源 API 網關01-以 Nginx 為基礎的 API 網關詳細介紹

文章插圖
?(來自:https://github.com/Kong/kong)
一些通用的功能都集成到 kong 里,而后面 API/RPC 只需要編寫業務相關功能就可以了,簡化了 API 開發 。
kong 架構kong 架構圖:
10 微服務架構學習與思考:微服務網關和開源 API 網關01-以 Nginx 為基礎的 API 網關詳細介紹

文章插圖
  • Admin API:通過 admin api 來管理 kong 的功能
  • Plugins:插件 , 默認插件和用戶自定義插件
  • Clustering & Database:存儲 kong 集群節點信息 , API 信息,插件信息等 。目前提供了 PostgreSQL 和 Cassandra 2 種支持 , 如果需要高可用建議使用 Cassandra 。
  • OpenResty:處理插件、運行插件程序
  • Nginx:處理底層操作
功能簡介
  • 開源產品和企業產品功能對比
kong 也提供了企業級產品,它還給出了 kong 開源產品和 kong 企業級產品功能對比圖,功能詳細對比在這里 https://docs.konghq.com/gateway/latest/#features 。
可以看到,企業級產品比開源產品提供了豐富得多的功能,這樣才能給企業提供價值 。
對比來看,開源功能相對企業版較少(開源產品功能也挺多),但是開源產品功能已經足夠小公司用,還能自定義插件功能 。如果你有預算費用可以使用企業版 , 這樣更快還有官方咨詢服務 。如果沒有預算,那開源也足夠用,也可自己開發插件 。
  • 開源產品功能
開源產品除了提供一些基礎功能:
包括 HTTP 基本認證、密鑰認證、CORS、監控、文件日志、API 請求限流、請求轉發、緩存、SSL設置等基本功能,這些功能都是通過插件機制實現 。
在 kong 3.0.x 文檔中,還看到了藍綠部署、cluster等功能,更多功能可以看文檔 。
還有一些其他重要功能特性:
  1. 集群
kong 支持單節點集群和多節點集群 。
單節點集群:連接到數據庫(Cassandra 或 PostgreSQL)的單個 Kong 節點創建一個節點的 Kong 群集 。通過此節點的 Admin API 應用的任何更改都將立即生效 。
多節點集群:多節點集群它是通過定期后臺作業與其他節點進行數據同步 ??梢酝ㄟ^配置參數 db_update_frequency(默認 5 秒) 更改頻率 , 這個頻率更新有點慢 。所以 kong 集群數據一致性是最終一致性 。
kong 也給用戶提供了自定義插件的功能,如果你有需要,自己可以編寫插件來擴展 kong 的功能 。
  1. 擴展功能-編寫插件
用戶可以編寫插件來對 kong 功能進行擴展,kong 的插件是在 API 請求響應循環的生命周期中被執行的 。
kong 插件文檔,默認用 lua 語言來編寫插件 , 也可以用其它語言 。
a. 編寫插件可以使用的語言 lua,Go , python,js
kong 在 2.6.x 支持了其他語言編寫插件,有 Go , python,js,文檔地址:https://docs.konghq.com/gateway/2.6.x/reference/external-plugins/ 。更老的版本應該也有支持的,得去看文檔 。
它還有一個編寫插件的模板 。
b. 插件市場 plugin hub
kong 也有自己的一個插件市場 , 也就是說你也可以給 kong 貢獻第三方插件,是優質插件可能會被收錄 。
  1. 通過 admin-api 來管理 kong
詳細看文檔地址:https://docs.konghq.com/gateway/3.0.x/admin-api/
web UI 界面管理kong 企業版提供了管理 UI,開源版本沒有管理 UI 。但是程序員是多么的勤奮也崇尚開源,所以就有很多開源貢獻的管理 UI,其中比較好用的,介紹 1 個,konga 。
konga 看 github 上的更新時間,也是 3 年前了,也算比較老的了 。
3.1.3 APISIX 網關APISIX 介紹Apache APISIX 是 Apache 軟件基金會下的云原生 API 網關,它兼具動態、實時、高性能等特點,提供了負載均衡、動態上游、灰度發布(金絲雀發布)、服務熔斷、身份認證、可觀測性等豐富的流量管理功能 。我們可以使用 Apache APISIX 來處理傳統的南北向流量,也可以處理服務間的東西向流量 。同時,它也支持作為 K8s Ingress Controller 來使用 。
apisix 也是基于 nginx , openresty 的 。
apisix 文檔:apisix doc
apisix github:apisix github
APISIX 架構整體架構圖:

推薦閱讀