存储 频道

爱奇艺在服务网格方向的落地实践

以下内容,整理自 SACC 2022中国系统架构师大会上的演讲:

本期分享嘉宾爱奇艺研究员邢舟,他围绕爱奇艺在服务网格方向的落地实践进行了讲解,并就爱奇艺各业务系统云原生化迁移过程中 遇到的一些重点问题 展开讨论。本文主要包括以下部分:

   1.爱奇艺的微服务现状及微服务治理发展历程

   2.基本设计实现

   3.服务网格平台在爱奇艺公司内各业务系统的落地实践

   4.平台扩展及未来规划

   5.结语



爱奇艺的微服务现状及微服务治理发展历程

爱奇艺成立至今已经有十余年,其间经历了完整的业务急速扩张期,目前公司已成长为国内长视频播放的头部平台。除了业务上的巨大收获,也积累了大量的业务前后台系统。

通过对这些系统的梳理总结,从微服务和微服务治理角度,发现存在三方面问题:

单体与微服务并存:许多业务系统在设计时为了快速迭代需要,没有依照微服务架构进行设计。随着业务成熟和架构复杂度增加,有拆分成为微服务的基本诉求;

技术栈多种多样:公司缺乏统一技术规划,各业务从应用场景出发,从编程语言到微服务框架选择,都是多样化异构的;

部署运维复杂:由于异构的技术栈,以及底层基础设施存在物理机、VM、容器等多种形态,叠加不同的中间件依赖,造成各业务需要投入大量精力进行日常部署运维。

综合这些现状,爱奇艺的微服务体系暴露出缺乏治理标准、各业务服务治理能力无法对齐、服务治理重复造轮子等问题,造成关键服务链路稳定性缺乏保障。

为了解决这些问题,爱奇艺从若干年前便开始了微服务改造,并于去年开始进行了云原生改造。这些改造可以划分为四个阶段:

微服务化阶段:主要使用SpringCloud、RPC框架等标准化微服务框架,对单体服务进行拆分。在这一阶段形成了初步的熔断限流等基本治理能力,许多业务也形成了一些典型的服务架构和服务部署架构,如同城双活、两地三中心等。

容器化改造:在微服务拆分的基础上,爱奇艺于2016年左右开始了容器化改造进程。在这一阶段,CI/CD、DevOps等云原生概念开始引入。

多云迁移:2021年前,爱奇艺于自建机房构建了私有云服务。随着业务不断扩张,为了降低成本,提升效率,开始向混合云及多云架构进行迁移。由于爱奇艺的业务具有典型的流量波峰波谷现象,多云迁移所利用的弹性可以极大降低爱奇艺的服务成本。

云原生改造:爱奇艺于2022年正式开始了云原生改造探索,包括微服务框架精简、服务网格、数据库网格,以及以应用为核心的iQiyi PaaS建设等。

在这4个阶段的改造中,提升微服务治理能力贯穿始终,是爱奇艺在改造过程中的重点关注项。服务网格在提升微服务治理能力方面,具备许多天然技术优势,爱奇艺于三年前 就开始着手构建基础服务网格平台 用于提升整体微服务治理水平。


爱奇艺服务网格平台的基本设计实现

目前,服务治理在爱奇艺主要存在三种形态:

代码中的服务治理:服务治理能力与代码紧密耦合,各业务由于技术栈的差异无法做到治理能力对齐;

SDK中的服务治:业务通过依赖一些标准的微服务框架,如SpringCloud、RPC等SDK完成服务治理,服务治理能力与业务逻辑有一定程度的解耦,在保留性能的基础上,各业务之间的服务治理水平需要对齐;

Sidecar中的服务治理:通过将治理能力下沉到 sidecar 层,彻底达到治理与业务应用解耦,可以跨技术栈、跨业务进行治理能力对齐,但在性能上可能存在一定损失。

考虑到业务改造成本及异构技术栈的兼容支持,爱奇艺服务网格平台主要支持后两种治理形态,总体目标是构建一个可以针对异构技术栈统一服务治理能力的服务基础平台。

爱奇艺的服务网格平台基于开源的 Istio+Envoy 框架构建,采用 "一控制面,多数据面" 的架构。

“一控制面”主要指在 Istio 的基础上进行了封装和扩展,并面向公司全部业务提供了统一的以 iQiyi PaaS 平台为统一入口的控制面;“多数据面”有两方面的含义,第一层含义是多种数据面,其二是多个数据面。下图展示了爱奇艺服务网格平台的总体架构设计:

如上图中央蓝色方块所示,爱奇艺服务网格平台,至少支持以下三种类型的数据面:

经典Envoy数据面:通过Envoy Sidecar劫持流量并进行流量治理。这种类型的数据面,也是目前爱奇艺内部覆盖最广泛的数据面形式;

Proxyless Service Mesh:即无代理模式。目前爱奇艺内部大量业务使用了RPC框架,其服务网格平台正针对多种类型RPC框架进行改造,通过SDK的模式支持业务接入服务网格,在保障业务性能的同时,可以享受网格带来的治理优势。无代理模式通过标准的xDS协议与控制面关联;

数据库网格:是今年刚刚起步的网格形式。数据库是业务服务必须依赖的中间件,其访问治理也属于服务治理范畴。目前,爱奇艺网格通过数据库SDK增强、Envoy扩展等工作已经支持了针对Redis、MySQL等数据库的数据库网格。

从具体实现角度,为了确保高可用,爱奇艺网格平台采用了主备控制面设计。两个控制面部署在不同AZ的K8s集群,通过内网域名统一指向,并通过一个数据同步程序实现数据同步。下图展示了爱奇艺服务网格平台的具体部署设计:

如上图所示, 爱奇艺底层的K8s集群是以AZ为单元构建的,业务一般以两地三中心方式进行部署。它的服务网格平台通过对多AZ集群进行监听的方式,实现对多数据面集群进行统一管控治理,这也实现了“多数据面”的第二层含义。

在日常运维方面,我们试用了联邦式Prometheus集群设计,规避数据量过大带来的指标收集和聚合问题,并已经能够提供从“实例->机房->整体”多维度监控报警。同时,我们也为服务网格平台设计实现了统一的管理后台,日常运维相关的大部分自动化脚本 都通过管理后台统一运营维护。

目前,爱奇艺服务网格已经面向公司所有业务,提供了五方面的服务治理能力,如下图所示:


爱奇艺服务网格平台在公司内各业务系统的落地实践

如前文所述,爱奇艺内部有大量历史存量系统,在爱奇艺服务网格落地过程中,推进这些历史系统迁移到网格平台部署,是一项具有重要意义的工作。

为此,我们梳理了爱奇艺内部重要业务的典型架构,并给出了业务迁移的推荐流程。下图展示了一个典型的业务系统的迁移过程和迁移前后的架构对比:

在推动业务的迁移中,我们为各种典型业务架构 设计了迁移模板和流量灰度方案,保障业务服务平稳。在迁移的过程中,我们也积累了丰富的迁移经验:

平滑迁移:通过在业务系统之前前置负载均衡层或者Envoy Gateway等层次,达到按流量比例平滑迁移的效果。业务在保留原有部署的同时,在网格平台内配置部署一套服务,流量在两套系统中通过负载均衡层进行调配,一旦出现故障,可随时配置回滚。

架构精简:业务在迁移到网格后,除了获取治理能力等软实力提升外,架构精简也是迁移过程中的重要考量。对于业务网关层、nginx层、服务注册发现中心等传统微服务框架的结构,在迁移至网格后可以考虑精简。架构精简在降低运营成本的同时,也可以提高服务响应性能,提升服务链路稳定性。

服务接口规范:在服务网格体系内,我们以业务部门作为划分,将流量划分为跨部门调用的南北向流量和部门内调用的东西向流量。其中,南北向流量建议使用HTTP等协议设计,灵活扩展;东西向流量建议使用RPC等协议,可以利用网格直连的特性提升微服务内聚性,保障性能效率。

复杂服务链路迁移:采用部分迁移,服务网格内外双注册的方式,完成复杂服务链路的迁移,从而保障复杂服务迁移的稳定性。

综上,我们基于以上的策略,目前已经在爱奇艺内部成功迁移了数百个业务应用,帮助业务在架构精简(主要着眼于精简传统微服务框架与服务治理相关的架构冗余部分)、服务灰度标准化、服务治理白盒化运维、补充服务治理能力方面,都取得了积极的反馈。


爱奇艺服务网格平台的扩展及未来规划

最后,简单介绍一下爱奇艺在建设服务网格平台过程中的一些扩展,主要分为三个方面,即无代理服务网格、数据库网格和iQiyi PaaS平台。开源服务网格功能相对单一,难以适配企业各种业务场景和异构技术栈的需要。

为了更好拓展服务网格在爱奇艺内部各业务线的落地,我们在以下机房方面针对服务网格做出了扩展尝试:

无代理服务网格:是服务网格领域近期的热点话题之一,爱奇艺发展的无代理服务网格主要目标在于对RPC协议的支持,即实现SDK形态的服务治理。

目前,我们积极参与了许多RPC框架的扩展工作,以支持xDS协议为目标,支持了bRPC、Dubbo、gRPC等RPC框架在服务网格平台的接入。使用这些RPC框架的业务,可以通过iQiyi PaaS统一入口无缝集成服务网格的治理能力。

数据库网格:是今年新提出的服务网格相关概念。数据库作为常用中间件,几乎在所有业务应用中被广泛使用。关于数据库访问,目前大部分业务都是采用各种数据库SDK叠加本地properties配置方式,存在安全漏洞、无法灵活应对数据库迁移等基本问题。

爱奇艺将Envoy进行了扩展,并与ShardingSphere社区合作,推出了Redis、MySQL等常见数据库的数据库网格,将数据库访问的相关治理能力下沉到SDK,甚至是sidecar等层次,提高了数据库访问的安全性,并丰富了数据库的访问治理。

下图展示的是爱奇艺数据库网格 所设计实现的数据库访问治理的基本流程:

iQiyi PaaS:是爱奇艺所设计构建的未来的公司整体PaaS平台。这个平台以应用为核心,基于Kubevela等开源标准,为企业内的各种应用服务提供统一的生命周期管理。

iQiyi PaaS平台提供了包括基础资源、弹性、监控、微服务治理能力(服务网格)、应用监控、全链路追踪、部署、CI/CD等与APP相关的全套环境、基础设施和工具支持,是整个公司云原生化改造的重要组成部分。下图展示了爱奇艺PaaS平台的基本结构设计:


结语

服务网格作为下一代微服务治理技术,在爱奇艺各业务上已经得到了广泛的应用。在节省运维成本、提升开发效率、增强服务治理能力方面,爱奇艺公司大量的业务应用,都证明了服务网格作为基础服务平台的关键作用。

通过近两年的探索,爱奇艺已通过实践印证了服务网格作为网络服务间通讯治理的基础设施层的重要性。未来,爱奇艺将继续着眼于微服务和微服务治理领域,密切关注服务网格领域的进展,以iQiyi PaaS为核心,不断推进云原生在公司各业务线的落地,进一步实现业务系统降本增效的战略目标。


 本期分享嘉宾 


邢舟

爱奇艺 研究员


【嘉宾介绍】2018年加入爱奇艺,先后在AI工程化、视频云和中间件团队做研发工作。目前负责公司服务网格和云原生在爱奇艺后台系统的推广落地。此前曾作为中国开源云计算领域布道者,组织过Cloud Foundry、K8s等多个系列开源云计算社区技术活动,对容器、云计算、云原生积累有一定的技术经验及落地使用经验。



0
相关文章