注意:

使用可扩展的云原生流在 Oracle Cloud Infrastructure Object Storage 上处理文件

简介

在我们的应用程序中,我们经常需要处理大量文件。过去,这是以批处理形式完成的,但随着新技术和云的出现,我们现在能够将许多串行进程转换为并行进程。使用消息队列、Kubernetes 集群和事件驱动架构是一些广泛用于充分利用大量处理的技术和架构。

Oracle Cloud Infrastructure (OCI) 提供资源来帮助企业降低可扩展性和成本。让我们来了解一下云原生服务。

在本教程中,我们将看到处理大量文件的常见方式,其中应用程序可以将文件存放在 OCI 对象存储的存储桶中,当这些文件被存放时,将生成一个事件,允许触发函数将此文件的 URL 写入 OCI 流处理。

注:我们可以想象,只有一些源应用在 OCI Streaming 中保存文件内容,而我们的应用仅读取此内容,但是在 Kakfa 队列中传输大量数据并不是一个好做法。为此,我们的方法将使用一个名为 Claim-Check 的模式,该模式将完全按照我们的建议执行,而不是通过消息队列发送文件,而是发送对此文件的引用。我们会将读取文件委托给负责处理该文件的应用程序。

本教程将介绍以下组件:OCI 对象存储、事件服务、函数和流处理。

在这个链的结尾,我们将让应用程序使用流队列,但是,我们不会讨论如何处理文件。

img.png

目标

先决条件

任务 1:创建 OCI 流处理实例

OCI Streaming 是一个 Kafka 类型的托管流处理服务。我们可以在市场上使用 Kafka API 和通用 SDK 开发应用。在此任务中,我们将创建 OCI 流处理实例,并将其配置为在两个应用中执行,以发布和使用大量数据。

  1. 登录到 OCI 控制台,单击分析和 AI

  2. 选择区间,然后单击创建流

    创建 - stream.png

  3. 输入流实例的流名称,并使用默认值保留其他参数。单击创建以初始化实例并等待活动状态。

    save-create-stream.png

    注:

    • 在流处理创建过程中,我们可以选择自动创建默认流池,因此将自动创建默认池。

    • 您可以在专用子网中创建流实例。在这种情况下,请注意任务 4 中的函数,它必须位于同一专用子网中,或者位于有权访问专用子网流实例的子网中。检查您的 VCN、子网、安全列表、服务网关或其他安全组件。请确保您的函数可以访问 OCI 流处理实例。

  4. 单击 DefaultPool 链接。

    default-pool-option.png

  5. 单击 Kafka 连接设置并查看连接设置。请记下以下信息,因为这些信息在后续任务中是必需的。

    流连接 -settings.png

    kafka-conn.png

任务 2:创建 OCI 对象存储桶

我们需要创建一个存储桶。存储桶是用于存储对象的逻辑容器,因此用于此演示的所有文件都将存储在此存储桶中。

  1. 打开 OCI 控制台并导航到存储存储桶。在存储桶部分中,选择区间,区间将与在任务 1 中创建的 OCI 流处理实例相同。

    select-compartment.png

  2. 单击创建组并输入组名称。保留其他参数的默认值,然后单击创建

    创建 - bucket.png

    我们可以看到创建的存储桶。

    存储桶 -dataflow.png

    注:查看存储桶的 OCI IAM 策略。如果您要在演示应用中使用这些存储桶,则需要设置策略。有关详细信息,请参阅对象存储概述OCI IAM 策略

任务 3:为 OCI 事件服务激活 OCI 对象存储存储桶

我们需要启用存储桶以发出事件。因此,单击存储桶详细信息并搜索发出对象事件编辑链接并激活它。

img_8.png

任务 4:创建 OCI 函数

要执行以下任务,请从此处下载代码:OCI_Streaming_Claim_Check.zip

任务 5:配置 OCI 事件

让我们配置事件规则来触发函数以获取存储桶信息并将其发送到 OCI Streaming。

  1. 为规则选择相同的区间,然后单击创建规则

    img_10.png

  2. 输入以下信息。

    1. 规则条件部分中。

      • 条件:Event Type
      • 服务名:Object Storage
      • 事件类型:Object-Create, Object-Delete, Object-Update
    2. 操作部分中。

      • 操作类型:Functions
      • 函数区间:<your function compartment name>
      • 函数应用程序:<your function app, in this example ocistreaming-app>
      • 函数:fn_stream

    img_9.png

任务 6:测试您的事件电路

注:对于专用网络,需要在连接到 OCI 流处理的同一专用子网的堡垒中执行测试代码。

OCI_Streaming_Claim_Check.zip 源代码包中,可以找到名为 monitoring 的文件夹和名为 consume.py 的文件。我们可以使用此代码来监控和测试解决方案是否正常工作。

我们需要配置代码。

img_11.png

配置流参数后,您可以运行代码并验证电路,即存储桶、事件、函数和流处理。

img_12.png

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心