大家好,关于详解高并发软硬件一体化架构设计-51CTO.COM很多朋友都还不太明白,今天小编就来为大家分享关于的知识,希望对各位有所帮助!
如果说在以音视频为载体的信息传输与交互技术领域始终漂浮着一片“乌云”,那么这个“乌云”的名字恐怕既不是低延迟,也不是高可靠性,而是永远存在的。 -改变应用场景。
从Web 2.0到移动终端基础设施的全面建设,我们完成了文本信息的全面数字化;而自2016年“直播元年”以来,图像和语音信息的全面数字化仍在进行中。最简单的例子就是,对于早期的流媒体直播来说,1080P是完全可以接受的高清直播;但对于如今的流媒体来说,在冬奥会这样的直播场景中,8k可能是硬性要求,相对于1080P来说,像素数提升了16倍。
而且,如今的流媒体业务对视频流不仅对分辨率有要求,对帧率也有要求。以阿里文娱2019年底推出的“帧共享”解决方案为例。它将帧率推升至120 FPS,对动态渲染也有很高的要求。过去人们总说帧率超过24FPS,人眼就无法识别,所以高帧率没有实际意义。但高帧率能否提升观看效果,与每帧的信息量密切相关。近年来游戏开发技术的进步,以及以李安为代表的多位电影导演的出现,已经彻底打破了这个误区。
对于RTC来说,问题情况和对应的软件架构完全不同。早期大家观看赛事直播的时候,20秒的延迟是完全可以接受的。然而,在RTC场景下,人与人之间的实时交互已经大大降低了用户对延迟的容忍度。从WebRTC方案到自研传输协议,相关尝试从未停止过。
当我们以为所谓的场景问题终于可以抽象为有限的技术问题,并且延迟降低到100ms以内,可靠性提高到99.99%时,新的场景又出现了。全景直播、VR全球直播、云游戏……其中以云游戏最为典型。 ——云游戏简直就是以往音视频场景性能要求的顶峰:有的游戏要求延迟低至50ms;有些要求FPS 60 以上;不用说,分辨率越高越好。同时,云游戏场景中夹杂着大量的动态渲染任务,这些都消耗服务器资源,增加整个链路的传输延迟。
那么,如果我们从云游戏场景的性能需求出发,再延伸到整个超视频时代的架构体系,应该用什么样的思路来设计架构呢?只关注软件可能是行不通的;硬件成为必须考虑的因素。
以软件为中心并非最佳选择
要解释这个问题,我们必须回顾一下传统的云游戏技术架构。下图主要参考了Intel音视频白皮书和华为云游戏白皮书,并做了相应调整。与当前环境下大多数云游戏架构的设计基本一致。
InfoQ 版权所有
在该架构下,所有服务均在云端和公网完成,然后到达云游戏终端,保证用户无需下载游戏或购买高性能终端即可玩游戏。游戏玩家终端主要负责处理网络数据包、解码并显示渲染的游戏画面、输入相应指令并发回服务器。
在服务器端,链路相对复杂。云游戏管理平台是服务的起点。上、下链路是云游戏的外围技术服务,与业务场景强相关,包括云游戏的直播录制、游戏日志/记录存储等。前者对延迟的容忍度较高,可以采用普通的流媒体方式。媒体服务系统,利用CDN分发音视频内容;后者属于正常游戏服务器设计范畴,可以正常提供服务。
关键在于中间层,即云游戏容器集群。这部分要达到的基本设计目标是保证1秒内能够完成至少24张游戏图像(24帧)的计算、动态渲染和编码传输。一些高要求的场景需要60FPS的帧率,同时保证尽可能低的延迟。
这部分的技术挑战非常大,如果只考虑软件很难取得真正的突破。从相关指标的演变历史来看,仅在4年前,手游本地渲染的基本目标仍然是30FPS。现在,虽然可以达到60 FPS甚至更高,但讨论的场景也从本地渲染切换到云端渲染。在软件方面,除非有学术上的突破,否则很难保证性能永远保持这样的飞跃。
另外,渲染本质上是一个非常依赖硬件的工作。渲染速度和质量的提升主要取决于GPU技术、性能和配套软件的提升。
3D游戏渲染画面
以上只是冰山一角。对于架构设计来说,除了高性能、高可用性、可扩展性这三个设计目标之外,成本也是必须考虑的一个平衡点。 —— 需要1,000 台服务器的架构和需要100 台服务器的架构根本不是同一概念。 2010年左右,云游戏C端商业化的可能性基本没有。虽然整体时延和性能指标能够满足当时的要求,但代价是一台服务器只能服务一个玩家,单个玩家的服务成本就上万。云游戏“元老”Onlive的失败,在当时就很能说明问题。
到2020年,行业硬件整体性能提升后,一台服务器可以支持20-50个并发连接,性能提升了数十倍。
那么,如果我们将硬件作为架构设计的核心考虑因素,会是什么样子呢?大致如下图所示(为了不让图示过于复杂,我们只保留云游戏的核心服务环节作为代表)。
InfoQ 版权所有
可以看到,仅在云服务器部分,就需要涉及大量的硬件和配套软件,并且需要关注的性能点也相对复杂。这只是云游戏一种应用场景下的音视频架构。当我们对场景进行抽象和扩展,最终覆盖整个超视频时代时,下面来自英特尔技术团队的架构图可能会更加真实。 Intel分别展示了软件和硬件层面的音视频架构:一部分称为Infrastruction(基础设施层),如图1所示;另一部分称为基础设施就绪(Infrastruction Readiness),指的是基础设施。准备好后,在其上构建工作负载,如图2所示。两张图片的开头和结尾有一定的重叠,说明它们从头到尾是相连的。
图1:基础设施层
图2:基础设施到位后的工作负载
可以看到,基础设施层主要包括硬件、支撑云服务、云原生中间件以及各种开源基础软件。在工作负载层面,有很多软件工作,包括核心框架、SDK 和开源软件贡献(UpStream)。这就是为什么英特尔以硬件闻名,却保持着1万多人的软件研发团队。
拆解软硬一体的音视频架构方案基础设施层
在基础设施层,我们主要关注的是硬件,特别是音频和视频服务。硬件改进给业务带来的好处是相当直接的。
然而,与十年前相比,现在的硬件产品家族的复杂性和丰富度猛增。核心原因是场景的变化带来了新的计算需求。依靠CPU征服世界的时代已经结束了。永远消失了。以前面展示的Intel硬件矩阵为例,在音视频场景中,我们主要关注CPU、GPU和IPU。由于文章篇幅,网卡等其他硬件不在重点范围内。
CPU方面,英特尔更新了至强第三代可扩展处理器,与第二代处理器相比,内存带宽提升了1.60倍,内存容量提升了2.66倍。它采用PCIe Gen 4,将PCI Express 通道数量增加高达1.33 倍。其中,Intel Xeon Platinum 8380处理器可达8通道、40核、主频2.30GHz。 Intel支持冬奥会8k转播时,CPU端主要方案是Platinum 8380,这里有详细参数列表供大家参考(https://www.intel.cn/content/www/cn/zh/products/sku/212287 /intel-xeon-platinum-8380-processor-60m-cache-2-30-ghz /species.html):
Intel CPU另一个值得注意的特点是其支持软件层面,主要是AVX-512指令集。 AVX-512指令集于2013年发布,是一个扩展指令集。旧的指令集仅支持一条指令操作一条数据,但随着场景需求的变化,单指令多数据操作已成为必须,AVX系列逐渐成为主流。目前,AVX-512指令集的主要目的是使程序能够同时执行32个双精度、64个单精度浮点运算,或者对8个64位和16个32位整数进行操作。理论上可以使浮点性能提升一倍,整数计算性能提升约33%。目前仅在Skylake、Ice Lake等三代CPU上支持,因此也比较独特。
在视频编码、解码、转码等过程中,由于应用程序需要进行大规模整数和浮点计算,因此AVX-512指令集的使用也至关重要。
GPU方案通常在云游戏场景中更引人注目。英特尔 服务器GPU 是首款基于英特尔Xe 架构的数据中心独立图形处理单元。英特尔 服务器GPU 基于23W 独立片上系统(SoC) 设计,具有96 个独立执行单元、128 位宽流水线和8G 低功耗内存。
所谓片上系统SoC,英文全称是System on Chip,即系统级芯片。 SoC包括但不限于CPU和GPU。就在今年,前Mac 系统架构团队负责人、苹果M1 芯片的“英雄”Jeff Wilcox 宣布将离开苹果,担任英特尔院士兼设计工程组CTO,负责客户端SoC 架构。该设计也引起了业界的广泛关注。
当然,GPU硬件本身还不够。英特尔 Media SDK 几乎是GPU 的必备品。英特尔 Media SDK 提供高性能软件开发工具、库和基础设施,用于在基于英特尔 架构的硬件基础设施上创建、开发、调试、测试和部署企业级媒体解决方案。
其组成可参考下图:
IPU是一款专门为分担CPU工作量而生的芯片。 2021年6月,英特尔数据平台集团首席技术官Guido Appenzeller表示:“IPU是一个全新的技术类别,也是英特尔云战略的重要支柱之一。它扩展了我们的智能网卡功能,旨在处理当今复杂的数据中心并提高效率。”
具体到音视频场景,IPU负责处理编码后的音视频流的传输,从而解放CPU,使其更多地专注于业务逻辑。因此,CPU+GPU+IPU的组合不仅着眼于满足不同场景的需求,同时也着眼于架构成本问题。
工作负载层
从基础设施过渡到工作负载,其实有一个架构图,更详细地展示了相关技术栈的构成:
在这个架构图中,横向部分展示了从源代码流输入到分发的整个过程,包括编码、分析等处理动作;垂直部分显示了为该音频和视频处理过程提供服务所需的硬件和软件。系统。
OneAPI作为异构算力的编程模型,是连接基础设施和上层负载的关键层。不用说,这是不言而喻的。说到负载层,软件分为两个色块:蓝色和紫色。蓝色代表直接开源软件,紫色代表经过英特尔深度优化后反馈(Upstream)给开源社区的开源软件。
蓝色部分,OpenVino是一个非常有趣的工具套件。它围绕深度学习推理做了很多性能优化,并兼容TensorFlow、Caffe、MXNet和Kaldi等深度学习模型训练框架。当音视频系统需要添加AI技术栈来服务超分辨率等关键需求时,OpenVino将发挥关键作用。
x.264/x.265的紫色部分就是一个典型的例子。作为音视频行业最主流的编码标准,英特尔是使其开源的主要贡献者,AVX-512指令集围绕x.264/x.265进行了专门的优化和性能测试。
另一个值得关注的核心是编码器,它横跨蓝色区域和紫色区域。既有业界通用的ffmpeg,也有Intel自研的SVT,两者同样有趣。
关于编解码器的选型思考
在流媒体时代,著名的开源多媒体框架ffmpeg在做编解码处理时是业界绝对的参考对象。说白了,很多编解码器都是ffmpeg的深度定制版本。 RTC时代,由于实时交互要求更加严格,自研编解码虽然难度较大,但在研发能力较强的公司中也形成了趋势。
但归根结底,在推进上述工作时,软件始终是思维的起点,而从业者则有些忽视了硬件的适配。
SVT的全称是可扩展视频技术。它是开源项目Open Visual Cloud的重要组成部分。它针对多个Intel CPU进行了高度优化,因此在Intel硬件系统上其性能非常出色。 SVT设计最简单的初衷就是提高现代CPU多核的利用率。例如,依靠硬件的多核设计并行处理多帧,或者将图像分成块并行处理,从而大大加快处理速度。避免多核CPU 闲置的处理速度。
也许更知名的是后来的开源项目,名为SVT-AV1(GitHub地址:https://github.com/AOMediaCodec/SVT-AV1),AV1开源视频编码,由Intel、Google、Amazon、Cisco、Apple、Microsoft联合开发研发旨在提供比H.265更高效的压缩率,降低数据存储和网络传输的成本。
就在今年上半年,Intel发布了其用于CPU的开源编解码器SVT-AV1 1.0版本,相比0.8版本在性能上有了巨大的提升。
结束语
归根结底,虽然“摩尔定律”还在继续,但靠吃“硬件红利”来解决新应用场景的“甜蜜期”已经过去了。
今天我们需要了解的是以CPU、GPU、加速器、FPGA等硬件为核心的复合架构。也称为由标量、向量、矩阵和空间组成的SVMS架构。这一概念由Intel首先提出,并迅速成为业界最具主导性的硬件架构策略。
硬件之上的开发工具也存在同样的趋势。 Intel的oneAPI就是一个典型作品。但对于开发者工具来说,目前最重要的任务不是性能提升,而是生态和集成。
从硬件到基础软件再到开发者工具,整个基础设施层呈现出高度复杂的架构演进趋势,这不仅对架构师的工作提出了严峻的挑战,也给了所有架构师更大的发挥空间。对于架构师来说,最重要的是如何为自己的企业计算成本。在追求高性能和高可用性的同时,考虑并高度重视硬件才是重中之重。
点击《英特尔互联网行业音视频创新实践》即可前往Intel官网获取《英特尔互联网行业音视频创新实践》白皮书!
活动推荐
关于详解高并发软硬件一体化架构设计-51CTO.COM和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7505.html
用户评论
这个51CTO文章讲得真好,正好我最近在学习高并发架构设计。
有15位网友表示赞同!
软硬件一体化的方案听起来很高端,可以让我系统的了解一下这种架构的优势?
有8位网友表示赞同!
一直对高并发技术不太懂,看了标题觉得这篇文章应该能给我科普一下。
有10位网友表示赞同!
高并发场景下的系统设计我比较看重可靠性和性能,这家文章能否详细介绍呢?
有5位网友表示赞同!
软硬件一体化架构是不是比传统的架构更复杂一些?
有6位网友表示赞同!
51CTO的这篇文章估计很专业,希望能深入剖析一下各个环节。
有11位网友表示赞同!
想了解下这种高并发软硬件一体化架构在实际应用中的案例或者场景?
有18位网友表示赞同!
高并发系统的测试和监控也是一大难题吧,文章中会讲到吗?
有17位网友表示赞同!
软件和硬件的结合确实可以优化性能,期待文章深入讲解。
有7位网友表示赞同!
如果想学习高并发架构设计,这篇文章绝对是个宝藏资源!
有8位网友表示赞同!
软硬件一体化架构对开发工具链有哪些要求呢?
有13位网友表示赞同!
这种架构模式对不同类型的行业应用是否适用呢?
有10位网友表示赞同!
希望能看到一些最新的研究成果和趋势,以及未来的发展方向。
有19位网友表示赞同!
学习高并发架构不仅要了解理论知识,也需要积累实践经验,这篇文章能给我哪些启发?
有13位网友表示赞同!
想了解下如何评估软硬件一体化方案的效率和效果?
有11位网友表示赞同!
文章中会提及一些工具或者框架吗?我希望能有所启发。
有5位网友表示赞同!
高并发架构面临的一些常见挑战是哪些?
有14位网友表示赞同!
期待找到一些解决高并发问题的方法和技巧。
有12位网友表示赞同!
学习这方面知识对我的未来职业发展很有帮助!
有9位网友表示赞同!