亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

api網關對比

2024-11-29 09:12:00
19
0

1. 概述

        API網關作為統一的請求入口,對請求進行路由、負載均衡、協議轉換(http-->rpc)、安全防護、限流熔斷等,把與業務無關的邏輯提煉出來,與業務邏輯完全分離。

常見的API網關主要提供以下的功能:

  • 反向代理和路由:大多數項目采用網關的解決方案的最主要的原因。給出了訪問后端 API 的所有客戶端的單一入口,并隱藏內部服務部署的細節。
  • 負載均衡網關可以將單個傳入的請求路由到多個后端目的地。
  • 身份驗證和授權:網關應該能夠成功進行身份驗證并僅允許可信客戶端訪問 API,并且還能夠使用類似 RBAC 等方式來授權。
  • IP 列表白名單/黑名單:允許或阻止某些 IP 地址通過。
  • 性能分析:提供一種記錄與 API 調用相關的使用和其他有用度量的方法。
  • 限速和流控:控制 API 調用的能力。
  • 請求變形:在進一步轉發之前,能夠在轉發之前轉換請求和響應(包括 Header 和 Body)。
  • 版本控制:同時使用不同版本的 API 選項或可能以金絲雀發布或藍/綠部署的形式提供慢速推出 API。
  • 斷路器:微服務架構模式有用,以避免使用中斷。
  • 多協議支持:WebSocket/GRPC。
  • 緩存:減少網絡帶寬和往返時間消耗,如果可以緩存頻繁要求的數據,則可以提高性能和響應時間
  • API 文檔:如果計劃將 API 暴露給組織以外的開發人員,那么必須考慮使用 API 文檔,例如 Swagger 或 OpenAPI。

2. 開源API網關對比

2.1.  ingress(目前)

功能:

  • 作用于 OSI 模型的第七層(應用層),主要管理基于域名或路徑的路由
  • 主要負責流量的入口管理,對于出口和服務間通信不提供直接支持
  • 適合基本的HTTP路由需求,它集成了負載均衡和SSL終端
  • 部署簡單,易于設置和維護,適合小型或中等規模的應用。

缺點:

  • 不支持復雜的業務場景,無法定制。
  • 沒有管理的 UI 和管理 API,大部分的工作都需要手工配置 config 文件的方式來進行

2.2.  istio

功能:

  • 提供了一種方式來控制、管理和監視在多個微服務之間的網絡通信。服務網格是在應用程序之上,但在網絡層之下的一個基礎設施層。
  • 提供了負載均衡、服務到服務的認證、流量轉移規則、故障注入、金絲雀發布、分布式蹤等功能,無需更改服務代碼
  • 流量控制:Envoy通過HTTP,gRPC,WebSocket和TCP流量的豐富路由規則啟用細粒度的流量控制應用;支持請求路由和流量轉移,支持彈性功能,包括熔斷、超時、重試。
  • 網絡彈性:Envoy包括對自動重試,斷路和故障注入的開箱即用支持;
  • 安全性:Envoy還可以實施安全策略,并對基礎服務之間的通信應用訪問控制和速率限制;

缺點:

  • 提供更為復雜和全面的功能集合,對于大型分布式應用是非常有用的,學習成本高。
  • 接管所有服務到服務的通信,增加額外的通信開銷。
  • 部署比較復雜

2.3.  apisix

功能:

  • 主要是第七層(應用層),但可以支持四層的 TCP/UDP 流量管理。
  • 管理和優化路由,實現請求的負載均衡和故障轉移。
  • 支持限流限速(可以基于速率、請求數、并發等維度限制)、熔斷、重試機制等,保護后端服務不被過載。
  • 支持多種認證機制,例如 Key Auth、JWT、OAuth等,保障API的安全性。
  • 提供高度可觀測性,集成如 Prometheus 和 Grafana 等工具來監控和分析API使用情況
  • 可擴展性強,擁有靈活的插件機制
  • 內置控制臺

缺點:

  • 額外維護一套高可用的 etcd 集群
  • 開源后有非常多的功能,但是缺少落地案例,沒有相關的文檔指引大家如何使用。

2.4. kong

功能:

  • Kong通過在 openresty 各個階段加入了lua代碼來實現插件的注入和執行
  • Authentication 身份認證插件:Kong 提供了 Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication 等等實現。
  • Security 安全控制插件:ACL(訪問控制)、CORS(跨域資源共享)、動態SSL、IP 限制、爬蟲檢測等等實現。
  • Traffic Control 流量控制插件:請求限流(基于請求計數限流)、上游響應限流(根據 upstream 響應計數限流)、請求大小限制等等實現。限流支持本地、Redis 和集群三種限流模式。
  • Analytics & Monitoring 分析監控插件:對接 Datadog、Prometheus、Zipkin 等等監控系統的實現。
  • Transformations 協議轉換插件:請求轉換(在轉發到 upstream 之前修改請求)、響應轉換(在 upstream 響應返回給客戶端之前修改響應)。
  • Logging 日志應用插件:支持 TCP、UDP、HTTP、File、Syslog、StatsD、Loggly 等等方式傳輸日志。

缺點:

  • 免費版不提供官方控制臺,但是有開源社區版本Konga控制臺
  • 性能不如apisix,路由使用的是遍歷查找,當網關內有超過上千個路由時,它的性能就會出現比較急劇的下降。
  • 需要依賴于PostgreSQL或Cassandra數據庫,這使Kong的整個架構非常臃腫,會帶來高可用的問題。如果數據庫故障了,那么整個API網關都會出現故障。

3. 總結

  • Nginx:Nginx 基于 C 開發的高性能 API 網關,擁有眾多的插件,如果API 管理的需求比較簡單,接受手工配置路由,Nginx 是個不錯的選擇。
  • Kong:Kong 是基于 Nginx 的 API 網關,使用 OpenResty 和 Lua 擴展,后臺使用 PostgreSQL,功能眾多,社區的熱度很高,但是性能上看比起 Nginx 有相當的損失。如果功能和擴展性有要求,可以考慮 Kong。
  • APISIX:APISIX 和 Kong 的架構類似,但是采用了云原生的設計,使用 ETCD 作為后臺,性能上比起 Kong 有相當的優勢,適合對性能要求高的云原生部署的場景。
  •   從性能,可維護性和高可用各方面綜合考慮,建議采用Apisix方案。
0條評論
作者已關閉評論
a****m
4文章數
0粉絲數
a****m
4 文章 | 0 粉絲
a****m
4文章數
0粉絲數
a****m
4 文章 | 0 粉絲
原創

api網關對比

2024-11-29 09:12:00
19
0

1. 概述

        API網關作為統一的請求入口,對請求進行路由、負載均衡、協議轉換(http-->rpc)、安全防護、限流熔斷等,把與業務無關的邏輯提煉出來,與業務邏輯完全分離。

常見的API網關主要提供以下的功能:

  • 反向代理和路由:大多數項目采用網關的解決方案的最主要的原因。給出了訪問后端 API 的所有客戶端的單一入口,并隱藏內部服務部署的細節。
  • 負載均衡網關可以將單個傳入的請求路由到多個后端目的地。
  • 身份驗證和授權:網關應該能夠成功進行身份驗證并僅允許可信客戶端訪問 API,并且還能夠使用類似 RBAC 等方式來授權。
  • IP 列表白名單/黑名單:允許或阻止某些 IP 地址通過。
  • 性能分析:提供一種記錄與 API 調用相關的使用和其他有用度量的方法。
  • 限速和流控:控制 API 調用的能力。
  • 請求變形:在進一步轉發之前,能夠在轉發之前轉換請求和響應(包括 Header 和 Body)。
  • 版本控制:同時使用不同版本的 API 選項或可能以金絲雀發布或藍/綠部署的形式提供慢速推出 API。
  • 斷路器:微服務架構模式有用,以避免使用中斷。
  • 多協議支持:WebSocket/GRPC。
  • 緩存:減少網絡帶寬和往返時間消耗,如果可以緩存頻繁要求的數據,則可以提高性能和響應時間
  • API 文檔:如果計劃將 API 暴露給組織以外的開發人員,那么必須考慮使用 API 文檔,例如 Swagger 或 OpenAPI。

2. 開源API網關對比

2.1.  ingress(目前)

功能:

  • 作用于 OSI 模型的第七層(應用層),主要管理基于域名或路徑的路由
  • 主要負責流量的入口管理,對于出口和服務間通信不提供直接支持
  • 適合基本的HTTP路由需求,它集成了負載均衡和SSL終端
  • 部署簡單,易于設置和維護,適合小型或中等規模的應用。

缺點:

  • 不支持復雜的業務場景,無法定制。
  • 沒有管理的 UI 和管理 API,大部分的工作都需要手工配置 config 文件的方式來進行

2.2.  istio

功能:

  • 提供了一種方式來控制、管理和監視在多個微服務之間的網絡通信。服務網格是在應用程序之上,但在網絡層之下的一個基礎設施層。
  • 提供了負載均衡、服務到服務的認證、流量轉移規則、故障注入、金絲雀發布、分布式蹤等功能,無需更改服務代碼
  • 流量控制:Envoy通過HTTP,gRPC,WebSocket和TCP流量的豐富路由規則啟用細粒度的流量控制應用;支持請求路由和流量轉移,支持彈性功能,包括熔斷、超時、重試。
  • 網絡彈性:Envoy包括對自動重試,斷路和故障注入的開箱即用支持;
  • 安全性:Envoy還可以實施安全策略,并對基礎服務之間的通信應用訪問控制和速率限制;

缺點:

  • 提供更為復雜和全面的功能集合,對于大型分布式應用是非常有用的,學習成本高。
  • 接管所有服務到服務的通信,增加額外的通信開銷。
  • 部署比較復雜

2.3.  apisix

功能:

  • 主要是第七層(應用層),但可以支持四層的 TCP/UDP 流量管理。
  • 管理和優化路由,實現請求的負載均衡和故障轉移。
  • 支持限流限速(可以基于速率、請求數、并發等維度限制)、熔斷、重試機制等,保護后端服務不被過載。
  • 支持多種認證機制,例如 Key Auth、JWT、OAuth等,保障API的安全性。
  • 提供高度可觀測性,集成如 Prometheus 和 Grafana 等工具來監控和分析API使用情況
  • 可擴展性強,擁有靈活的插件機制
  • 內置控制臺

缺點:

  • 額外維護一套高可用的 etcd 集群
  • 開源后有非常多的功能,但是缺少落地案例,沒有相關的文檔指引大家如何使用。

2.4. kong

功能:

  • Kong通過在 openresty 各個階段加入了lua代碼來實現插件的注入和執行
  • Authentication 身份認證插件:Kong 提供了 Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication 等等實現。
  • Security 安全控制插件:ACL(訪問控制)、CORS(跨域資源共享)、動態SSL、IP 限制、爬蟲檢測等等實現。
  • Traffic Control 流量控制插件:請求限流(基于請求計數限流)、上游響應限流(根據 upstream 響應計數限流)、請求大小限制等等實現。限流支持本地、Redis 和集群三種限流模式。
  • Analytics & Monitoring 分析監控插件:對接 Datadog、Prometheus、Zipkin 等等監控系統的實現。
  • Transformations 協議轉換插件:請求轉換(在轉發到 upstream 之前修改請求)、響應轉換(在 upstream 響應返回給客戶端之前修改響應)。
  • Logging 日志應用插件:支持 TCP、UDP、HTTP、File、Syslog、StatsD、Loggly 等等方式傳輸日志。

缺點:

  • 免費版不提供官方控制臺,但是有開源社區版本Konga控制臺
  • 性能不如apisix,路由使用的是遍歷查找,當網關內有超過上千個路由時,它的性能就會出現比較急劇的下降。
  • 需要依賴于PostgreSQL或Cassandra數據庫,這使Kong的整個架構非常臃腫,會帶來高可用的問題。如果數據庫故障了,那么整個API網關都會出現故障。

3. 總結

  • Nginx:Nginx 基于 C 開發的高性能 API 網關,擁有眾多的插件,如果API 管理的需求比較簡單,接受手工配置路由,Nginx 是個不錯的選擇。
  • Kong:Kong 是基于 Nginx 的 API 網關,使用 OpenResty 和 Lua 擴展,后臺使用 PostgreSQL,功能眾多,社區的熱度很高,但是性能上看比起 Nginx 有相當的損失。如果功能和擴展性有要求,可以考慮 Kong。
  • APISIX:APISIX 和 Kong 的架構類似,但是采用了云原生的設計,使用 ETCD 作為后臺,性能上比起 Kong 有相當的優勢,適合對性能要求高的云原生部署的場景。
  •   從性能,可維護性和高可用各方面綜合考慮,建議采用Apisix方案。
文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0