欢迎访问深圳敏捷云计算科技有限公司!

甲骨文云-使用无服务器作业管理和临时计算工作节点处理媒体数据

2024-03-13 原创文章


处理大型媒体文件可能是一个资源密集型操作,需要大型计算形状来实现及时和高效的处理。在媒体处理请求可能是临时和按需的场景中,让实例在等待新工作时处于空闲状态并不划算。


通过利用Oracle Cloud Infrastructure(OCI)的无服务器功能,包括OCI Functions和OCI NoSQL,我们可以快速创建一个使用临时OCI Compute工作节点处理媒体内容的管理系统。


架构

这个参考架构展示了如何使用OCI计算实例处理数字媒体。它接收一个文件(一个“媒体资产”),对其执行计算密集型操作(例如,ffmpeg转码或其他处理功能),并将结果定向到一个输出存储桶,后续活动可以获取并使用这个输出。


作为作业创建的一部分,启动一个工作节点实例来处理上传的对象。然后,工作节点通过从源对象存储桶读取视频,转码视频,并将新版本上传到目的对象存储以供消费,来处理作业。成功上传到目的对象存储桶后,工作节点实例自行终止。


作业管理由OCI函数执行,作业状态存储在OCI NoSQL表中。每个作业启动一个使用抢占式容量的计算工作节点实例。如果没有可用的抢占式容量,工作节点将使用按需容量启动。定期运行健康检查以验证由于达到配额或限制而未被处理的任何作业是否被重试。所有作业管理都在中央记录,工作节点为无法处理的作业发送通知。


以下图表展示了这个参考架构。

此架构包含以下OCI资源:

区域

  • Oracle Cloud Infrastructure区域是一个地理定位区域,包含一个或多个数据中心,称为可用性域。区域彼此独立,相互之间可能相隔很远(跨越国家甚至大洲)。


对象存储

  • Oracle Cloud Infrastructure对象存储服务是一个互联网规模的高性能存储平台,提供可靠且成本效益高的数据持久性。对象存储服务可以存储无限量的非结构化数据,包括分析数据和丰富内容,如图片和视频。
  • 对象存储桶用作原始(源)和处理后媒体(目的地)的存储位置。


抢占式计算实例

  • 抢占式实例的行为与常规计算实例相同,但当需要在其他地方回收容量时,实例会被终止。如果您的工作负载具有容错能力并且能够承受中断,那么抢占式实例可以降低您的成本。例如,您可以使用抢占式实例为可以承受中断的工作负载优化成本,如可以停止并稍后恢复的测试。
  • 临时计算工作节点首先尝试使用抢占式实例启动。


函数

  • Oracle函数是一个完全托管的、多租户的、高度可扩展的、按需的函数即服务平台。它由Fn项目开源引擎驱动。函数使您能够部署代码,并直接调用它或响应事件触发它。Oracle函数使用托管在Oracle Cloud Infrastructure注册表中的Docker容器。
  • 使用Python编写的Oracle函数用于创建和监控媒体处理。


NoSQL

  • NoSQL数据库服务提供按需吞吐量和基于存储的配置,支持JSON、表和键值数据类型,所有这些都具有灵活的事务保证。
  • NoSQL数据库用于跟踪每个处理作业的状态。作业管理函数和临时计算工作节点在媒体处理工作流程中使用NoSQL表进行异步通信。


日志

  • Oracle Cloud Infrastructure日志服务是一个高度可扩展且完全托管的单一窗口,用于您租户中的所有日志。日志提供对Oracle Cloud Infrastructure资源的日志的访问。这些日志包括描述资源如何运行和被访问的关键诊断信息。
  • 日志组用作与作业管理相关的消息的集中位置。作业创建事件、工作节点启动状态、工作节点抢占和作业重试队列处理都被记录。


健康检查

  • Oracle Cloud Infrastructure健康检查服务为用户提供高频率的外部监控,以确定任何公共面向服务的可用性和性能,包括托管的网站、API端点或外部面向的负载均衡器。通过使用健康检查,用户可以确保他们立即意识到影响其客户的任何可用性问题。
  • 健康检查与API网关结合使用,定期检查可以重试的排队或中断作业。



此外,这个架构还包括以下组件,尽管在上面没有直接描述:


虚拟云网络(VCN)和子网

  • VCN是一个可定制的、软件定义的网络,您可以在Oracle Cloud Infrastructure区域中设置。与传统数据中心网络一样,VCN让您完全控制您的网络环境。VCN可以拥有多个不重叠的CIDR块,您可以在创建VCN后更改它们。您可以将VCN划分为子网,这些子网可以定位到一个区域或一个可用性域。每个子网由一系列不与VCN中其他子网重叠的地址组成。您可以在创建后更改子网的大小。子网可以是公共的或私有的。


IAM策略

  • Oracle Cloud Infrastructure身份和访问管理(IAM)让您控制谁可以访问您的云资源。策略是一个文档,指定谁可以访问哪些资源,以及如何访问。访问权限在组和区域级别授予,这意味着您可以编写一个策略,为组在特定区域或整个租户中提供特定类型的访问权限。如果您授权一个组访问租户,该组自动获得对租户内所有区域的相同类型的访问权限。


事件

  • Oracle Cloud Infrastructure事件允许您根据整个租户中资源的状态变化创建自动化。使用事件让您的开发团队在资源改变其状态时自动响应。


通知

  • Oracle Cloud Infrastructure通知服务通过发布-订阅模式向分布式组件广播消息,为托管在Oracle Cloud Infrastructure和外部的应用程序提供安全、高可靠、低延迟和持久的消息。使用通知在触发事件规则或违反警报时获得通知,或直接发布消息。


自定义镜像

  • Oracle Cloud Infrastructure使用镜像来启动实例。您在启动实例时指定要使用的镜像。您可以创建裸金属实例引导磁盘的自定义镜像,并用它来启动其他实例。从您的镜像启动的实例包括在创建镜像时的自定义、配置和安装的软件。


API网关

  • Oracle API网关服务使您能够发布带有私有端点的API,这些端点可以在您的网络内访问,并且如果需要,可以向公共互联网公开。端点支持API验证、请求和响应转换、CORS、身份验证和授权,以及请求限制。



建议

在使用无服务器作业管理和临时计算工作节点处理媒体时,以下建议可作为起点。您的要求可能与此处描述的架构不同。

VCN

  • 当您创建VCN时,根据您计划附加到VCN中的子网的资源数量,确定所需的CIDR块数量和每个块的大小。使用标准私有IP地址空间内的CIDR块。
  • 选择不与任何其他网络(在Oracle Cloud Infrastructure、您的本地数据中心或其他云提供商)重叠的CIDR块,以便您打算建立私有连接。
  • 在设计子网时,考虑您的流量流和安全要求。将同一特定层或角色内的所有资源附加到同一个子网,可以作为安全边界。


安全性

  • 使用Oracle Cloud Guard主动监控和维护您在Oracle Cloud Infrastructure中的资源安全。Cloud Guard使用您可以定义的探测器配方来检查资源的安全弱点,并监控操作员和用户的风险活动。当检测到任何配置错误或不安全活动时,Cloud Guard建议采取纠正行动,并基于响应者配方帮助采取这些行动。
  • 对于需要最高安全性的资源,Oracle建议您使用安全区。安全区是与Oracle定义的安全政策配方相关联的区域。例如,安全区中的资源不得从公共互联网访问,并且必须使用客户管理的密钥加密。在安全区中创建和更新资源时,Oracle Cloud Infrastructure会根据安全区配方中的政策验证操作,并拒绝违反任何政策的操作。


作业跟踪保留

  • OCI NoSQL能够在表行上设置生存时间(TTL)。使用TTL设置适当的作业保留期,以适应所执行的处理类型。


健康检查

  • OCI健康检查是基于时间的,根据所执行的处理类型设置适当的间隔。


临时工作节点

  • 工作节点应该从专门为所需的媒体处理类型设计的自定义镜像启动。实例应该在运行后自动开始处理,并且不允许建立任何外部连接。



考虑因素

在部署此参考架构时,请考虑以下几点。


OCI日志

  • 日志与许多OCI服务集成,并用于OCI函数内的简单日志记录。


OCI应用性能监控

  • 如果需要分布式跟踪等复杂函数交互功能,可以使用OCI应用性能监控。


作业跟踪

  • OCI NoSQL是一种轻量级的作业状态跟踪方法。当需要额外的功能时,可以用更高级的数据库服务替代。


抢占式计算

  • 临时工作节点使用抢占式容量启动。在所有地区,抢占式容量的成本比按需容量低50%,但并非所有计算形状都支持。

                           


部署

此参考架构的Terraform代码作为示例堆栈可在Oracle Cloud Infrastructure资源管理器中获取。您也可以从GitHub下载代码,并根据您的具体需求进行定制。

  • 使用Oracle Cloud Infrastructure资源管理器中的示例堆栈部署:
  1. 点击,如果您还未登录,请输入租户和用户凭证。
  2. 选择您想要部署堆栈的区域。按照屏幕上的提示和指示创建堆栈。
  3. 创建堆栈后,点击Terraform操作,并选择计划(Plan)。等待作业完成,并审查计划。
  4. 如需进行任何更改,请返回到堆栈详细信息页面,点击编辑堆栈,并进行必要的更改。然后,再次运行计划操作。
  5. 如果不需要进一步更改,请返回到堆栈详细信息页面,点击Terraform操作,并选择应用(Apply)。


  • 使用GitHub中的Terraform代码部署:访问GitHub。克隆或下载代码库到您的本地计算机。按照README文档中的说明操作。




开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。


Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。


利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。


Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。