一 功能描述
1.简介
移动网关服务(Mobile Gateway Service,MGS)是移动开发平台(mPaaS)提供的连接移动客户端与服务端的组件产品。该组件简化了移动端与服务端的数据协议和通讯协议,能够显著提升开发效率和网络通讯效率。
2.功能特点
移动网关是连接移动客户端跟服务端的桥梁,移动客户端通过网关来访问后台服务接口。移动网关能够:
- 自动生成客户端的 RPC 调用代码,用户不需要关心网络通信、协议以及使用的数据格式。
- 将服务端返回的数据自动反解生成 Objective-C 对象,无需额外编码。
- 提供数据压缩、缓存、批量调用等增强服务。
- 统一进行异常处理,如弹出对话框、Toast 提示框等。
- 支持 RPC 拦截器,实现定制化的请求与处理。
- 实行统一的安全加密机制和防篡改的请求签名验证机制。
- 限流管控,保护后台服务器。
3.价值优势
移动网关服务的优势在于:
- 简单配置即可适配多种终端,连接异构的后端服务。
- 自动生成移动端 SDK,实现前后端分离,提升开发效率。
- 支持服务注册、发现与管控,实现服务聚合与集成,降低管理成本和安全风险。
- 提供优化后的数据协议与通讯协议,提高网络通讯质量和效率。
二 产品架构
1.MGS架构
1.1.业务流量
参考上图黄色的实线,首先APP的请求会经过一个负载均衡设备,这个负载均衡设备可能是一个F5,或者ALB、SLB等软负载产品,经过负载均衡之后会把请求转发到mpaasgw的应用,mpaasgw再根据这个API配置的后端协议类型,通过对应的协议转发到对应的后端的业务服务器。
1.2.服务发现
参考上图蓝色虚线,mpaasgw和后端的业务服务器根据环境部署的不同注册中心,选择使用不同的协议来做服务发现,例如当前环境使用SOFA-Registry作为注册中心,那么对应的请求协议为TR;如果当前环境使用的是zookeeper作为服务注册中心,那么请求的协议就是dubbo类型。
1.3.管控流量
参考上图灰色的实线,mAppCenter就是我们平时客户端同学经常使用的mPaaS控制台,我们在mAppCenter页面配置接口,后相关的接口信息经过nginx进程路由到mpaasgw。可以看到mpaasgw自身也依赖一些其他组件,包括数据库、监控和动态配置,其中:数据库主要是负责存储网关的各类配置数据例如API分组的信息等,在阿里云底座下使用的是RDS,在AntStack底座下使用的是OceanBase;监控主要是针对网关的一些日志打印来实现一些API请求的在线监控,错误数监控,耗时情况等等;动态配置这块主要是用于动态的调整一些运行时配置,例如日志的打印级别等等,根据实际是否启用中间件可以分别选用SOFA-DRM或者Zookeeper。
2.MGS网络架构 – AntStack底座
2.1.名词解释
- DMZ区:因为银行内部一般都不可以直接链接外网,故在银行的内网前面,会有一个叫做DMZ区的地方,这个地方可以访问外网。
- 行方应用区:银行内网环境,无法直接访问外网。
2.2.业务流量
参考上图蓝色实线,APP的请求经过DNS域名解析,转发到银行的DMZ区,进行证书的卸载,使得阿里云部署的spanner可以直接拿到HTTP的请求信息,后经过mPaaS应用区,请求信息会根据实际情况进行处理,如是银行自己的业务请求,则转发到行方应用区,如是mPaaS的框架请求,则转发给mPaaS的内部组件进行处理。
2.3.管控流量
参考上图mPaaS的应用区里面的灰色实线,由于应用都是部署在内网,所以管控流量的请求走HTTP也就够了,当我们访问mAppCenter的时候,走的是80端口,这个端口是写死的,不支持指定别的端口。还有一点需要知晓的是请求从mAppCenter到mpaasgw的时候,存在端口80转8081的情况。
3.MGS网络架构 – 阿里云底座
3.1.名词解释
- 中枢VPC:简单的理解为阿里云的一个VPC集群就好。
3.2.业务流量
参考上图蓝色实线,APP的请求经过DNS域名解析,走到阿里云的外网SLB,后到mpaasgw,应用自行甄别请求是否是框架请求,如是则走DUBBP/TR协议转发到内部组件,如不是则转发至后端的业务服务器,用户自行处理。这里值得关注的是:由于mPaaS部署在阿里云的VPC下面,无法直接访问银行的后端业务,所以从中枢VPC到银行后端业务这一段一般是走高速通道,来打通访问。