引言

本文就网关拓扑结构和常见功能与设计点归纳整理。

一、网络拓扑与流量走向

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