免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

电影垂直行业的云智开放平台如何炼成?

  • 2020-03-15
  • 本文字数:2545 字

    阅读完需:约 8 分钟

电影垂直行业的云智开放平台如何炼成?

一、前言

云智是阿里影业旗下的影院数字化经营管理开放平台,主要负责影院管理及影票卖品的售卖。


本文以云智开放平台为例,将为您揭开 B 端垂类电影行业开放系统的 高性能 API 网关、高可靠消息服务、高安全性数据服务 等技术内幕。



(图 1.1 云智开放平台生态)

二、开放平台架构大图

1.开放平台技术大图



(图 2.1 开放平台技术大图)


开放平台的组成包括:泛 ISV 的调用方、综管门户、网关和业务系统,业务系统通过网关开放业务给到 ISV 调用方,网关与业务系统使用泛化调用,综管主要包括对 API 生命周期管理等功能。


2.开放平台部署架构图



(图 2.2 部署架构图)


部署架构包括:网关集群、综管平台集群、云智各个业务集群,对于开放平台,核心关注网关和综管集群,为了网关的高性能,在云数据存储这块引入分布式缓存。

三、如何搭建高性能的 API 网关

1.网关总体技术架构图



(图 3.1 API 网关技术架构图)


架构图中的 5 层是网关真正的应用层功能,每一层都解决一个核心问题:


1)协议层:解决客户端/调用方如何来连接网关的问题,主要做的事情,按照某种协议去监听,数据协议是怎么样的,最终转换成网关内部私有协议;


2)控制层:一个请求过来之后,网关如何认证这个请求是合法的,是经过认证的请求,保证每个请求都是安全的请求;


3)调度层:针对一些异常处理,流程路由的处理,这里做的是要怎么样去处理的问题;


4)服务编排:API 和 Server 之间的映射和编排,复杂的场景都是在这层进行处理的;


5)调用执行:拿到这个请求之后,最终是调用外部的一个服务,是如何调用的,在这层实现。


2.网关的缓存模式


1)网关缓存模式:



(图 3.2 网关缓存示意图)


2)流程说明:


a)网关会对缓存进行分级存储,以保证最快的访问速度,数据访问的时候,访问顺序依次是本地缓存->分布式缓存->数据库;


b)在保证数据一致性方面,由于缓存的是元数据,元数据的特性决定了其变动少,时效性要求低的特性,因此,网关采取了分布式缓存主动失效,本地缓存被动失效的策略,已减少代码复杂度。


3.多维度的流量控制


流量控制:既控制 API 在单位时间内允许被通过调用的次数,简称流控。


1)流量控制的原理



(图 3.3 流量控制流程)


2)工作流程单机阀值策略:总阀值/机器数 * 80%;


全局流控策略:低于单机阀值:走内存计数;高于单机阀值:走分布式缓存计数。


3)流控类型



(图 3.4 流量控制类型)


目前云智开放平台提供了以下流控方式,(1)API 的滑动窗口时间内的全局流量控制;(2) API 支持定制 APPKEY 进行流量控制;(3)基于 APP 维度的流控,对 APPKEY 访问平台 API 的流量进行控制。

四、高可靠的消息服务

1.总体架构



(图 4.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)。


授权及使用授权时序图如下:



(图 5.1 API 授权时序图)


2.API 访问控制


用于 API 访问权限控制,可限制 API 只对部分商户开放,或者不允许 APPKEY 跨商户、跨渠道等访问。


在云智开放平台中,访问控制主要由:权限组和访问控制水平鉴权配合组成,开放网关增加了访问控制水平鉴权的功能,达到控制商户访问隔离、数据隔离。访问控制原理如下:



(图 5.2 API 访问控制图)


对 APPKEY 进行访问控制的设置,配置访问策略,访问策略可以配置为 API 接口的请求参数,开放平台网关会根据访问策略判断用户的请求是否合法,不合法则抛出错误。


配置示例:


{"商户":["yunzhi"],"影院":["test1","test2"],"渠道":[H5]}
复制代码


3.API 返回数据控制


1)对于分配的每个 APPKEY,网关都会给其定义一个相应的数据访问等级,目前一共存在从 L1~L4 四个级别,安全等级从低到高递增;


2)对于需要严格管控的高危接口,在配置的时候,需要明确每一个字段的定义,从低到高同样分别为 L1~L4;


3)通过插件机制对每个出参进行字段匹配的过滤,不符合权限等级的出参将被直接摘除。

六、可扩展、可维护

1.可维护性-API 的生命周期



(图 6.1 API 生命周期管理图)


2.可扩展性-API 的插件机制


网关的协议监听与解析层、API 逻辑处理层、调用协议与执行层,都作为组件,可插拔的集成到网关内核中。


1)插件原理-类加载



(图 6.2 插件机制类加载图)


云智开放平台新增的,有电影行业特色的插件包括:API 访问权限控制-水平鉴权、支持云效环境项目标。

七、总结

云智开放平台是 https 通讯协议,多级缓存,消息中间件等技术的融合,专门为高性能数据访问与数据安全性把控而生的系统。达到了极速的访问与全方位的数据安全管控,回顾从系统的选型到诞生的整个过程,网关的演化也经历了下面三个阶段:


  • 具备基础核心能力,基础核心 = 服务访问 + 稳定运行;

  • 具备平台化能力,平台化 = 高性能 + 数据安全 + API 规范与审核;

  • 垂类平台特色能力,垂类化 = 插件化定制。


在这个过程中,沉淀核心技术,深入了解和落地这些技术细节,在每一次的演进中,都思考是否可以在现有技术上面,再进一步地优化,让网关可以不但高效安全,并且易于维护,虽然过程困难重重,但是只要不畏艰难,必定可以攀上高峰,在这个过程中,团队的技术思想也在不断的变化,系统也炼出了垂类平台的特色。


作者介绍


阿里文娱高级开发工程师 念贤、阿里文娱高级开发工程师 宵征


2020-03-15 10:001672

评论

发布
暂无评论
发现更多内容

【高危】WPS Office 远程代码执行漏洞(WPSSRC-2023-0701绕过) (MPS-qjky-hw9x)

墨菲安全

网络安全 漏洞 WPS Office

服务质量不能掉链子,中小企业采购云服务器为何更要选择大厂?

YG科技

领域驱动设计(DDD): 三层架构到DDD架构演化

付威

领域驱动设计

精进语言模型:探索LLM Training微调与奖励模型技术的新途径

汀丶人工智能

自然语言处理 强化学习 深度强化学习 LLM模型

利用 XGBoost 进行时间序列预测

3D建模设计

机器学习

【高危】致远A8前台上传解压漏洞 (MPS-6tdh-8qpu)

墨菲安全

网络安全 漏洞 致远

对话无服务器专家 Luca Mezzalira:你真的为 Serverless × AI 做好准备了吗?

亚马逊云科技 (Amazon Web Services)

Java 人工智能

第二期YCA认证培训圆满结束!

YashanDB

如何使用图形数据库构建实时推荐引擎

3D建模设计

数据分析 数据工程

CloudEon入选开源中国最有价值开源项目(GVP)

CloudEon开源

Presto 设计与实现(七):Event

冰心的小屋

数据湖 Event presto presto 设计与实现

机器学习会取代数据科学吗?

3D建模设计

机器学习

低代码开发平台能开发什么类型的系统和软件?

优秀

低代码开发平台

C++函数重载

芯动大师

采购云服务器安全与成本不可兼得?云耀云服务器L或许可以了解一下

轶天下事

金融场景的“四边形战士”,容联云赤兔大模型向行业飞驰

脑极体

金融 AI大模型

谁能代表中国软件的未来

B Impact

当高并发来袭:StarRocks Query Cache 一招搞定!

StarRocks

数据库 后端 高并发 StarRocks 湖仓一体

企业新业务拓展,云耀云服务器L实例能否助其进行快速开发

YG科技

使用大型语言模型进行自主视觉信息搜索

3D建模设计

LLM 大语言模型

制造业为什么要数字化?

优秀

制造业数字化

YashanDB获强制性国家标准GB 18030-2022最高级别认证

YashanDB

使用 OpenAI GPT 模型的最佳实践

3D建模设计

人工智能 openai GPT

火山引擎云调度GTM“同城容灾”与“异地多活”实践

火山引擎边缘云

容灾 容灾备份 容灾多活

AIGC如何借AI Agent落地?TARS-RPA-Agent破解RPA与LLM融合难题

王吉伟频道

RPA AIGC autogpt AI大语言模型 AI Agent

中小企业建站,采购云服务器上需注意什么?

YG科技

【严重】Smartbi windowUnloading 限制绕过导致远程代码执行 (MPS-e2z8-wdi6)

墨菲安全

网络安全 漏洞

连接未来 驱动创新|腾讯云 CODING DevOps 主题沙龙诚邀您的参与

CODING DevOps

ARTS 打卡第 13 天

自由

ARTS 打卡计划

对 JDK8 新出的Optional类的探索与思考

emanjusaka

Java jdk 后端

初创公司预算有限,在云服务器选择上应该如何选择?

YG科技

电影垂直行业的云智开放平台如何炼成?_文化 & 方法_阿里巴巴文娱技术_InfoQ精选文章