網關常見問題
侯門一入深似海,從此蕭郎是路人
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
- Zuul是Netflix開發的一套通用API網關,Zuul1.0采用同步阻塞架構,優化后的Zuul2,用Netty Server代替Servlet,升級為異步非阻塞架構,
- Zuul使用了一系列不同型別的過濾器,夠快速靈活地將動態路由、監視、彈性和安全性等功能應用到服務中,
- Zuul提供了一個動態讀取、編譯和運行這些過濾器的框架,過濾器之間不直接通信,而是通過每個請求特有的RequestContext共享狀態,
Spring Cloud Gateway
- SpringCloud Gateway 是Spring Cloud 生態系統中的網關,底層使用了高性能的通信框架Netty,其目的就是為微服務架構提供一種簡單有效的統一的 API 路由管理方式,替代 Zuul 實作微服務全家桶技術堆疊,
- Spring Cloud Gateway 不僅提供統一的路由方式,并且基于 Filter 鏈的方式提供了網關基本的功能,例如:安全、監控/指標、集成熔斷和限流,
侯門一入深似海 從此蕭郎是路人
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/541257.html
標籤:其他
上一篇:各個作業系統的除錯方法
