写点什么

云上应用技术架构 - CDN、流媒体、边缘计算

作者:深蓝
  • 2023-11-20
    北京
  • 本文字数:6163 字

    阅读完需:约 20 分钟

链接:https://github.com/svc-design/ebooks/

概述

在我们前几章的讨论中,我们已经详细探讨了 LNMP、缓存与消息队列,以及负载均衡的各种应用场景和实现方式。这些技术都是构建高效、可扩展和可靠的网络服务的重要工具。然而,随着互联网技术的不断发展,我们面临的挑战也在不断变化和升级。在这一章中,我们将把视线转向更为前沿的技术领域,深入研究 CDN、流媒体和边缘计算,并从应用场景的角度进行详细介绍。

  • CDN (内容分发网络):是一种用于优化网络内容传输的技术。通过将内容缓存在全球各地的服务器上,CDN 可以将内容更快、更安全地送达到用户手中。CDN 对于处理大规模静态和动态内容的分发(例如网页、视频和 API 调用)特别有效。

  • 流媒体:是一种让用户能够在线观看视频或听取音频的技术,而无需完全下载整个文件。流媒体技术允许数据在传输过程中被消费,这对于实时或近实时的应用(如直播、在线游戏和远程会议)至关重要。

  • 边缘计算:是一种新兴的计算范式,它将数据处理任务从中心化的数据中心移向网络的边缘。通过在离用户更近的地方处理数据,边缘计算可以减少延迟,提高服务质量,并为物联网和移动应用提供更好的支持。

当我们比较这些技术与我们之前讨论的缓存、消息队列和负载均衡时,我们可以看到它们都是为了解决网络服务中的性能和可扩展性问题。然而,它们关注的重点有所不同:

  • 缓存和消息队列 主要关注如何优化单个服务或应用的性能。它们通过减少重复工作和平滑负载来提高效率。

  • 负载均衡 则关注如何在多个服务器或服务之间分配工作。它通过分散负载来提高服务的可用性和响应时间。

  • CDN 和流媒体 则关注如何优化数据传输。它们通过近距离传输和实时传输来提供更好的用户体验。

  • 边缘计算 则关注如何优化大规模、分布式网络中的数据处理。它通过将计算任务移向网络边缘来减少延迟和提高服务质量。在接下来的内容中,我们将深入探讨这些前沿技术,并进一步理解它们是如何改变我们理解和设计网络服务的。

CDN(Content Delivery Network)

CDN,即内容分发网络,是一种通过在现有的 Internet 中增加一层新的网络结构,将网站的内容分发到最接近用户的服务器,使用户可以就近取得所需内容,解决了 Internet 集中化架构带来的网络瓶颈和阻塞问题。

CDN 常见加速类型俄如下:

静态内容加速主要用于提高网站中静态资源(如 CSS、JavaScript、图片等)的加载速度。CDN 通过在全球范围内的节点服务器上缓存这些静态资源,使得用户可以从最近的节点获取资源,从而大大提升了加载速度和用户体验。

  • 动态内容加速:

动态内容加速主要用于优化动态生成的内容(如数据库查询结果、个性化网页等)的加载速度。CDN 通过优化网络路由,减少服务器和用户之间的网络延迟,从而提高动态内容的加载速度。此外,部分 CDN 服务还提供动态内容的缓存功能,进一步提升了加载速度。

  • 流媒体加速:

流媒体加速主要用于提高音视频流媒体的播放质量。CDN 通过在节点服务器上缓存音视频数据,并优化数据传输路径,使得用户可以从最近的节点获取数据,避免了因网络拥塞导致的缓冲和卡顿。

  • 应用程序接口(API)加速:

API 加速主要用于提高 API 请求的响应速度。CDN 通过在节点服务器上缓存 API 响应,或者优化 API 请求的网络路由,使得用户可以更快地获取 API 响应。这对于依赖 API 请求的 Web 应用和移动应用来说非常重要。

  • SSL/TLS 加速:

SSL/TLS 加速主要用于提高使用 SSL/TLS 加密的网站的连接速度。CDN 通过在节点服务器上进行 SSL/TLS 握手和解密操作,使得这些操作不再需要在源服务器上进行,从而减少了源服务器的负载,并提高了用户的连接速度。

应用场景

  • 视频流媒体:为了提供更好的观看体验,视频流媒体公司常常使用 CDN 来减少延迟和数据包丢失。

  • 大型网站:对于用户量大、数据流量大的网站,如社交媒体、电子商务网站等,使用 CDN 可以有效降低服务器负载,提高网页响应速度。

  • 在线游戏:在线游戏需要快速、稳定的网络环境,CDN 可以提供稳定的网络连接和低延迟的数据传输。

适用范围

  • 适用场景:

流量大、用户分布广的网站或应用。

对速度和稳定性要求高的应用,如在线游戏、视频流媒体等。

需要处理大量静态内容的网站,如图片、CSS、JavaScript 文件等。

  • 不适用场景:

小型网站或应用,流量小、用户集中,使用 CDN 可能无法得到明显效果,甚至可能因为 CDN 的成本而不划算。

对实时性要求极高的应用,如股票交易等,因为 CDN 在传输过程中会有一定延迟。

优缺点与弊端

  • 优点:

提高了网站响应速度和访问质量。

降低了源服务器的负载。

提高了网站的可用性和稳定性。

可以有效防止 DDoS 攻击。

  • 缺点:

成本较高,小型网站可能无法承受。

实时性较差,不适合需要实时交互的应用。

内容更新有一定延迟。

应用架构的适配

使用 CDN 服务后,应用的架构可能会涉及以下几个方面的调整和变化:

  • 资源的引用方式在使用 CDN 服务后,静态资源(如 CSS、JavaScript、图片等)的 URL 可能需要改为 CDN 服务提供的 URL。这通常可以通过修改应用的配置文件或代码来实现。

  • 内容更新策略由于 CDN 节点会缓存内容,因此当源站的内容更新后,可能需要采取一定的策略来保证 CDN 节点上的内容也能及时更新。这可能涉及到设置缓存策略、使用版本控制等。

  • SSL/TLS 证书如果网站使用了 HTTPS,那么可能需要将 SSL/TLS 证书安装到 CDN 服务上,以保证用户在访问 CDN 节点时也能获得安全的连接。

  • 动态内容的处理对于动态内容,可能需要考虑是否使用 CDN 进行加速,以及如何进行加速。一种常见的做法是将动态内容和静态内容分开处理:静态内容通过 CDN 加速,动态内容直接从源站获取。

  • DNS 解析:使用 CDN 服务后,可能需要修改 DNS 设置,使得用户的请求可以被正确地路由到最近的 CDN 节点。

  • 监控和日志:使用 CDN 服务后,可能需要对 CDN 的性能和可用性进行监控,并收集 CDN 的访问日志,以便进行分析和故障排查。

以上是一些常见的调整和变化,具体情况可能会根据应用的特性和所选用的 CDN 服务而有所不同。

各类 CDN 服务参考

这个表格列出了不同类型的 CDN 服务,它们的服务名称以及它们在各种加速类型上的支持情况。这些信息可以帮助用户根据自己的需求选择合适的 CDN 服务。

注意:这里的“√”表示对应的 CDN 服务支持该加速类型。实际上,不同 CDN 服务在这些加速类型上的具体实现和性能可能会有所不同,用户在选择时还需要考虑其他因素,如价格、性能、可靠性、安全性,国内国外可用加速节点分布等。

流媒体 (Streaming Media)

流媒体是一种可以在下载的同时播放的多媒体技术。它允许用户在下载完成之前开始观看视频或听音频,这对于实时应用(如直播)和大文件(如电影)非常有用。

应用场景

  • 实时直播:如新闻直播、游戏直播、教育直播等。

  • 视频点播:如网站视频、电影、电视剧等。

  • 网络音乐:如在线音乐播放、音乐点播等。

  • 远程教育:如在线课程、网络讲座等。

应用场景

  • 适用场景:需要实时或近实时传输的场景,如直播、远程会议等。需要大规模分发的场景,如视频点播、网络音乐等。

  • 不适用场景:数据安全性要求极高的场景,流媒体传输可能存在被截取和篡改的风险。对延迟敏感的实时交互应用,虽然流媒体可以做到低延迟,但不如实时通信协议如 WebRTC 的延迟低。

优缺点与弊端

优点:

提高用户体验:用户无需等待整个文件下载完成就能开始播放。

节省带宽:只传输用户实际观看的部分,而不是整个文件。

缺点:

对网络质量要求高:如果网络带宽不足或者网络不稳定,可能会导致缓冲或者播放中断。

可能存在版权问题:流媒体技术使得内容的复制和分发变得更容易,可能引发版权问题。

流媒体开源软件、商业软件和 SaaS 服务

应用架构的适配

使用流媒体服务后,应用架构可能需要进行以下几种适配与调整:

  • 资源引用方式:可能需要将应用中对静态资源(如视频文件)的引用方式改为流媒体服务提供的 URL。

  • 内容更新策略:由于流媒体服务可能会对内容进行缓存,因此可能需要考虑如何在内容更新时保证用户能够获取到最新的内容。这可能涉及到设置缓存策略、使用版本控制等。

  • 实时交互:如果应用需要支持实时交互(如直播评论),可能需要引入额外的实时通信技术(如 WebSockets 或 WebRTC)。

  • 编码和解码:不同的流媒体服务可能支持不同的编码格式,可能需要对应用进行适配。

以上适配和调整并不特定于某种编程语言或框架,所有语言(如 Java、PHP、Python、Node.js、Vue.js、React、Go、Rust、C/C++、Ruby 等)在使用流媒体服务时都可能需要进行这些适配和调整。具体需要进行哪些适配和调整取决于应用的具体需求以及所选用的流媒体服务。

流媒体服务类型对比

以上信息仅供参考,具体服务的功能可能会有所变化。在选择使用哪种服务时,需要考虑你的具体需求和预算。

流媒体客户端支持对比参考

当然,以下是关于 SaaS 服务在不同客户端和操作系统中支持程度的对比表格:

流媒体服务开发库、框架和 SDK 参考

当然,以下是使用 Markdown 格式整理的对接流媒体服务在开发中,涉及到的开发库、框架和 SDK 等:

请注意,这个表格可能并不全面,而且各个服务的支持程度可能会随着版本的更新而变化。

边缘计算 (Edge Computing)

边缘计算是一种计算模型,将数据处理任务尽可能靠近数据源的地方进行,以减少网络延迟和带宽使用。

应用场景

  • 物联网(IoT)设备数据处理

  • 实时数据处理,如自动驾驶、智能工厂等

  • 内容分发网络(CDN)

  • 远程医疗、远程教育

  • AR/VR

适用场景与不适用场景

适用场景:

  • 需要实时处理数据的场景

  • 网络带宽有限或者网络延迟要求高的场景

  • 数据处理和存储需要在本地进行的场景

不适用场景:

  • 数据处理并不需要实时进行的场景

  • 网络带宽充足,数据可以在云端处理的场景

  • 数据安全性要求极高,需要在安全的数据中心进行处理的场景

优缺点与弊端

优点:

  • 降低了网络延迟,提高了数据处理速度

  • 减少了数据传输的带宽需求

  • 提高了数据的隐私和安全性

缺点:

  • 硬件和管理成本相比云计算可能更高

  • 可能需要对应用进行特殊设计和优化

  • 分布式设备管理和维护可能更复杂

边缘计算 开源软件、商业软件和 SaaS 服务,

开源软件:OpenStack, Apache Edgent, Eclipse ioFog, StarlingX

商业软件:VMware vSphere, Microsoft Azure Stack, AWS Greengrass, IBM Edge Application Manager

云厂商服务:AWS Outposts, Google Anthos, Azure Stack Edge, 阿里云 边缘计算, 腾讯云 边缘计算

云服务提供商及其边缘计算托管服务对比参考

以下是一些主要的云服务提供商及其边缘计算托管服务的相关信息:

请注意,这些云服务提供商可能还支持其他网络协议,具体取决于服务和使用场景。此外,这些信息可能会随着时间和技术的发展而变化,所以建议您直接查阅各个服务提供商的官方文档以获取最准确和最新的信息。

应用架构的适配

使用边缘计算后,应用架构可能需要考虑以下几个方面的适配和调整:

  • 数据同步:边缘节点和云端之间的数据同步策略

  • 故障恢复:边缘节点可能会遇到网络断开、设备故障等问题,需要有相应的故障恢复策略

  • 安全性:边缘节点可能更容易受到物理攻击,需要考虑数据加密等安全措施

  • 网络优化:根据网络条件动态调整数据传输策略

  • 设备管理:需要有设备注册、认证、更新、监控等功能

不同的编程语言和框架可能会有不同的解决方案。例如,Java 可以使用 Spring Cloud Gateway 进行 API 路由,Python 可以使用 Flask 进行轻量级 Web 服务开发,Node.js 可以使用 Express 进行 Web 服务开发,Vue.js 和 React 可以构建用户界面,Go 和 Rust 可以用于高性能的系统编程,C/C++可以用于底层的设备驱动开发,Ruby 可以用于快速的 Web 开发。

容器云原生时代的边缘计算。

  • 容器化与边缘计算

容器化技术,如 Docker 和 Kubernetes,使得应用程序和其运行环境能够一同打包,从而实现在不同环境中的无缝部署。这对于边缘计算非常有用,因为边缘设备的运行环境往往各不相同。通过使用容器化技术,开发者可以确保他们的应用程序在任何设备上都能正常运行。

  • 云原生与边缘计算

云原生是一种构建和运行应用程序的方法,它利用了云计算的优势。云原生应用程序通常是以微服务的形式构建,并且在容器中运行。同时,它们也被设计为自动扩展和恢复。

对于边缘计算来说,云原生提供了一种方式,使得在边缘设备上运行的应用程序能够利用云计算的优势。例如,通过使用云原生技术,开发者可以将一个大型应用程序分解为多个小型的微服务,并且在需要的时候自动扩展这些服务。

  • 容器化和云原生边缘计算的开源软件和服务

  • KubeEdge: 一个开源系统,将本地容器化的应用程序扩展到 Host 在 Edge 上的 IoT 设备。

  • OpenYurt: 阿里巴巴开源的边缘计算项目,它基于 Kubernetes 进行设计,可以提供对在边缘环境中运行的应用程序的统一管理。

  • AWS Greengrass: AWS 提供的服务,允许你在边缘设备上运行本地计算、消息传递和数据缓存。

  • Google Cloud IoT Edge: Google 提供的服务,可以将 AI 和其他处理工作推送到边缘设备上。

  • Azure IoT Edge: 微软提供的服务,可以在边缘设备上运行云工作负载。

以上这些都是适配了容器化和云原生技术的边缘计算解决方案。通过使用这些解决方案,开发者可以更轻松地在边缘环境中部署和管理他们的应用程序。

CDN、流媒体、边缘计算三者的关联

CDN(Content Delivery Network)、流媒体和边缘计算是现代网络架构中的三个重要组成部分,它们之间有着紧密的关联。

CDN(内容分发网络):CDN 是一种网络基础设施,通过在全球各地部署节点服务器,将网站内容、视频、游戏和应用程序等静态和动态数据内容分发至离用户最近的节点,从而加快数据访问速度,提高用户体验。CDN 是流媒体和边缘计算的重要基础设施。

流媒体:流媒体是一种可以让用户在线实时观看视频或听取音频的技术。流媒体通常会依赖于 CDN 进行内容的分发,以确保用户可以快速、无延迟地观看视频或听取音频。而在边缘计算的架构中,流媒体处理(如编码、转码、打包等)也可以在离用户更近的边缘节点上进行,进一步提高用户体验。

边缘计算:边缘计算是一种计算架构,将数据处理任务尽可能靠近数据源的地方进行,以减少网络延迟和带宽使用。在 CDN 和流媒体的环境中,边缘计算可以提供更快的内容交付和更高效的流媒体处理。例如,通过在 CDN 的边缘节点上进行流媒体处理,可以减少数据在网络中的传输距离,提高流媒体的播放质量。

总的来说,CDN、流媒体和边缘计算三者之间的关联主要表现在:CDN 为流媒体提供了高效的内容分发手段,而边缘计算则可以进一步优化内容分发和处理的效率和性能。

CDN、流媒体、边缘计算的未来

随着软硬件技术的不断发展以及终端设备性能的提升,Wasm 和 eBPF 在 CDN、流媒体和边缘计算中可能会带来以下的变化和影响:

  1. 更强的终端设备计算能力:随着终端设备性能的提升,Wasm 可以使更多的高性能应用在终端设备上运行。这可能会改变 CDN 和流媒体的工作方式,例如,更多的内容处理(如视频解码和渲染)可以在用户设备上进行,而不是在服务器端。这样可以减少网络传输的负载,降低延迟,提高用户体验。

  2. 更智能的网络服务:eBPF 可以帮助开发者更好地理解和控制网络行为。例如,通过 eBPF,开发者可以在边缘计算节点上实现更智能的流量管理和负载均衡策略。这将使 CDN 和流媒体服务更加高效和可靠。

  3. 更丰富的边缘计算应用:结合 Wasm 和 eBPF,开发者可以在边缘计算节点上运行更复杂的应用程序和服务。例如,可以在边缘节点上运行机器学习模型进行实时分析,或者运行游戏服务器为用户提供低延迟的游戏体验。

  4. 更高的安全性:Wasm 和 eBPF 都提供了沙箱环境,以保护主机系统不受恶意代码的影响。这对于 CDN、流媒体和边缘计算非常重要,因为它们需要处理来自互联网的各种数据。

随着 Wasm 和 eBPF 的发展,我们可以期待未来的 CDN、流媒体和边缘计算将变得更加智能、高效和安全。

发布于: 刚刚阅读数: 5
用户头像

深蓝

关注

还未添加个人签名 2018-08-28 加入

还未添加个人简介

评论

发布
暂无评论
云上应用技术架构- CDN、流媒体、边缘计算_深蓝_InfoQ写作社区