網關常見問題

網關常見問題

 

      侯門一入深似海,從此蕭郎是路人

 

1、什麼是網關

總而言之,網關就是統一入口、鑑權校驗、動態路由和過濾封裝。

2、爲什麼需要網關

  • 微服務架構下,單體應用被切割成多個微服務,如果將所有的微服務直接對外暴露,會出現安全方面的各種問題,且內外耦合嚴重。
  •  Gateway 網關架構可以細到爲每一個服務的實例單獨配置一個 Gateway,也可以粗到爲整個架構配置一個 Gateway。這樣,原本複雜的系統架構就會變得更簡單可控。

3、網關設計

我認爲沒有很大的必要去重複造車,現在市面上較爲成熟的網關方案還是挺有借鑑價值的,不過我們仍可以瞭解下網關的設計思路。

不管是何種網關都需要滿足以下的功能和特性: 請求路由、服務註冊、負載均衡、彈力服務、安全、高性能和高可用

請求路由

當客戶端請求過來,調用端無需知道自己實際調用的其它服務地址,統一交給 Gateway 來處理,避免了內部多個微服務直接對外暴露。

服務註冊

網關的服務註冊功能,就是爲後端的服務實例提供服務的地址註冊、取消註冊,也就是註冊一些 API 接口。這樣 Gateway 就可以根據接收到的請求中的信息來決定路由到正確的後端服務上。

負載均衡

一個網關用於接收多個服務實例,所以網關還需要在各個對等的服務實例上做負載均衡策略。常見的策略就是 Round-Robin 輪詢、權重和最少使用。

彈力服務

網關應該讓應用服務只關心自己的業務邏輯,要引入異步、重試、冪等、流控、熔斷和監視等彈力服務手段。

安全

外界訪問的第一步就是網關,其安全要求毋庸置疑。打頭陣的網關作爲全系統第一道防線對後端的服務進行保護,基本要滿足SSL 加密及證書管理、Session 驗證、授權、數據校驗,以及對請求源進行惡意攻擊的防範。

4、網關落地

瞭解了大概的網關設計思路,可以根據公司項目業務需求進行技術選型,現主要分爲流量網關業務網關兩大類。

流量網關

流量網關,大致就是控制流量進入集羣的一類網關,比如一個服務集羣有很多非法或無效的請求,需要將請求拒之門外,降低集羣的流量壓力。

業務網關

業務網關更注重與服務器應用層交互,如各個微服務的權限控制、日誌輸出、數據加密和熔斷限流等。

5、常見的開源網關

OpenResty

  • OpenResty是一個流量網關。
  • OpenResty是基於 Nginx Lua 的高性能 Web 平臺,其內部集成了大量精良的 Lua 庫、第三方模塊以及大多數的依賴項。用於方便地搭建能夠處理超高併發、擴展性極高的Web 服務和動態網關。

Kong

  • Kong 是基於OpenResty開發的一個流量層網關,是一個雲原生、快速、可擴展、分佈式的Api 網關
  • Kong繼承了OpenResty的高性能、易擴展性等特點,且支持通過簡單的增加機器節點,可以很容易的水平擴展。
  • Kong優化了網關的訪問限制、安全、流量控制、分析監控、日誌、請求轉發和合成功能相關功能。
  • Kong更加專注於全局的Api管理策略,如全局流量監控、日誌記錄、全侷限流、黑白名單控制、接入請求到業務系統的負載均衡等。

Zuul1.0

  • ZuulNetflix開發的一套通用API網關,Zuul1.0採用同步阻塞架構,優化後的Zuul2,用Netty Server代替Servlet,升級爲異步非阻塞架構。
  • Zuul使用了一系列不同類型的過濾器,夠快速靈活地將動態路由、監視、彈性和安全性等功能應用到服務中。
  • Zuul提供了一個動態讀取、編譯和運行這些過濾器的框架。過濾器之間不直接通信,而是通過每個請求特有的RequestContext共享狀態。

Spring Cloud Gateway

  • SpringCloud Gateway Spring Cloud 生態系統中的網關,底層使用了高性能的通信框架Netty,其目的就是爲微服務架構提供一種簡單有效的統一的 API 路由管理方式,替代 Zuul 實現微服務全家桶技術棧。
  • Spring Cloud Gateway 不僅提供統一的路由方式,並且基於 Filter 鏈的方式提供了網關基本的功能,例如:安全、監控/指標、集成熔斷和限流。

 

 

 

 

侯門一入深似海
從此蕭郎是路人

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章