写点什么

一站式入口服务:爱奇艺微服务平台 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:003585

评论

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

区块链电子证照应用平台,区块链电子证照平台建设方案

13530558032

2020-我的技术之路:创业公司中的研发效能与技术赋能

王下邀月熊

大前端 后端 2020年总结

一文读懂区块链产业最新发展趋势

CECBC

大数据

电力行业区块链技术应用和产业布局

CECBC

区块链

工作日志-2-22

技术骨干

少儿学编程系列---如何使用turtle画风车

cloudcoder

Git 教程--git stash命令

生之欢愉,时间同行

git 程序员 git stash

常用的Date与LocalDate转换工具

废材姑娘

Java

全新角度剖析--iOS面试

(干货)玩转写作平台-优质文章推荐五大爆点!

InfoQ写作社区官方

InfoQ 玩转写作平台 上线规则

区块链药品溯源平台-区块链医药追踪溯源

13530558032

青帮大佬杜月笙的另一面及其后代现状

wbliu85

基于matlab的控制系统与仿真1-传递函数图像的绘制

AXYZdong

matlab 2月春节不断更

LeetCode题解:213. 打家劫舍 II,动态规划(缓存偷盗状态),JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

Spark Shuffle 内部机制(二)

hanke

大数据 spark 开源

翻译:《实用的Python编程》02_03_Formatting

codists

Python 人工智能 后端 数据结构与算法 格式化

程序员成长第十一篇:弄懂需求

石云升

需求 28天写作 2月春节不断更

Spring常用注解

ES_her0

28天写作

Eclipse快捷键大全

lnngle

Java eclipse 快捷键

Git教程--git diff命令

生之欢愉,时间同行

git 程序员

玩转写作平台-公众号文章出圈福利~

InfoQ写作社区官方

InfoQ 玩转写作平台 出圈攻略

记一次独角兽公司双系统迁移合并解决方案

架构

第五章学习总结

Kalman

产品经理 产品经理训练营

Python基础之:数字字符串和列表

程序那些事

Python 字符串 Python基础 Python3 程序那些事

如何拿到大厂offer——C++后台学习路线

赖猫

c++ Linux 面试 后台开发 后端

(干货)玩转写作平台 - 优质作者推荐几大法则!!

InfoQ写作社区官方

InfoQ 玩转写作平台 上线规则

窥探未来不是梦,python数据分析轻松实现

小Q

Python 学习 编程 面试 数据分析

音频社交的变声,应用了哪些算法?

拍乐云Pano

RTC 语音聊天室 clubhouse 音频社交 变声

如何在2021金三银四拿到35K,我肝了这份10W字Java面试手册送给大家

程序员 架构 面试

什么是供应链,供应链有哪些核心指标

学志

技术 指标体系 供应链 电商平台

第五章作业

Kalman

产品经理 产品经理训练营

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