写点什么

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

评论

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

硬核!力扣官方首发了这套1568页LeetCode算法刷题笔记(彩页版)

Java你猿哥

面试 算法 LeetCode ssm

强渡大渡河!华为云GaussDB支撑华为MetaERP系统全面替换

YG科技

宝兰德应用服务器软件与华为云GaussDB完成兼容互认证

YG科技

Csdn上20W+阅读,这份“Java核心万字宝典”霸榜9天,太香了

做梦都在改BUG

Java

记一次618军演压测TPS上不去排查及优化 | 京东云技术团队

京东科技开发者

JVM 压测 调优 压测分析 企业号 6 月 PK 榜

如何在企业中培养平台工程文化?

SEAL安全

平台工程 平台工程文化

从BeyondCampus最佳实践,洞察高校零信任发展趋势

权说安全

开源赋能 普惠未来|元遨/CARSMOS诚邀您参与2023开放原子全球开源峰会

开放原子开源基金会

开源 CARSMOS 元遨

大语言模型的创意能力到底几何?探索从GPT-2到GPT-4的演进

Baihai IDP

人工智能 自然语言处理 大模型 白海科技 企业号 6 月 PK 榜

轻量灵动: 革新轻量级服务开发 | 京东云技术团队

京东科技开发者

jdk8 GraalVM jdk17 企业号 6 月 PK 榜

简单好用的便利贴工具:Sticky 激活版

真大的脸盆

Mac Mac 软件 便利贴工具 便利贴软件

国产自研数据库是更新换代首选

YG科技

你还在用 BeanUtils?试试 MapStruct,优雅的对象转换解决方案!

Java你猿哥

Java ssm map

自动化回归测试平台 AREX 前端架构演变史 —— Tabs 动态组件设计

AREX 中文社区

Vue 前端 软件测试

写给程序员的可逆计算理论辨析补遗

canonical

低代码 可逆计算 范畴论

5年Java经验字节社招:15天3次面试,成功拿下Offer

程序知音

Java java面试 大厂面试 后端技术 Java面试八股文

面渣逆袭必看!Java中高级面试指南,Github标星4.3k+!

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

GitHub 爆火的「算法刷题宝典」,电子版终于出来了

做梦都在改BUG

Java 数据结构 算法 LeetCode

爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了

Java你猿哥

Java 微服务 微服务架构 Spring Cloud ssm

技术驱动,数据赋能,华为云GaussDB给世界一个更优选择

YG科技

火山引擎DataLeap的Catalog系统搜索实践(三):Learning to rank与后续工作

字节跳动数据平台

数据湖 数据化 数据平台 大数据分析 DataLeap

深度解析Seata AT 模式中性能优化与隔离保障的平衡之道

Java你猿哥

Java 数据 ssm 脏读

华为云GaussDB以技术创新引领金融行业分布式转型

YG科技

行业DBA走进华为,共建数据库生态

YG科技

🔥笔下生花,与时舒卷,InfoQ写作社区6月优质更文活动来啦!

InfoQ写作社区官方

热门活动 6 月 优质更文活动

开源赋能 普惠未来|OpenHarmony诚邀您参与2023开放原子全球开源峰会

开放原子开源基金会

开源 OpenHarmony 开放原子

【2023华为云CodeArts Build 实战训练营】云端实战-玩转编译构建

华为云PaaS服务小智

云计算 华为云 华为开发者大会2023

[EuroSys2023 Best Poster] 面向动态图的极低时延GNN推理采样服务

阿里云大数据AI技术

人工智能 机器学习 推理 企业号 6 月 PK 榜 DGS

软件测试/测试开发丨接口自动化测试学习笔记分享

测试人

程序员 软件测试 自动化测试 接口测试 测试开发

阿里、字节大佬共创的Netty核心原理手册,必须是全网No.1

程序知音

Java Netty java架构 Java进阶 后端技术

文盘Rust -- tokio绑定cpu实践 | 京东云技术团队

京东科技开发者

rust cpu tokio 企业号 6 月 PK 榜

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