10 月 23 - 25 日,QCon 上海站即将召开,现在大会已开始正式报名,可以享受 8 折优惠 了解详情
写点什么

一站式入口服务:爱奇艺微服务平台 API 网关实战

  • 2019-12-07
  • 本文字数:2358 字

    阅读完需:约 8 分钟

一站式入口服务:爱奇艺微服务平台 API 网关实战

写在前面

在互联网业务微服务化改造过程中,按照以往的服务治理体系,各服务需要单独实现限流、鉴权、监控、日志等通用功能,构建入口时资源申请、工单批复、多系统配置等一系列流程对精力消耗极大,学习成本较高,开发者也很难通过全局视角对各服务入口统一管理。爱奇艺微服务平台应运而生,通过组件化和服务化,助力业务解耦,不同微服务独立部署、独立扩展,保证各服务模块边界稳固,帮助业务实现微服务化改造。

作为微服务平台最重要的边界组件,爱奇艺 API 网关诞生于 2016 年底,底层基于开源项目 Kong 实现,旨在为开发者提供稳定、便捷、高性能、可扩展的服务入口功能,一站式管理 API 配置和生命周期,对微服务治理具有重要意义。

关于爱奇艺微服务平台 API 网关

架构总览

类似 Nginx, API 网关通过域名、请求方法、路径匹配规则等定义一个 API,API 转发目标为开发者配置的一个唯一服务。Kong 基于 Nginx 实现,成熟稳定且性能可靠,并拥有灵活强大的插件机制,提供了诸如访问控制、限流、监控等功能。在此基础上爱奇艺技术团队结合内部系统开发了私有插件,以适配内部特殊需求。



API 网关采用靠近客户端的分布式部署方案,在各地区部署独立集群并就近解析;单个 API 网关集群通过负载均衡服务暴露。API 配置需要在多个集群内维护,因此爱奇艺技术团队开发了 API 网关控制器,统一负责集群管理、域名创建、DNS 绑定等操作,整体架构如下图所示。


基础功能

在 API 网关控制流架构设计中,微服务平台 API 网关模块通过内部系统集成及服务化实现,为开发者提供全部所需入口配置及管理功能,且无需代码侵入、工单申请等人工干涉,实现 API 创建即可用。API 网关支持认证、限流、访问控制等通用功能,结构如下图所示。


服务解析

请求进入 API 网关时,Kong 通过 DNS 向 Service Registry 查询服务实例列表,作为请求转发的 upstream。由于 DNS 缓存机制,需要在实例变更时及时清理缓存,确保请求访问至有效的实例。尤其是在私有容器平台 QAE(iQIYIAPP Engine)环境中,访问地址随实例变更而变化,为尽可能保证服务解析成功,系统之间需要完成一些联动。以 QAE 缩减应用副本数操作为例,过程大致如下图所示。


定向路由

API 网关以地域(外网服务则为地域+运营商)为依据配置 DNS 就近解析规则,尽可能靠近客户端;但在现实中,部分 API 考虑服务小运营商网络、靠近服务端等客观条件,或在某些时间段希望对部分地区的服务进行网络隔离。针对此类自定义路由的需求,API 网关为业务域名生成了虚拟网关域名(uuid.domain),如果开发者希望根据运营商配置目标集群,在将业务域名改绑至虚拟域名后即可实现定向路由,如下图所示。



此外,开发者可通过微服务平台配置服务路由解析规则,进一步控制流量至服务实例间路由关系,满足诸如蓝绿部署、缓存更新延迟低容忍等场景下,控制请求目标服务实例的需要。

容灾

作为流量入口,API 网关必须具备足够强大的容灾能力以应对可能的网络故障。除每个 Kong 节点自身及相关依赖的高可用配置之外,API 网关还实现了不同地域、运营商、数据中心、集群之间的多级互备,一旦出现网络故障,可以在最短时间内将流量切换到可用入口。此外,API 开发者认为某集群流量处理异常时,也可以利用虚拟网关域名自助切走流量。


另外,API 网关集群采用蓝绿部署策略完成功能升级等常规运维操作,接入流量前充分实现集群预热,同时提供版本回退、故障现场保留能力。将运维操作带给开发者的影响降至最低。

API 性能追踪

PI 网关提供了监控、报警、日志、调用分析等功能,可帮助开发者完成问题排查。通过接入日志系统,方便开发者筛查日志,以下图排查 499 问题为例,通过筛选发现,短时间内该接口被某外网 IP 频繁访问且请求时间较短,鉴于 nginx 499 状态码表示客户端主动断开连接,判断为疑似外网攻击。



此外 API 网关在消息转发阶段进行了埋点并接入了调用分析系统,开发者可通过分析消息调用链,根据慢响应详情进一步分析问题。以下图为例,开发者排查慢请求过程中,通过调用链分析发现耗时较大处标记是网络延迟。在进一步查看客户、服务端区域后发现,该请求为跨机房调用,服务部署在单个机房导致了该请求时延较高,开发者以此为依据对服务部署进行了调整。



与爱奇艺号的故事

爱奇艺号作为爱奇艺开放平台和内容体系里最重要的载体,为自媒体、网络大电影、网剧、儿童、动漫、教育、文学、漫画、直播等多种内容创作者提供服务。


为适应快速变化的应用场景,爱奇艺号在架构设计时选择了微服务化,拆分出多种自媒体、基础信息等微服务。其中很多服务在认证、限流、追踪、防黑产等方便有着一致的需求,如果单独实现,将导致开发及运维成本大幅度的上升。


为帮助爱奇艺号顺利完成微服务化改造,减轻开发和运维负担,API 网关结合爱奇艺号实际需求,利用 Kong 的插件机制开发或改进了帐号认证、限流、黑产拦截、信息追踪等一系列功能。目前,爱奇艺号使用 API 网关管理着数百个 API,并以此为统一入口连接数十个服务。此外利用 API 网关和 QAE 容器平台的容灾特性,通过多数据中心服务互备,提升了服务整体的稳定性。


总结与展望

API 网关为开发者提供了稳定的入口服务,现已维护超过 4000 个 API,持续吸引新旧业务接入。API 网关当前平均单日 API 访问量超过 300 亿、峰值 QPS 近 100 万。通过充分发挥插件扩展能力,为开发者提供监控、日志、调用链分析等高级功能,有效降低了维护及排障成本。


未来 API 网关面向混合云环境,为开发者提供更加灵活、便捷、高效、稳定的入口服务。


本文转载自公众号爱奇艺技术产品团队(ID:iQIYI-TP)。


原文链接


https://mp.weixin.qq.com/s?__biz=MzI0MjczMjM2NA==&mid=2247485845&idx=1&sn=8ca94a01410d1fbf85cb1eaadca29c3e&chksm=e97695b6de011ca02c9f438ec5246faa06ed176526022308269a2e867743254bfab9572263e9&scene=27#wechat_redirect


2019-12-07 08:004247

评论

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

如何用度量数据驱动代码评审的改善

思码逸研发效能

数据分析 研发效能 科技 效能度量

大数据开发技术入门学习方法有哪些

小谷哥

CSDN Meetup 回顾 丨从数据湖到指标中台,提升数据分析 ROI

Kyligence

数据分析 指标中台

7月《中国数据库行业分析报告》发布!居安思危,安全先行

墨天轮

数据库 腾讯云 阿里云 国产数据库 数据库安全

6W+字记录实验全过程 | 探索Alluxio经济化数据存储策略

Alluxio

数据湖 数据膨胀 降本增效 Alluxio 大数据 开源

TMECH发表优必选运控技术最新进展:实现人形机器人高鲁棒性行走

优必选科技

不懂点儿统计学,《星球大战》白看了

图灵教育

统计学 贝叶斯定理

21条最佳实践,全面保障 GitHub 使用安全

SEAL安全

GitHub 安全

如何有效规避代码被“投毒”?

安势信息

许可证 代码安全 开源软件 安全合规检测 开源软件供应链

深圳web前端技术学习费用是多少?尚硅谷前端培训

小谷哥

国产操作系统生态建设,小程序技术来帮忙

Speedoooo

小程序 国产操作系统 小程序容器 桌面应用

openGauss内核分析:查询重写

华为云开发者联盟

数据库 后端 查询 SQL语言 openGauss内核

NFT链游戏系统开发元宇宙GameFi搭建

薇電13242772558

dapp NFT 元宇宙

李宏毅《机器学习》丨4. Deep Learning(深度学习)

AXYZdong

机器学习 7月月更

华为云:一切皆服务,共建全场景智慧金融

极客天地

架构实战营模块七作业

Geek_Q

业务出海,灵感乍现前要先「把手弄脏」

融云 RongCloud

纯css实现:如何做个完美的平行四边形

南极一块修炼千年的大冰块

7月月更

零基础如何学习大数据开发知识

小谷哥

尚硅谷SSM新版视频教程发布

小谷哥

ES6 类聊 JavaScript 设计模式之创建型模式

devpoint

JavaScript 设计模式 工厂模式 7月月更 创造性模式

单元测试,写起来到底有多痛?你会了吗

C++后台开发

网络编程 单元测试 后端开发 Linux服务器开发 C++开发

视频聊天源码——一对一直播系统源码

开源直播系统源码

软件开发 直播系统源码 开源源码

【字体反爬】猫X眼YingShi,我们又来欺负你了,用到了 OCR 识别技术

梦想橡皮擦

Python 爬虫 7月月更

洞见科技纪凯:隐私计算助力「全链路」金融客户经营

洞见科技

隐私计算

ModuleNotFoundError_No_module_named通俗的解释和方法

和牛

测试

如何学习好web前端开发技术知识

小谷哥

直播预告 | 7月22日《开源安全治理模型和工具》线上研讨会

安势信息

开源安全 SCA工具 开源软件供应链 SBOM SLSA

LP流动性质押挖矿系统开发详细程序

开发微hkkf5566

带你认识一下数仓的分区自动管理

华为云开发者联盟

数据库 后端 分区

商城异地多活架构设计

泋清

#架构训练营

一站式入口服务:爱奇艺微服务平台 API 网关实战_技术管理_弹性计算团队_InfoQ精选文章