網(wǎng)關拓撲結構與功能設計歸納,你學會了嗎?
引言
本文就網(wǎng)關拓撲結構和常見功能與設計點歸納整理。
一、網(wǎng)絡拓撲與流量走向
1.網(wǎng)絡拓撲架構
下面是一個比較通用的南北流量網(wǎng)關部署架構,各個層次如下:
- 終端服務層:公司提供的各種設備、APP等
- 四層負載均衡集群:SLB/LVS等
- 七層負載均衡集群:Nginx等,在這一層可以植入安全插件WAF等
- 網(wǎng)關層:負責終端與內(nèi)部服務通信協(xié)議轉(zhuǎn)換、通知推送等
- 后端服務:業(yè)務微服務應用
2.流量走向
從北向南
- 終端通過HTTP/TPC/WebSocket等協(xié)議發(fā)送請求,網(wǎng)關接受請求解析數(shù)據(jù)包
- 解析數(shù)據(jù)包通常會使用秘鑰或者秘鑰池
- 解密后組裝數(shù)據(jù)格式抽取映射標識(指令碼或者action)
- 根據(jù)業(yè)務配置的映射關系通過標識查詢對應的后端服務接口與協(xié)議
- 向后端微服務發(fā)起調(diào)用
從南到北
- 業(yè)務處理完邏輯后向網(wǎng)關發(fā)起回調(diào)
- 網(wǎng)關先查找該請求的長連接在哪臺網(wǎng)關機器上
- 找到與終端的長連接將回調(diào)的內(nèi)容完成推送
二、功能點歸納
下面羅列下網(wǎng)關常見功能點:
1.協(xié)議轉(zhuǎn)換
- 終端HTTP1.1、HTTP/2與后端服務HTTP、RPC、MQ等協(xié)議轉(zhuǎn)換
- 終端WebSocket與后端服務HTTP、RPC、MQ等協(xié)議轉(zhuǎn)換
- 終端TCP與后端服務HTTP、RPC、MQ等協(xié)議轉(zhuǎn)換
- 終端MQTT與后端服務HTTP、RPC、MQ等協(xié)議轉(zhuǎn)換
2.訪問控制
- 用戶身份認證
- 風控風險驗證
- 簽名合法驗證
- 黑白名單管理
3.流量控制
- 全局流控對網(wǎng)關訪問的總量控制
- 單機流控根據(jù)APP訪問API的權重控制
- 多種流控維度API地域、API商戶等
- 斷路器熔斷慢調(diào)用服務
4.監(jiān)控告警
- 流量監(jiān)控
- 日志采集
- 實時告警
5.網(wǎng)關管理
- 服務接口配置
- 負載均衡策略
- 秘鑰生成策略
6.性能相關
- 緩存的使用 將頻繁請求的數(shù)據(jù)進行緩存提高響應時間
- 性能分析日志
7.流量路由
- 灰度&藍綠發(fā)布
- A/B測試&測試場
鏈路標記路由 頭部打標透傳以及節(jié)點選擇
三、設計點歸納
秘鑰設計
- 靜態(tài)密鑰 固定密鑰串
- 動態(tài)密鑰 設置過期時間,過期后重新獲取密鑰
- 密鑰池化 將眾多密鑰組成密鑰池,對終端的數(shù)據(jù)包進行解密
插件設計
- 熱插拔
- 易擴展
推送映射
后端服務通過網(wǎng)關向終端推送消息時,需要知道終端與網(wǎng)關哪臺機器建立的長連接,通常兩種方向:
- 網(wǎng)關負責映射
1.后端服務不需要關心具體哪臺網(wǎng)關節(jié)點IP,由網(wǎng)關建立終端標識與網(wǎng)關長連接IP映射,比如 userId=1.2.3.4存儲在Redis等
2.后端服務推送請求時,網(wǎng)關根據(jù)標識(例如:userId)找到終端與網(wǎng)關節(jié)點建立的長連接完成推送
后端服務負責
1.網(wǎng)關調(diào)用后端服務時將本節(jié)點IP透傳給后端服務
2.后端服務向網(wǎng)關發(fā)起請求時只將請求發(fā)送到該網(wǎng)關節(jié)點IP
2.1 例子:可以通過RocketMQ Tag的功能實現(xiàn),后端服務發(fā)送消息將網(wǎng)關IP設置為主題的tag,網(wǎng)關使用集群消費模式,每個網(wǎng)關節(jié)點使用不同的消費組訂閱該tag(自身IP為tag)
2.2 例子:通過RPC通信框架節(jié)點選擇回調(diào)時選擇透傳的網(wǎng)關節(jié)點IP






































