- 《架構世界》2020微服務刊:微服務分布式事務實戰
- 普元信息
- 1038字
- 2020-09-03 11:23:34
.網關數據管理
實現一個適合自已的網關,數據管理我們需要考慮如下這些方面
.首先,我們要考慮一下,我們需要管理些什么數據。
本身對數據管理的管理是很弱的。它沒有提供數據的持久化方案,它所有的數據都來自初始化,來自它的配置文件( . )。它本身雖然也對外提供了一些管理接口( )能力不夠,但能力不夠,且這些修改都是暫時的,網關一停,數據就消失了。這就要求我們要用一套更完善的方案,把網關的這些數據管理起來,不能讓它只能寫在配置文件中,而要支持持久化,支持動態變更。再有就是我們對各微服務的治理數據。網關只用來做路由轉發,那就太浪費了,統一認證,統一鑒權,訪問日志記錄,應用訪問統計,黑白名單過濾, 訂閱管理,流量限制,甚至數據格式轉換,網絡協議轉換,都可以在網關中來做。而所有的這些能力,無不需要數據的支持。因此,這些服務的治理配置,也是網關需要管理的數據。
.數據有了,我們還得考慮怎么把它保存起來,不能網關一重啟,所有數據就沒了。
.還得再考慮一下數據的讀取。網關對性能的要求是很高的,每次對過關的數據進行治理,都需要去讀取這些配置信息。如果配置信息讀取太消耗資源,無疑對網關是不利的。所以,我們還得考慮數據如何緩存,以提高數據的讀取性能。
.單個網關,可以處理的請求量是有上限的。為了應對大的流量,我們可能會需要對網關做水平擴容。當多個網關實例共存時,如何保障對網關的修改,能快速同步到每個網關實例呢?數據變更通知也得考慮。
.最多,我們還得考慮一下方案的擴展,數據存儲能不能改個地方,通知能不能換種方式?
綜合考慮了這些方面之后,我們的網關的架構如下:

-
如圖,以上就是我們網關的整體設計。方案設計要點如下:
.網關對外提供治理數據管理接口,微服務治理平臺可通過這些接口,將治理配置推送到網關
.網關通過治理數據統一存儲接口,將治理配置數據保持至治理數據持久存儲(這里我們默認為 )
. 通過發布訂閱能力,將數據的變更通知到各網關實例
.各網關實例收到通知后,將數據從持久存儲同步至內部高速緩存
.內部緩存在網關啟動時,會自動從持久存儲加載對應配置進入緩存. 同時它也支持清空,以及按需加載
.外部業務請求經過網關時,對數據執行鑒權,處理轉換,以及灰度策略時,所需要的治理配置,都從內部緩存中獲取,以提升性能
.方案中,外部持久存儲(默認用的 ,可以換成 ,文件, 等),以及數據變更通知(默認使用的是 的發布訂閱,可以換成 通知,消息隊列,定時掃描等),都是可以通過擴展更換的