Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al completar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Procesar archivos en Oracle Cloud Infrastructure Object Storage con un flujo nativo en la nube escalable
Introducción
En nuestras aplicaciones, a menudo necesitamos procesar grandes cantidades de archivos. En el pasado, esto se hacía en forma de lote, pero con las nuevas tecnologías y la llegada de la nube, ahora podemos transformar muchos procesos en serie en procesos paralelos. El uso de colas de mensajes, clusters de Kubernetes y arquitecturas controladas por eventos son algunas de las tecnologías y arquitecturas ampliamente utilizadas para obtener lo mejor del procesamiento de gran volumen.
Oracle Cloud Infrastructure (OCI) tiene recursos para permitir la escalabilidad y la reducción de costos. Vamos a explorar los servicios nativos en la nube.
-
OCI Object Storage permite a los clientes almacenar de forma segura cualquier tipo de datos en su formato nativo. Con redundancia integrada, OCI Object Storage es ideal para crear aplicaciones modernas que requieren escalabilidad y flexibilidad, ya que se pueden utilizar para consolidar varios orígenes de datos con fines de análisis, copia de seguridad o archivado.
-
El servicio OCI Streaming es una plataforma de transmisión de eventos en tiempo real, sin servidor y compatible con Apache Kafka para desarrolladores y científicos de datos. Streaming está totalmente integrado con OCI, Database, GoldenGate e Integration Cloud. El servicio también ofrece integraciones inmediatas para cientos de productos de terceros en categorías como DevOps, bases de datos, big data y aplicaciones SaaS.
-
El servicio OCI Events realiza un seguimiento de los cambios realizados en los recursos mediante eventos que cumplen con el estándar de eventos en la nube de Cloud Native Computing Foundation (CNCF). Los desarrolladores pueden responder a los cambios realizados en tiempo real mediante la activación de código con OCI Functions, la grabación en OCI Streaming o el envío de alertas mediante OCI Notifications.
-
OCI Functions es un servicio informático sin servidor que permite a los desarrolladores crear, ejecutar y escalar aplicaciones sin gestionar ninguna infraestructura. OCI Functions tiene integraciones nativas con otros servicios de OCI y aplicaciones SaaS. OCI Functions se basa en el proyecto Fn de código abierto, por lo que los desarrolladores pueden crear aplicaciones que se pueden migrar fácilmente a otros entornos locales y en la nube. El código basado en funciones normalmente se ejecuta durante cortos períodos de tiempo, no tiene estado y se ejecuta con una única finalidad lógica. Los clientes solo pagan por los recursos que utilicen.
-
Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) es un servicio de Kubernetes gestionado que simplifica las operaciones de Kubernetes empresariales a gran escala. Reduce el tiempo, el costo y el esfuerzo necesarios para gestionar la infraestructura compleja de Kubernetes. OKE le permite desplegar clusters de Kubernetes para garantizar operaciones fiables en el plano de control y los nodos de trabajador con ampliación automática, actualizaciones y parches de seguridad. Además, OKE ofrece una experiencia de Kubernetes totalmente sin servidor con nodos virtuales.
En este tutorial, veremos una forma muy común de procesar grandes cantidades de archivos, donde las aplicaciones pueden depositar sus archivos en un cubo en OCI Object Storage y cuando se depositan estos archivos, se genera un evento que permite que se dispare una función para escribir la URL de este archivo en OCI Streaming.
Nota: Podemos imaginar esta solución solo con una aplicación de origen que guarde el contenido de los archivos en OCI Streaming mientras nuestra aplicación solo lee este contenido, pero no es una buena práctica transferir grandes volúmenes de datos dentro de una cola Kakfa. Para ello, nuestro enfoque utilizará un patrón denominado Claim-Check, que hará lo mismo que nuestra propuesta, en lugar de enviar el archivo a través de la cola de mensajes, enviaremos la referencia a este archivo. Delegaremos la lectura del archivo a la aplicación que se encargará de tramitarlo.
En este tutorial se mostrarán estos componentes: OCI Object Storage, Events Service, Functions y Streaming.
Al final de esta cadena, tendremos la aplicación consumiendo la cola de transmisión, sin embargo, no analizaremos cómo se procesará el archivo.
Objetivos
- Implante una arquitectura de eventos escalable que permita procesar un gran número de archivos mediante el uso de OCI Object Storage, Events Service, Functions y Streaming.
Requisitos
-
VNC, subredes y toda la configuración de seguridad configurada para el cubo, la función y el flujo.
-
Usuario de Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) configurado para gestionar cubos, servicios de eventos, funciones y flujos.
Tarea 1: Creación de la instancia de OCI Streaming
OCI Streaming es un servicio de transmisión gestionado similar a Kafka. Podemos desarrollar aplicaciones mediante las API de Kafka y los SDK comunes del mercado. En esta tarea, crearemos una instancia de OCI Streaming y la configuraremos para que se ejecute en ambas aplicaciones a fin de publicar y consumir un gran volumen de datos.
-
Conéctese a la consola de OCI, haga clic en Análisis e IA y Flujos.
-
Seleccione Compartimento y haga clic en Crear flujo.
-
Introduzca el nombre de flujo de la instancia de flujo y mantenga los demás parámetros con los valores por defecto. Haga clic en Crear para inicializar la instancia y esperar al estado Activo.
Nota:
-
En el proceso de creación de flujos, podemos seleccionar Creación automática de un pool de flujos por defecto, por lo que el pool por defecto se creará automáticamente.
-
Puede crear su instancia de flujo en una subred privada. En este caso, la función de la tarea 4 debe estar en la misma subred privada o en una subred que tenga acceso a la instancia de flujo de subred privada. Compruebe la VCN, las subredes, las listas de seguridad, el gateway de servicio u otros componentes de seguridad. Asegúrese de que la función puede acceder a la instancia de OCI Streaming.
-
-
Haga clic en el enlace DefaultPool.
-
Haga clic en Configuración de conexión de Kafka y vea la configuración de conexión. Anote la información como es necesaria en las siguientes tareas.
Tarea 2: Creación de un cubo de OCI Object Storage
Necesitamos crear un cubo. Los cubos son contenedores lógicos para almacenar objetos, por lo que todos los archivos utilizados para esta demostración se almacenarán en este cubo.
-
Abra la consola de OCI y vaya a Almacenamiento, Cubos. En la sección Cubos, seleccione Compartimento; el compartimento será el mismo que la instancia de OCI Streaming creada en la tarea 1.
-
Haga clic en Create Bucket e introduzca un Bucket Name. Mantenga los otros parámetros con los valores por defecto y haga clic en Create.
Podemos ver el cubo creado.
Nota: Revise las políticas de OCI IAM para el cubo. Debe configurar las políticas si desea utilizar estos cubos en las aplicaciones de demostración. Para obtener más información, consulte Visión general de Object Storage y Políticas de OCI IAM.
Tarea 3: Activación del cubo de OCI Object Storage para los servicios OCI Events
Necesitamos activar el cubo para que emita eventos. Por lo tanto, haga clic en los detalles del cubo y busque el enlace Emitir edición de eventos de objeto y actívelo.
Tarea 4: Creación de funciones de OCI
Para ejecutar la siguiente tarea, descargue el código desde aquí: OCI_Streaming_Claim_Check.zip.
-
Descripción del código
Hay dos archivos de código, el código principal
HelloFunction.java
y el código de productor de OCI StreamingProducer.java
.-
HelloFunction.java
.En esta parte del código, necesitamos capturar datos procedentes de OCI Events Services, por lo que hay 3 orígenes.
- Contexto: esta propiedad proviene de RuntimeContext y utilizamos la variable
REGION
. - Datos de eventos: OCI Events Services produce datos como
resourceName
. - Datos adicionales de detalles de evento: OCI Events Services para OCI Object Storage produce datos como
namespace
ybucketName
.
Podemos montar la URL del archivo de OCI Object Storage.
Y el código principal puede transferir la URL al productor de OCI Streaming.
- Contexto: esta propiedad proviene de RuntimeContext y utilizamos la variable
-
Producer.java
.Esta es la estructura de clase
Message
para producir la información de Kafka para el patrón Comprobación de reclamación. Solokey
yvalue
.Y este es el código básico para producir a la transmisión.
-
-
Creación y despliegue de la función OCI
En este paso, necesitaremos utilizar la CLI de OCI para crear OCI Functions y desplegar el código en su arrendamiento de OCI. Para crear una función de OCI, consulte Funciones: introducción al uso de la CLI, siga los pasos y busque la opción Java. Debe crear la función con la siguiente información.
Application: ocistreaming-app (follow the link Functions: Get Started using CLI) fn create app ocistreaming-app --annotation oracle.com/oci/subnetIds='["<the same OCID of your streaming subnet>"]' Context Variable: REGION=<your streaming region name, ex: us-ashburn-1> fn config app ocistreaming-app REGION=us-ashburn-1
Recuerde el compartimento en el que ha desplegado la función. Necesitará esta información para configurar el servicio OCI Events.
Tarea 5: Configuración de OCI Events
Vamos a configurar una regla de evento para disparar la función a fin de obtener la información del cubo y enviarla a OCI Streaming.
-
Seleccione el mismo compartimento para la regla y haga clic en Crear regla.
-
Introduzca la siguiente información.
-
En la sección Condición de reglas.
- Condición:
Event Type
. - Nombre de servicio:
Object Storage
. - Tipo de evento:
Object-Create, Object-Delete, Object-Update
.
- Condición:
-
En la sección Acción.
- Tipo de acción:
Functions
. - Compartment:
<your function compartment name>
. - Aplicación de función:
<your function app, in this example ocistreaming-app>
. - Función:
fn_stream
.
- Tipo de acción:
-
Tarea 6: Prueba del circuito de eventos
Nota: Para las redes privadas, el código de prueba se debe ejecutar en un bastión conectado a la misma subred privada de OCI Streaming.
En el paquete de código fuente OCI_Streaming_Claim_Check.zip, podemos encontrar una carpeta denominada monitoring
y un archivo denominado consume.py
. Podemos utilizar este código para monitorear y probar si la solución funciona correctamente.
Necesitamos configurar el código.
Después de configurar los parámetros de flujo, puede ejecutar el código y verificar el circuito, que es el cubo, el evento, la función y el flujo.
Enlaces relacionados
Confirmaciones
- Autor: Cristiano Hoshikawa (ingeniero de soluciones de equipo A de Oracle LAD)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Process Files on Oracle Cloud Infrastructure Object Storage with a Scalable Cloud Native Flow
F94110-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.