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