方法指南:利用边缘计算实现低延迟直播流媒体服务

假设你的公司需要提供直播的流媒体服务,然而你们最近遇到了流量意外激增或中断的情况。那么你和你的团队可能就必须争分夺秒地排除故障修复延迟,毕竟这种中断可能会给观众带来严重问题,也会给你的团队带来巨大挑战。

问题的根源往往在于:你的云提供商是否有能力有效处理突然激增的流量,并在发生中断时重新路由流量?如果云提供商不能快速扩展资源以满足增加的需求,流媒体平台可能会在压力下崩溃,导致停机、内容交付滞后甚至完全崩溃。


通过投资可扩展的基础设施(如分布式服务器和基于云的解决方案),并利用边缘计算和强大的内容交付网络(CDN),即可确保用户享受不间断的直播体验,保证内容能够可靠地到达观众手中,并确保流媒体服务在竞争日益激烈的市场上保持声誉。

本文将介绍Akamai的很多客户为实现可靠流媒体服务而使用的工具。

充分利用Akamai的入网点

像Akamai这样的CDN平台会提供分散且本地化的边缘服务器,这些服务器会战略性地部署在最终用户附近。边缘服务器作为一种入网点(Points of presence,PoP),是中央数据中心和用户设备间的中间枢纽。当用户请求观看视频时,内容会从最近的边缘服务器发送,而不需要从中央数据中心传送。因此当流量较大时,这些服务器可以分摊流量并同时向不同地区的用户分发内容,并可避免出现延迟。

上图显示的是Akamai的分布式网络。这种架构在设计上能够动态扩展,以应对流量高峰和需求的波动。这种弹性确保了基础设施即便在最苛刻的条件下也能保持快速响应和弹性。这种更靠近用户的布局大幅缩短了内容到达设备所需的时间,从而可以降低延迟,为最终用户带来更流畅的流媒体观赏体验。

Akamai如何帮助直播流媒体服务降低延迟

为了向在线观众提供高质量体验,我们需要确保虚拟机不会为直播流增加额外的延迟。Akamai能够将线性直播和直播流的端到端延迟降低到10秒内。而这是通过下列几个方式实现的:

  1. 实时直播转码:实时直播转码系统需要进行扩展,以实时处理峰值视频负载。在转码过程中增加的任何延迟最终都会传递给最终用户,导致观看体验不尽如人意。
  2. 较小的分段尺寸:Akamai的架构能够可靠地处理基于HTTP的小分段(最短2秒)流媒体,使播放器能在带宽下降时快速切换,防止播放器停滞,并有效减少客户端缓冲区大小。
  3. HTTP分块编码传输:支持从摄取到边缘的分块编码传输,以便在数据可用时立即启动传输,这有助于最大限度地降低延迟。
  4. 从边缘预取:边缘服务器将为特定码率预取下一组片段,并缓存到本地,因为上一个片段已经接收并正在播放。这样可以随时提供片段,并降低额外延迟的风险。​

让我们深入看看我们的一位客户如何利用Akamai的这一流程来扩展他们的直播流媒体系统。

如何在边缘扩展直播流媒体服务

我们的直播流媒体机制是通过Akamai的Media Services Live(MSL)实现的。MSL旨在利用Akamai分布在不同地区的广泛边缘服务器网络,向全球受众高效分发直播的视频内容。

一起来看看上述参考架构。上图详细介绍了使用Akamai处理直播流媒体事件的摄取工作流程和分发工作流程。如果希望改进自己的直播流媒体服务,建议按照上图这样设置MSL来处理直播流媒体事件。

步骤1:编码和摄取

首先,我们需要在广播站点采集实时视频内容。获得内容后,需要设置一个编码器,将原始视频源转换为数字格式,如HTTP实时流媒体(HLS)或实时消息传输协议(RTMP)。然后使用Akamai的IAS(Ingest Acceleration Source),它可以通过Akamai的客户门户下载。IAS能从编码器获取数据流,并通过Akamai专有的UDP传输协议进行转发。然后需要对IAS进行配置,以便从编码器接收数据流。

接下来,我们需要在Akamai网络上设置Ingest Acceleration Target(IAT),并确保IAT配置为将数据流解码为原始格式。然后将IAT连接到Akamai的入口点软件,从而进行进一步处理。在编码和摄取阶段,很多人会遇到丢包问题。实时视频流对丢包非常敏感,丢包会降低视频流的质量,导致播放过程频繁缓冲,进而降低观看体验。但是使用Akamai平台进行直播流媒体的客户不会遇到这种情况,因为Akamai使用了基于UDP的加速技术,能够确保数据包更可靠、更快速地分发,即便在不稳定的网络条件下也能缓解丢包的影响。这项技术在直播流媒体过程中至关重要的另一个原因是:基于TCP的传统传输方式会因为拥塞控制和纠错机制而产生高延迟。直播流媒体要求低延迟,以保证观众能实时接收内容。Akamai基于UDP的加速可通过最大限度减少这些开销,提供更高吞吐量和更低延迟,这对于及时分发直播内容至关重要。

步骤2:中间层分发和可选的存储

接下来,我们需要将处理过的视频流导向Akamai的中间层服务器。这些服务器是摄取服务器和边缘分发网络之间的中介。中间层服务器会进一步分发视频流,确保视频流在整个网络的多个点之间进行复制和缓存,以平衡负载并提高冗余度。当云提供商处理实时流媒体时,正确处理负载平衡非常重要,否则就会在流程中出现瓶颈。当使用Akamai的边缘分发网络时,用户可以有效避免任何一台服务器成为瓶颈,确保没有任何一台服务器会因请求过多而不堪重负。这一点在高流量事件中尤为重要。

用户还可以选择将视频内容存储在Akamai的NetStorage系统中。NetStorage可确保内容始终可用,并可在需要时快速检索。这提供了一种可扩展的安全存储解决方案,可用作备份或点播等场景。


步骤3:Origin Shield

接下来,我们会将视频发送到Origin Shield。Origin Shield在摄取服务器和Akamai CDN之间起到了缓冲作用,有助于应对流量峰值。在高峰期或观众人数意外激增时,Origin Shield可处理增加的负载,防止摄取服务器不堪重负。这样就可以确保系统能容纳大量观众,而不会出现性能下降的问题。Origin Shield还能优化缓存效率。通过增加额外的缓存层,Origin Shield可减少请求回源的频率。这就降低了源服务器的负载,节省了带宽,加快了向最终用户交付内容的速度。对于最终用户来说,这意味着可以更快地访问内容、降低延迟并增强观看体验。

步骤4:交付配置和最终用户交付

接下来,是分发内容的时候了。当我们在全球范围内向不同地区分发内容时,可能会遇到不同网络条件、监管要求或观众偏好。为解决这个问题,我们的客户使用了Akamai Delivery Accounts。Akamai Delivery Accounts可以理解为分发内容时的不同配置和设置,借此,内容提供商可以针对每个地区配置不同设置,如缓存策略、安全协议和分发优化。每个分发帐户都可以根据地区、设备或内容类型的需要进行个性化设置。这一点很重要,因为内容提供商始终需要能在多个分发渠道上高效灵活地分发内容。

最后,视频内容将通过电脑、智能手机、平板电脑和智能电视等各种设备传送给最终用户。边缘服务器会以最小延迟将视频流传输到播放器设备,确保流畅和高质量的观看体验。

总结

在构建实时流媒体解决方案时,有很多事情需要考虑。首先,必须考虑延迟和缓冲问题,尤其是在实时传输重要的直播活动时。高延迟会导致实时直播延迟,进而让最终用户不满。此外我们还需要考虑丢包问题,丢包会降低视频质量甚至导致中断。如果出现丢包,最终用户将难以忍受不一致、不可靠的数据流,从而导致糟糕的观看体验。最后,还必须能够进行扩展和负载平衡。我们可能会面临服务器过载和崩溃的问题,导致服务中断,无法有效地处理峰值负载。Akamai优化的分发网络通过基于UDP的加速、摄取网络和可扩展的CDN解决了所有这些问题。

将Akamai用于直播流媒体可确保高效、可扩展和低延迟地分发直播视频流,为最终用户提供良好体验。通过Akamai将处理能力推向网络边缘,还可进一步优化流媒体服务性能,提高可扩展性。

欢迎关注AkamaiCSDN机构号,进一步了解Akamai针对视频直播业务量身定制的解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/42151.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据库入门

目录 前言 一、安装软件 二、普通指令使用 三、MySQL接口API相关函数 1、API函数使用步骤 2、mysql_init-MYSQL对象初始化 3、mysql_real_connect()——数据库引擎建立连接 4、mysql_close()——关闭数据库连接 5、mysql_query()——查询数据库某表内容 6、mysql_stor…

K8S学习之基础五十七:部署代码扫描工具sonarqube

部署代码扫描工具sonarqube 拉取postgres、sonarqube镜像,在harbor上创建postgres、sonarqube项目,将镜像上传至harbordocker pull postgres docker pull sonarqube docker tat postgres:latest 172.16.80.140/postgres/postgres:latest docker tat sona…

个人学习编程(3-24) 数据结构

括号的匹配&#xff1a; if((s[i]) && now() || (s[i]] && now[)){ #include <bits/stdc.h>using namespace std;int main() {char s[300];scanf("%s",&s);int i;int len strlen(s);stack <char> st;for (i 0; i < len; i){if(…

Redis6为什么引入了多线程?

大家好&#xff0c;我是锋哥。今天分享关于【Redis6为什么引入了多线程&#xff1f;】面试题。希望对大家有帮助&#xff1b; Redis6为什么引入了多线程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 6 引入了多线程的主要目的是为了提升 Redis…

电力物联网数据采集装置 高精度电能计量表

摘要 随着现代电力系统的复杂化和负荷多样化&#xff0c;电能质量问题日益突出。高精度电能质量监测装置在配电系统中的应用&#xff0c;可以有效监测和分析谐波、不平衡、电压暂升暂降等电能质量问题&#xff0c;为电网优化运行和故障诊断提供重要数据支持。本文以APM电能质量…

element-plus中,Tour 漫游式引导组件的使用

目录 一.Tour 漫游式引导组件的简单介绍 1.作用 2.基本使用 3.展示效果 二.实战1&#xff1a;介绍患者病历表单 1.要求 2.实现步骤 3.展示效果 结语 一.Tour 漫游式引导组件的简单介绍 1.作用 快速了解一个功能/产品。 2.基本使用 从官网复制如下代码&#xff1a; &…

【Unity网络编程知识】使用Socket实现简单TCP通讯

1、Socket的常用属性和方法 创建Socket TCP流套接字 Socket socketTcp new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 1.1 常用属性 1&#xff09;套接字的连接状态 socketTcp.Connected 2&#xff09;获取套接字的类型 socketTcp.So…

【C++游戏引擎开发】《线性代数》(1):环境配置与基础矩阵类设计

一、开发环境配置 1.1 启用C 20 在VS2022中新建项目后右键项目 1.2 启用增强指令集 1.3 安装Google Test vcpkg安装使用指南 vcpkg install gtest:x64-windows# 集成到系统目录&#xff0c;只需要执行一次&#xff0c;后续安装包之后不需要再次执行 vcpkg integrate inst…

Flutter完整开发实战详解(一、Dart语言和Flutter基础)

前言 在如今的 Flutter 大潮下&#xff0c;本系列是让你看完会安心的文章。本系列将完整讲述&#xff1a;如何快速从0开发一个完整的 Flutter APP&#xff0c;配套高完成度 Flutter 开源项目 GSYGithubAppFlutter。同时也会提供一些 Flutter 的开发细节技巧&#xff0c;并针对…

Spring 事件监听机制介绍以及源码分析

在复杂的业务系统中&#xff0c;模块间的过度耦合往往会导致代码维护困难、扩展性受限。Spring 事件监听机制基于观察者模式&#xff0c;提供了一种优雅的解耦方案&#xff0c;使得组件间通过事件驱动实现松耦合通信。这种机制不仅被 Spring 框架内部使用&#xff08;如容器生命…

【VSCode的安装与配置】

目录&#xff1a; 一&#xff1a;下载 VSCode二&#xff1a;安装 VSCode三&#xff1a;配置 VSCode 一&#xff1a;下载 VSCode 下载地址&#xff1a;https://code.visualstudio.com/download 下载完成之后&#xff0c;在对应的下载目录中可以看到安装程序。 二&#xff1a;安装…

2024年认证杯SPSSPRO杯数学建模C题(第二阶段)云中的海盐全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 C题 云中的海盐 原题再现&#xff1a; 巴黎气候协定提出的目标是&#xff1a;在2100年前&#xff0c;把全球平均气温相对于工业革命以前的气温升幅控制在不超过2摄氏度的水平&#xff0c;并为1.5摄氏度而努力。但事实上&#xff0c;许多之前的…

Scala基础语法与简介

对象 -对象有属性和行为。例如&#xff1a;一只狗的状属性有&#xff1a;颜色&#xff0c;名字&#xff0c;行为有&#xff1a;叫、跑、吃等。对象是一个类的实例。 类 -类是对象的抽象&#xff0c;而对象是类的具体实例。 方法 -方法描述的基本的行为&#xff0c;一个类可以…

鸿蒙UI开发

鸿蒙UI开发 本文旨在分享一些鸿蒙UI布局开发上的一些建议&#xff0c;特别是对屏幕宽高比发生变化时的应对思路和好的实践。 折叠屏适配 一般情况&#xff08;自适应布局/响应式布局&#xff09; 1.自适应布局 1.1自适应拉伸 左右组件定宽 TypeScript //左右定宽 Row() { …

BeeWorks:为企业打造专网部署即时通讯解决方案

在数字化快速发展的今天&#xff0c;企业的沟通与协作越来越依赖于高效的即时通讯工具。然而&#xff0c;保障信息安全和数据隐私也变得愈发重要。这种情况下&#xff0c;专网部署即时通讯软件成为许多企业的首要选择。BeeWorks作为一款优质的专网部署即时通讯软件&#xff0c;…

uniapp笔记-swiper组件实现轮播图

思路 主要就是参考 swiper | uni-app官网 实现轮播图。 实例 新建一个banner.vue通用组件。 代码如下&#xff1a; <template><view>轮播图</view> </template><script> </script><style> </style> 随后在index.vue中导…

企业在人工智能创新与安全之间走钢丝

2025 年全球 AI/ML 工具使用量将激增&#xff0c;企业将 AI 融入运营之中&#xff0c;员工也将 AI 嵌入日常工作流程中。报告显示&#xff0c;企业对 AI/ML 工具的使用同比增长 3,000% 以上&#xff0c;凸显了各行各业迅速采用 AI 技术&#xff0c;以提升生产力、效率和创新水平…

vue - [Vue warn]: Duplicate keys detected: ‘0‘. This may cause an update error.

问题描述&#xff1a; vue项目中&#xff0c;对表单数组赋值时&#xff0c;控制台抛出警告&#xff1a; 问题代码&#xff1a; 问题分析&#xff1a; 1、Vue 要求每个虚拟 DOM 节点必须有唯一的 key。该警告信息通常出现在使用v-for循环的场景中&#xff0c;多个同级节点使用…

Containerd+Kubernetes搭建k8s集群

虚拟机环境设置&#xff0c;如果不是虚拟机可以忽略不看 1、安装配置containerd 1.1 添加 Kubernetes 官方仓库 安装cri-tools的时候需要用到 cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] nameKubernetes baseurlhttps://mirrors.aliyun.com/kub…

ubuntu服务器server版安装,ssh远程连接xmanager管理,改ip网络连接。图文教程

ventoy启动服务器版iso镜像&#xff0c;注意看server名称&#xff0c;跟之前desktop版ubuntu不一样。没有gui界面。好&#xff0c;进入命令行界面。语言彻底没汉化了&#xff0c;选英文吧&#xff0c;别的更看不懂。 跟桌面版ubuntu类似&#xff0c;选择是否精简系统&#xff0…