网关是微服务的入口,所以有很多事情可以在网关做,网关也是所有流量的总入口。是最重要的基础服务。目前总结一下,我们的网关已经实现的功能和还没有实现的功能。
已经实现的功能
- 网关健康检查逻辑
- 根据版本号限制访问接口逻辑(接口最低支持的app版本号)
- 内部接口访问保护逻辑(接口仅仅只暴露给内部服务)
- 接口权限验证逻辑(接口仅仅只暴露给某些拥有身份的用户)
- 参数完全透传,不做任何解析(针对第三方格式不统一的接口使用)
- 维护功能逻辑(针对接口开启维护页面)
- 解码客户端参数逻辑
- 唯一请求traceid的接收或者生成
- 修改请求参数逻辑
- 用户唯一凭证解析用户id和身份逻辑(通过用户的ticket和确定算法,得到用户的基础信息)
- 重复请求拒绝逻辑
- 对外路径和对内路径转换映射逻辑(外部路径:内部路径 == N:1)
- 记录用户请求真实ip逻辑
- 访问日志记录逻辑
- 内部接口审计记录逻辑
- 前端跨域CORS的设置逻辑
- 灰度流量请求分发逻辑
- 接口性能监控和指标度量采集逻辑
未实现的功能
- 接口和服务限流逻辑
- 用户和设备禁用逻辑
- 接口数据缓存逻辑
- SSL认证逻辑
实现大体方法
- 网关通过注册中心获取微服务实例
- 微服务注册到注册中心,并且通过定时push元数据到注册中心
- 网关定时从注册中心轮训的pull元数据,并且记录在内存中
- 针对不同的请求,根据所配置的元数据来进行不同的策略