写点什么

爱奇艺边缘计算探索与实践

  • 2020-08-24
  • 本文字数:4882 字

    阅读完需:约 16 分钟

爱奇艺边缘计算探索与实践

摘要

随着云原生技术的发展和 5G 商用的到来,边缘计算随“风”而起。本文将从提升视频播放体验和降低带宽成本的两个目标,介绍爱奇艺在边缘计算服务平台和边缘缓存应用场景两方面的实践经验。

01 边缘计算简介

边缘计算正获得越来越多的关注,Gartner 连续三年将边缘计算列入十大技术趋势之一。欧洲标准电信协会 ESTI 制定的边缘计算标准架构 MEC,也从 “Mobile Edge Computing” 转变为 “Multi-Access Edge Computing”,意味着边缘计算并非限定在运营商层面的移动网络,而是包括更广泛的多接入网络。关于边缘的界定也逐渐清晰,按照离终端用户的距离从近到远,可以分为物边缘、移动边缘和云边缘,目前国内运营商和云厂商主要分别在后两部分布局。



值得注意的是,以容器为代表的云原生技术和 5G 的商用,为进一步推动边缘计算发展提供了技术支持和基础设施。此外,边缘计算和云计算的关系并不是替代,而是相互补充发挥云边协同作用。边缘计算可以将云的能力延伸下沉到边缘做,比如存储、AI、大数据等,边缘计算进行 Off Loading 处理,降低终端的响应时延和云端压力等;也可以将端设备不宜胜任的 AI、计算和大量数据存储提升到边缘来做。


爱奇艺 HCDN 团队在边缘计算的实践主要集中在物边缘这一层面,较少部分在云边缘。下面将从边缘计算平台 IPES、应用场景和未来工作三部分进行介绍。

02 边缘计算平台 IPES

在 2019 年初,爱奇艺 HCDN 团队开始设计实现边缘计算平台—— IPES(Intelligent Platform for Edge Service),通过对海量设备资源进行统一管理和分配,提供更靠近用户现场的 PaaS 能力。


设计之初,IPES 考虑了至少应该支持海量异构设备、支持云边协同两个原则,包括有效利用不支持容器环境的设备资源隔离运行 Native 程序。具体来说有如下功能:


A. 节点管理


  • 设备接入

  • 节点信息/状态投递

  • 应用信息/状态投递


B. 应用管理(支持按需灰度、版本依赖、资源限制、自动扩展)


  • Docker 应用部署

  • Native 应用部署

  • 函数应用部署

  • 在线同步云端期望状态

  • 离线自治


C. 任务调度


  • 函数任务实时调度下发

  • 函数任务定时触发

  • 任务回调接口

  • 任务回传文件接口

  • 任务投递状态接口


D. 公共服务


  • 日志采集

  • 服务健康检查

  • 消息路由

  • 分布式存储


IPES 抽象架构如下图所示,通过 UI 或命令行(完善中)对资源和应用进行操作。



云端架构如图:



IPES 云端部分借鉴了 K8S API Server 的架构,由以下核心组件组成:


  1. API Server 是资源、应用和任务下发的统一入口,提供认证、授权和访问控制等机制,方便应用方或设备方的使用

  2. Controller 负责维护应用实例的状态,比如应用状态的匹配,实例数的匹配,按资源使用自动扩展等

  3. Scheduler 负责对符合要求的资源进行筛选过滤,根据期望状态将应用或任务调度到对应的设备资源上

  4. Data Manager 消费边缘端投递上来的所有数据,并加工生产成不同模块需要的数据

  5. MQTT Broker 是基于 MQTT 协议的云端集群,负责和所有边缘端的 MQTT agent 保持通信,是云边协同中重要的一环

  6. Store 部分可以看作应用商店,其中 Docker Repo 支持 Docker 镜像管理,采用公司内部的云服务;IPFS 代理支持分布式的上传和拉取数据,减少云端请求和带宽压力

  7. Observe 部分包括应用的健康检查和日志采集服务等,基于公司内部云服务比如 Prometheus 和 EFK 框架等搭建,应用部署时可以选择开启上述功能。


边缘端架构如图:



运行边缘节点的设备在硬件和软件环境等方面往往差别很大,为统一部署和资源管理提出了挑战,包括:


  1. 大部分边缘设备采用低功耗的 Arm 架构或 Mipsle 架构,需要进行架构适配

  2. 操作系统往往采用不同的 Linux 发行版本,或者是自定义裁剪过的 Linux 内核

  3. 网络条件不如传统数据中心,可能没有外网 IP 或端口

  4. 人为或无法预知的断电断网情况往往不可避免,缺少健壮性


因此,IPES 边缘端不仅要适配各种异构设备和操作系统,而且要做到离线自治,即使和云端断开了连接,也不影响已有服务的正常运行。另外数据安全也是要考虑的一方面,采用证书和加密机制来保证数据的安全。在部分不支持 Docker 的设备上,采用 Native+CGroup 的方式对应用进行资源限制。边缘端由以下核心组件组成:


  1. Master 是边缘端主进程,提供本地 API 接口,并负责所有模块和应用的生命周期,基于 Native 和 Docker 两个应用 Engine,支持 Native 和 Docker 应用的混合部署

  2. Agent 是边缘端和云端保持长连接的组件,主要作用是加密的双向通信,云边协同的重要一环;

  3. Lambda 是函数计算的 Runtime 组件,支持 Python 和 JS 的函数代码运行,也支持函数任务的队列管理、定时触发、状态投递、任务回调等功能(可选组件)

  4. MQTT-Hub 是边缘端的 MQTT 代理,支持各个应用之间的消息订阅发布的通信,包括第三方应用和 Lambda 组件(可选组件)

  5. IPFS 是基于内容寻址的开源分布式组件,基于边缘端构建的 IPFS 分布式网络,可以提供应用数据的下载上传功能,降低云端的请求和带宽压力(可选组件)

  6. Filebeat 是轻量级基于文件内容的开源日志采集模块,支持日志的实时过滤处理和回传云端(可选组件)


从应用方的角度来看,IPES 边缘节点分层架构如下图:



基于 IPES 边缘计算服务平台,可以方便的接入设备和部署各类应用。目前 IPES 已经接入百万台设备,覆盖了 X86、ARM 和 Mipsle 等各类 CPU 架构设备,支持 Linux、Windows 和 Openwrt 等操作系统。主要承载着点播的缓存应用,也运行了部分包括直播缓存应用、视频会议应用、广告违规物料检测等十多个应用。

03 边缘应用场景

随着用户对长短视频、4K/8K 超高清视频、以及直播、AR/VR 等内容的需求越来越多,用户观看视频的介质也从网页、PC、OTT 到各类移动设备越来越丰富,视频的带宽成本也变得越来越高。同时考虑到内容版权的保护、服务质量 QoS 和业务形态发展等因素,HCDN 团队从 2014 年开始,着手设计实现混合 P2P 和 CDN 技术的 HCDN 架构,构建超大规模的分布式存储网络。并陆续将存储上传节点程序进行升级改造,使之能够更充分的利用各类异构的设备资源,并作为独立的边缘缓存应用,通过 IPES 平台进行部署和管理。为用户提供丰富、高清、流畅的视频体验。



上图中的 HCDN Inside APPs 就是部署在 IPES 边缘节点的边缘缓存应用。边缘缓存应用的整体逻辑可以简单的从供给和需求两个角度来描述。右半部分是供给侧,或者说资源分发流向,资源按照一定的策略,被主动的或根据需求自适应调整而分发在边缘存储设备中。左半部分是需求侧,或者说资源消费流向,资源被手机、PC、OTT 等不同终端消费用于播放视频内容。


无疑,数亿视频用户所在的需求侧对资源的需求是多样而巨大的,而供给侧的边缘存储节点虽然经过多年发展已有不小规模,但相对而言也是有限的,因此如何使得端可以有效的访问到需要的边缘缓存节点上的资源,并且尽量确保该资源离自己比较近,就需要依赖 HCDN 的云端 HDS 存储分发调度策略。



供给侧和需求侧与边缘缓存节点一起构成一张巨大的分布式存储分发网络,需求侧(Peers)对获取的边缘节点和资源进行读取并反馈给网络中的大脑 Trackers,Trackers 按照边缘节点的分布、资源的稀缺,再结合需求侧的反馈等信息,对分发的资源和节点进行调整。供给侧(HDS Push)根据 Trackers 的决策结果,往存储网络中写数据。


分发调度的策略算法有很多的研究空间,就不具体展开介绍。重要的是可以看到,基于海量的下沉边缘存储设备,发挥云边端协同作用,对资源进行统一管理、智能调度并汇聚成共享带宽为各个端上应用提供稳定的适配服务,达到提高视频观看体验,同时降低带宽成本的效果。


除了以上面向点播场景下的边缘缓存应用介绍之外,IPES 平台上还承载部署着其他业务场景的边缘应用,包括:


(1)直播镜像


直播场景下的存储分发特点有别于点播场景,在于直播往往发生在有限的时间内,且直播压力具有突发性。因此如果单纯的依靠传统 CDN 资源且预留的直播资源不能满足突增的直播请求时,容易出现直播卡顿比增加,且反过来影响点播视频播放质量等问题。


而边缘计算节点的覆盖广、更靠近用户、云边协同的灵活弹性调度等优势,正好可以解决这个问题。通过在 IPES 上部署直播镜像分担直播流量,降低 CDN 压力和延时,同时节省带宽成本。


(2)SFU/RTCDN


2019 年底以来的新冠疫情给全世界造成很大的影响,体现到工作方式上就是视频会议的需求急剧上升。同时今年以来直播再次成为新风口,达人直播名人带货的现象屡见不鲜。爱奇艺基于 WebRTC 协议构建的低延时互动直播和会议 RTCDN 服务,主要采用 SFU 级联模式。SFU 可以提高实时性,同时级联框架可以覆盖推流端(主播或视频会议演讲者)到拉流端(观看者)的不同网络状况,满足不同业务场景的需要。



通过 IPES 对 SFU 进行调度部署,使得 SFU 离推流端和拉流端更近,解决第一公里和最后一公里的问题。当然,边缘节点的健壮性对 RTC 流有一定的影响,IPES 提供服务健康检查和稳定性预测等手段来尽量降低对服务质量的影响。


上述几类应用往往采用容器部署,是云端(存储、转流)能力往边缘下沉的场景体现。


(3)广告违规物料检测


还有一类场景是将终端不宜胜任的工作往边缘转移。一个案例是广告主在爱奇艺平台发布的广告物料,作为平台方需要对物料进行上线前审核和上线后巡查,避免出现违规的情况。广告物料在不同的地域可能会有些自适应调整,也可能遇到 HTTP 恶意劫持导致页面内容显示异常。显然上线后巡查如果放在云端做不太合适,且需要采购成本,而广告页面的下载渲染过程,尤其对于复杂页面而言,资源消耗不低,因此也不适合在端上进行。


IPES 平台的函数计算组件,支持部署运行 Python 和 JS 函数代码。并且在云端提供任务下发接口和函数回调接口,满足不同函数任务下发需求和便于追踪函数执行结果。在这个案例上,将广告物料巡查脚本部署到边缘节点上,既提高违规物料检测的成功率又节省了采购成本。


将终端不宜胜任的工作往边缘转移的应用场景还有不少,包括 AI 处理的工作等,目前 IPES 在这方面继续进行探索和尝试。

04 未来方向

可以看到,视频正在越来越多的作为人与人之间的信息传播媒介,而且视频流量占据着互联网流量的一半以上。目前各大公司和运营商都在边缘计算领域积极布局,纷纷推出了各自的解决方案。关于找到一个可大规模落地并产生效益的应用的问题,爱奇艺给出了一个明确的答案——边缘缓存应用。通过边缘计算可以有效的降低视频带宽成本,提升观看体验。当然,我们也期待着更多的 AI 和大数据等云能力,逐渐在边缘计算落地开花。


站在边缘计算平台的角度看,各个公司的平台各有侧重。其中 K3S 侧重在构建边缘的轻量级 K8S 集群,国内各大公司给出的方案则更侧重另一个方向——云边协同(这一点和 IPES 类似),且不约而同的都基本兼容 K8S,差异点主要在比如支持 P2P 分发镜像(openyurt),对云边协同“长连接”通道的理解或实现不同(Websocket、QUIC、mqtt),对工业物联网更友好(kubeedge)等等。


对于 IPES 来说,既要保持已有边缘缓存应用生态的继续运转,也要合理跟进主流技术包括云原生等方面,为未来纳入更多设备和落地支持更多应用提前做准备。在可见的未来,IPES 还有但不限于以下工作要做:


  • 兼容 k8s

  • 加强集群管理能力

  • 加强配置管理能力

  • 提供更多应用友好的服务支持


写在最后


在尝试部署在边缘节点时,不少应用遇到从传统数据中心迁移过来后的“水土不服”的情况。这些应用往往设计之初假定具备了传统数据中心提供的比如固定外网 IP 地址、公共端口、内网域名访问等条件,而在容器化或边缘计算场景下部署时,这些问题都需要经过适当的修改,甚至是服务的拆分,才可以更好的运行起来。


所以,边缘计算既然看作是云计算能力的延伸,那么在架构上和应用开发方式上,也是一脉相承。积极合理地采用云原生架构思想,可以更快更好地利用边缘计算的能力。


参考资料


1.Gartner Top 10 Strategic Technology Trends for 2020


2.What’s the Difference Between Edge Computing and MEC?


3.Lightweight Kubernetes——The certified Kubernetes distribution built for IoT & Edge computing


4.OpenYurt - Extending your native Kubernetes to edge


5.Beatyl


6.KubeEdge v1.3发布:大幅提升系统可维护性!


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


原文链接


爱奇艺边缘计算探索与实践


2020-08-24 14:002383

评论

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

架构师的十八般武艺:架构决策

agnostic

架构决策

【算法实践】手把手带你快速实现插入排序

迷彩

Python 算法 插入排序 8月月更 折半插入排序

「uTools」生成P站Logo插件

小鑫同学

8月月更

共36万字!为上岸Alibaba,我把Github上Java面试题都整理了一遍

退休的汤姆

Java 程序员 面试题 Java工程师 秋招

Kubernetes源码学习之一:下载和编译源码

程序员欣宸

Kubernetes 8月月更

小米最新充电器最高支持210W闪充,成为行业内第一

科技怪咖

常见性能测试场景概述

穿过生命散发芬芳

性能测试 8月月更

最常见的ES面试核心问答知识点

浅羽技术

搜索引擎 倒排索引 ES Elastic Search 8月月更

Grafana Labs CEO 关于 Grafana Mimir 的问题答复

Grafana 爱好者

Mimir

想不到吧,Mysql在项目中的优化场景这么多

知识浅谈

sql 8月月更

理一理 OC/OD 门、开漏输出、推挽输出、图腾柱等概念

矜辰所致

电路设计 8月月更 电路基础

常用消息中间件对比

浅羽技术

RocketMQ MQ 消息队列 Rabbit MQ 8月月更

SpringCloud 服务的拆分及远程调用

微服务 SpringCould 8月月更

元器件选型实例(如何选一款合适的 DC-DC )

矜辰所致

电路设计 电源设计 8月月更 元器件选型

聊聊面试中的过滤器与拦截器

TimeFriends

8月月更

使用 Containerlab + Kind 快速部署 Cilium BGP 环境

Se7en

云原生(二十八) | Kubernetes篇之自建高可用k8s集群搭建

Lansonli

云原生 k8s 8月月更

分布式事务常见面试题解答

浅羽技术

分布式事务 事务 TCC 两阶段提交改进 8月月更

日拱算法:双指针解“救生艇”问题

掘金安东尼

算法 前端 8月月更

[JS入门到进阶] 前端开发不能写undefined?这是误区!

HullQin

CSS JavaScript html 前端 8月月更

HTML入门

楠羽

#开源

Python 教程之数据分析(3)—— Python中不同图表的数据可视化

海拥(haiyong.site)

Python 8月月更

自定义 Hero 动画的路径

岛上码农

flutter 前端 移动端开发 安卓开发 8月月更

聊聊实际使用的电源转化电路,分享一些不同场合下的转3.3V电路

矜辰所致

电路设计 8月月更 电源转化

CR,我们在Review什么

agnostic

CR

Jenkins + Github + Nginx 自动化部署 Vue 项目

宁在春

Docker jenkins 8月月更

【超文本标记语言】:走进HTML的世界....

翼同学

html html5 HTML5, CSS3 8月月更

自阿里P8爆出1031道java面试题后,我在boss直聘狂拿千份Offer

退休的汤姆

Java 程序员 面试 阿里 秋招

Jenkins 构建成功后发送邮件配置

宁在春

Docker jenkins 8月月更

Hash 算法详细介绍与实现 (二)

迷彩

php 数据结构 hash算法 8月月更 Hash表

吹爆!阿里最新开源的这份Redis全栈小册,涵盖了Redis的所有操作

Java永远的神

Java 数据库 redis 程序员 面试

爱奇艺边缘计算探索与实践_云原生_爱奇艺技术产品团队_InfoQ精选文章