背景:spring
公司内部有不少服务,如消费信贷,帐户服务,支付服务等,这些服务由公司不一样部门或团队维护。若是外部机构想要调用这些接口,须要与不一样团队协商接口格式,加解密格式,签名验签格式等调用方式。若是公司有一个统一对外提供服务的网关,统一调用方式,服务调用方和提供方都按照这个标准进行接口调用和开发,就能够避免技术细节的重复讨论,能够专一于业务层面。json
概述api
统一网关基于spring cloud gateway开发,提供对外访问内部服务的统一入口,调用方经过一系列断言和过滤器,路由到不一样的内部应用系统。流程图以下:
异步
功能:post
- 参数校验:调用方将json格式的请求参数放入request body中,经过http post方式访问统一网关,请求参数须要遵循统一网关的标准,即包含机构号,银行号,api名称,api版本,受权token,防重放nounce,流水号,加密后的业务数据,验签数据等字段。若是有未传入的字段,则认为是非法请求。
- 监控:通过参数校验后,网关把请求异步放入mq,以便对交易进行统计
- 防重放:一笔交易通过一系列过滤器能够被转发到后台系统,交易被拦截后被重复发送,若是没有防重放功能,改交易始终会被转发到后台,对业务系统形成损害。所以防重放可避免相同的请求重复发送。
- token校验:token由机构申请,是机构身份合法性的判断来源,有效期为两个小时,须要定时更新。若是token无效,则认为是该机构非法
- 黑白名单:判断容许和禁止访问的IP
- 权限校验:判断该笔交易的机构是否具备访问这个银行的api的权限
- 加解密:交易的业务数据在发送前进行加密,统一网关解密验签后发送至后台系统,收到后台系统响应后再签名加密返回至调用方
- 签名验签:加解密是为了防止数据在传输过程当中被发现,签名验签是为了防止发现后数据被篡改
网关相关的时间:加密
- 交易的时间戳:由客户端本身定义
- 请求时间:进入gateway的时间
- 响应时间:gateway响应至客户端的时间
另:spa
- gateway发日后台的时间
- gateway接收后台响应的时间
- 告警:进入flink的时间