官术网_书友最值得收藏!

2.網關數據管理

實現一個適合自已的網關,數據管理我們需要考慮如下這些方面

1.首先,我們要考慮一下,我們需要管理些什么數據。

SCG本身對數據管理的管理是很弱的。它沒有提供數據的持久化方案,它所有的數據都來自初始化,來自它的配置文件(application.yml)。它本身雖然也對外提供了一些管理接口(Actuator API)能力不夠,但能力不夠,且這些修改都是暫時的,網關一停,數據就消失了。這就要求我們要用一套更完善的方案,把網關的這些數據管理起來,不能讓它只能寫在配置文件中,而要支持持久化,支持動態變更。再有就是我們對各微服務的治理數據。網關只用來做路由轉發,那就太浪費了,統一認證,統一鑒權,訪問日志記錄,應用訪問統計,黑白名單過濾,API訂閱管理,流量限制,甚至數據格式轉換,網絡協議轉換,都可以在網關中來做。而所有的這些能力,無不需要數據的支持。因此,這些服務的治理配置,也是網關需要管理的數據。

2.數據有了,我們還得考慮怎么把它保存起來,不能網關一重啟,所有數據就沒了。

3.還得再考慮一下數據的讀取。網關對性能的要求是很高的,每次對過關的數據進行治理,都需要去讀取這些配置信息。如果配置信息讀取太消耗資源,無疑對網關是不利的。所以,我們還得考慮數據如何緩存,以提高數據的讀取性能。

4.單個網關,可以處理的請求量是有上限的。為了應對大的流量,我們可能會需要對網關做水平擴容。當多個網關實例共存時,如何保障對網關的修改,能快速同步到每個網關實例呢?數據變更通知也得考慮。

5.最多,我們還得考慮一下方案的擴展,數據存儲能不能改個地方,通知能不能換種方式?

綜合考慮了這些方面之后,我們的網關的架構如下:

gateway-arch

如圖,以上就是我們網關的整體設計。方案設計要點如下:

1.網關對外提供治理數據管理接口,微服務治理平臺可通過這些接口,將治理配置推送到網關

2.網關通過治理數據統一存儲接口,將治理配置數據保持至治理數據持久存儲(這里我們默認為Redis

3Redis通過發布訂閱能力,將數據的變更通知到各網關實例

4.各網關實例收到通知后,將數據從持久存儲同步至內部高速緩存

5.內部緩存在網關啟動時,會自動從持久存儲加載對應配置進入緩存. 同時它也支持清空,以及按需加載

6.外部業務請求經過網關時,對數據執行鑒權,處理轉換,以及灰度策略時,所需要的治理配置,都從內部緩存中獲取,以提升性能

7.方案中,外部持久存儲(默認用的Redis,可以換成Mysql,文件,Appolo等),以及數據變更通知(默認使用的是Redis的發布訂閱,可以換成Appolo通知,消息隊列,定時掃描等),都是可以通過擴展更換的

主站蜘蛛池模板: 宣城市| 启东市| 无为县| 伊春市| 太保市| 林州市| 商都县| 永顺县| 凤台县| 弥勒县| 建始县| 南宁市| 万年县| 崇阳县| 仙游县| 聂拉木县| 嵊州市| 剑川县| 雷州市| 龙里县| 团风县| 嘉兴市| 南陵县| 滨州市| 邹平县| 七台河市| 南和县| 凌海市| 阿拉尔市| 桂平市| 新化县| 荔浦县| 象州县| 柳河县| 长武县| 武城县| 招远市| 怀安县| 恭城| 丰宁| 沈阳市|