部署事件触发的无服务器应用程序
Oracle Functions 是一个无服务器、高度可扩展、完全托管的平台,它基于 Oracle Cloud Infrastructure 构建,并且由 Fn 项目开源引擎提供支持。开发人员可以使用它来编写和部署可提供业务价值的代码,而不必担心如何预配或管理底层基础设施。Oracle Functions 是容器原生的函数,打包为 Docker 容器映像。
体系结构
下图说明了此参考体系结构。
![下面是 serverless-oci.png 的说明 下面是 serverless-oci.png 的说明](img/serverless-oci.png)
插图 serverless-oci.png 的说明
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 部署:
- 在 GitHub 中使用 Terraform 代码部署:
- 转至 GitHub。
- 将资料档案库克隆或下载到本地计算机。
- 按照
README
文档中的说明进行操作。