引言
本文就网关拓扑结构和常见功能与设计点归纳整理。
一、网络拓扑与流量走向
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