部署事件触发的无服务器应用程序

Oracle Functions 是一个无服务器、高度可扩展、完全托管的平台,它基于 Oracle Cloud Infrastructure 构建,并且由 Fn 项目开源引擎提供支持。开发人员可以使用它来编写和部署可提供业务价值的代码,而不必担心如何预配或管理底层基础设施。Oracle Functions 是容器原生的函数,打包为 Docker 容器映像。

体系结构

此引用体系结构使用 Oracle Cloud Infrastructure Events 服务调用 Oracle Functions,该服务自动响应对 Oracle Cloud Infrastructure Object Storage 所做的更改。将示例映像上载到对象存储会触发事件服务,而事件服务又会调用 Oracle FunctionsFn 项目支持大多数编程语言。此体系结构在函数中使用 Java 从上载的映像提取元数据并将其存储在 Oracle Cloud Infrastructure Object Storage 中。

下图说明了此参考体系结构。

下面是 serverless-oci.png 的说明
插图 serverless-oci.png 的说明

serverless-oci-oracle.zip

Oracle Functions 体系结构包含以下组件:

  • 区域

    Oracle Cloud Infrastructure 区域是一个本地化地理区域,包含一个或多个称为可用性域的数据中心。区域独立于其他区域,大片距离可以分开(跨国家甚至大陆)。

  • 可用性域

    可用性域是区域内的独立数据中心。每个可用性域中的物理资源都与其他可用性域中的资源隔离,从而提供容错能力。可用性域不共用电源或冷却设备等基础设施,也不共享内部可用性域网络。因此,一个可用性域出现故障不太可能影响区域中的其他可用性域。

  • 虚拟云网络 (VCN) 和子网

    VCN 是在 Oracle Cloud Infrastructure 区域中设置的可定制软件定义的网络。与传统的数据中心网络类似,VCN 允许您完全控制您的网络环境。VCN 可以有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 细分为多个子网,这些子网可以限定于某个区域或可用性域。每个子网都包含与 VCN 中的其他子网不重叠的连续地址范围。您可以在创建子网后更改其大小。子网可以是公共的,也可以是专用的。

    此引用体系结构中的函数部署在公共区域子网中。

  • Oracle Functions

    Oracle Functions 允许您部署代码、直接调用代码或触发代码来响应事件。当事件服务调用 Oracle Functions 时,会触发 Oracle Functions,处理映像并将元数据存储回对象存储。Oracle Functions 使用 Oracle Cloud Infrastructure Registry 上托管的 Docker 容器。

  • 事件

    Oracle Cloud Infrastructure 服务发出事件,这些事件是指示资源更改的结构化消息。事件包括创建、读取、更新或删除 (CRUD) 操作、资源生命周期状态更改以及影响资源的系统事件。当备份完成或失败时,或者添加、更新或删除对象存储桶中的文件时,可以发出事件。

  • 对象存储

    Oracle Cloud Infrastructure Object Storage 是一个 Internet 级高性能存储平台,可提供可靠、经济高效的数据持久性。对象存储可以存储任意内容类型的非结构化数据,包括分析数据和丰富的内容,例如图像和视频。两个不同的存储层满足频繁访问的“热”存储(标准)和访问频率较低的“冷”存储(归档)的需求。标准对象存储用于您需要快速、立即、频繁地访问的数据。归档存储服务适用于您很少或很少访问的数据,但必须保留这些数据并保留很长时间。

建议

您的要求可能与此处介绍的体系结构有所不同。可将以下建议作为起点。

  • VCN

    创建 VCN 时,请根据您计划附加到 VCN 中的子网的资源数量确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。

    创建 VCN 后,可以更改、添加和删除其 CIDR 块。

    此体系结构使用公共 VCN 来部署函数。该函数托管在 VCN 中的公共区域子网上。您还可以使用专用 VCN。在这种情况下,必须使用 NAT 网关访问 Internet。

  • Oracle Functions

    在此体系结构中,使用 Java 编程来开发函数。由于 Fn 项目支持多种编程语言,因此可以使用您选择的语言开发和部署函数。

  • 对象存储

    此体系结构使用标准对象存储上载映像并存储映像,以便事件服务可以在创建对象时选取它。对象存储用于在函数处理后存储对象的元数据。

  • 事件

    在此体系结构中,Oracle Cloud Infrastructure Events 服务配置为监听创建对象存储时的更改。在对象上载到对象存储并调用函数进行处理后,将调用该服务。

考虑事项

  • 可用性

    事件服务在政府云领域内的区域不可用。

  • 可管理性

    此体系结构使用示例 Java 应用程序编写函数。但是,您可以使用您选择的编程语言。

  • 安全性

    使用策略限制可以访问您公司拥有的 Oracle Cloud Infrastructure 资源的人员以及访问方式。

    对于对象存储,默认启用加密且无法关闭加密。

    对 Oracle Functions 中部署函数的所有访问权限都通过 Oracle Cloud Infrastructure Identity and Access Management (IAM) 控制。IAM 允许将函数管理和函数调用权限分配给特定用户和用户组。

  • 成本

    您只需为函数运行时使用的资源付费。

部署

GitHub 中提供了此引用体系结构的 Terraform 代码。只需单击一下即可将代码拉入 Oracle Cloud Infrastructure Resource Manager,然后创建堆栈并进行部署。或者,也可以使用 Terraform 命令行界面 (command line interface, CLI) 将代码从 GitHub 下载到您的计算机,定制代码并部署体系结构。

  • 使用 Oracle Cloud Infrastructure Resource Manager 部署:
    1. 单击 部署到 Oracle Cloud

      如果尚未登录,请输入租户和用户身份证明。

    2. 复核并接受条款和条件。
    3. 选择要部署堆栈的区域。
    4. 按照屏幕上的提示和说明创建堆栈。
    5. 创建堆栈后,单击 Terraform 操作 ,然后选择 计划
    6. 等待作业完成,然后复核计划。

      要进行任何更改,请返回到“堆栈详细信息”页,单击 编辑堆栈 ,然后进行所需的更改。然后,再次运行 计划 操作。

    7. 如果不需要进一步更改,请返回到“堆栈详细信息”页,单击 Terraform 操作 ,然后选择 应用
  • 在 GitHub 中使用 Terraform 代码部署:
    1. 转至 GitHub
    2. 将资料档案库克隆或下载到本地计算机。
    3. 按照 README 文档中的说明进行操作。

更改日志

此日志仅列出重大更改: