作者 | 阿里文娱技术
责编 | 胡巍巍
前言
云智是阿里影业旗下的影院数字化经营管理开放平台,主要负责影院管理及影票卖品的售 卖。
本文以云智开放平台为例,将为您揭开 B 端垂类电影行业开放系统的高性能 API 网关、高 可靠消息服务、高安全性数据服务等技术内幕。
云智开放平台生态
开放平台架构大图
1.开放平台技术大图
开放平台技术大图
开放平台的组成包括:泛 ISV 的调用方、综管门户、网关和业务系统,业务系统通过网关 开放业务给到 ISV 调用方,网关与业务系统使用泛化调用,综管主要包括对 API 生命周期管理 等功能。
2.开放平台部署架构图
部署架构图
部署架构包括:网关集群、综管平台集群、云智各个业务集群,对于开放平台,核心关注 网关和综管集群,为了网关的高性能,在云数据存储这块引入分布式缓存。
如何搭建高性能的 API 网关
1.网关总体技术架构图
API 网关技术架构图
架构图中的 5 层是网关真正的应用层功能,每一层都解决一个核心问题:
1)协议层:解决客户端/调用方如何来连接网关的问题,主要做的事情,按照某种协议去 监听,数据协议是怎么样的,最终转换成网关内部私有协议;
2)控制层:一个请求过来之后,网关如何认证这个请求是合法的,是经过认证的请求,保 证每个请求都是安全的请求;
3)调度层:针对一些异常处理,流程路由的处理,这里做的是要怎么样去处理的问题;
4)服务编排:API 和 Server 之间的映射和编排,复杂的场景都是在这层进行处理的;
5)调用执行:拿到这个请求之后,最终是调用外部的一个服务,是如何调用的,在这层实 现。
2.网关的缓存模式
1)网关缓存模式:
网关缓存示意图
2)流程说明:a)网关会对缓存进行分级存储,以保证最快的访问速度,数据访问的时候,访问顺序依次
是本地缓存->分布式缓存->数据库;
b)在保证数据一致性方面,由于缓存的是元数据,元数据的特性决定了其变动少,时效性 要求低的特性,因此,网关采取了分布式缓存主动失效,本地缓存被动失效的策略,已减少代码复 杂度。
3.多维度的流量控制
流量控制:既控制 API 在单位时间内允许被通过调用的次数,简称流控。
1)流量控制的原理
流量控制流程
2)工作流程 单机阀值策略:总阀值/机器数 * 80%;
全局流控策略:低于单机阀值:走内存计数;高于单机阀值:走分布式缓存计数。
3)流控类型
流量控制类型
目前云智开放平台提供了以下流控方式,(1)API 的滑动窗口时间内的全局流量控制;(2) API 支持定制 APPKEY 进行流量控制;(3)基于 APP 维度的流控,对 APPKEY 访问平台 API 的流量进行控制。
高可靠的消息服务
1.总体架构
消息服务架构图
2.消息模式
1)网关的消息通知是通过异步的 HTTP 回调+消费方的主动确认两种方式来确保消息的可 达,异步的 http 回调可以理解为消息的推模式,而消费方主动确认则可以理解为消息的拉模式;
2)目前消息模式的使用场景主要是在异业会员之间信息拉通,例如会员消息注册,会员信 息变更,积分变更等,均会使用消息来进行内部与外部系统信息的同步。
3.如何保证消息不丢失?
1)利用消息中间件本身的重试机制,确保网关能至少正确消费一次消息(at lease once);
2)接收消息后,持久化到磁盘,留待后续追溯与重试;
3)根据消息的订阅关系投递到对应的订阅者,成功则更新消息状态,失败则留待定时任务 扫描;
4)对投递失败的消息,进行间隔 10,20,40 分钟的重试,三次重试均失败后,则标记为失败,不再主动投递;
5)消息消费方根据业务需要定期主动发起失败消息的查询以防止消息的遗漏。
高安全性的数据服务
1.API 授权方式
云智开放平台采用 OAuth2.0 作为授权协议,授权流程可以简单归纳为:
1)获取临时令牌 code;
2)用临时令牌 code 换取长时令牌(refreshToken)以及访问令牌(accessToken);3)访问令牌过期后用长时令牌(refreshToken)刷新访问令牌(accessToken)。授权及使用授权时序图如下:
API 授权时序图
2.API 访问控制
用于 API 访问权限控制,可限制 API 只对部分商户开放,或者不允许 APPKEY 跨商户、 跨渠道等访问。
在云智开放平台中,访问控制主要由:权限组和访问控制水平鉴权配合组成,开放网关增 加了访问控制水平鉴权的功能,达到控制商户访问隔离、数据隔离。访问控制原理如下:
API 访问控制图
对 APPKEY 进行访问控制的设置,配置访问策略,访问策略可以配置为 API 接口的请求参 数,开放平台网关会根据访问策略判断用户的请求是否合法,不合法则抛出错误。
配置示例:
{"商户":["yunzhi"],"影院":["test1