Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Elabora i file su Oracle Cloud Infrastructure Object Storage con un flusso cloud nativo scalabile
Introduzione
Nelle nostre applicazioni, abbiamo spesso bisogno di elaborare grandi quantità di file. In passato, questo è stato fatto in batch, ma con le nuove tecnologie e l'avvento del cloud, ora siamo in grado di trasformare molti processi seriali in processi paralleli. L'uso di code di messaggi, cluster Kubernetes e architetture basate sugli eventi sono alcune delle tecnologie e delle architetture ampiamente utilizzate per ottenere il meglio dall'elaborazione di grandi volumi.
Oracle Cloud Infrastructure (OCI) dispone di risorse per consentire scalabilità e riduzione dei costi. Esaminiamo i servizi cloud nativi.
-
OCI Object Storage consente ai clienti di memorizzare in modo sicuro qualsiasi tipo di dati nel suo formato nativo. Grazie alla ridondanza integrata, OCI Object Storage è la soluzione ideale per creare applicazioni moderne che richiedono scalabilità e flessibilità, in quanto possono essere utilizzate per consolidare più origini dati a scopo di analisi, backup o archiviazione.
-
Il servizio OCI Streaming è una piattaforma di streaming di eventi in tempo reale, serverless e compatibile con Apache Kafka per sviluppatori e data scientist. Lo streaming è completamente integrato con OCI, Database, GoldenGate e Integration Cloud. Il servizio offre inoltre integrazioni pronte all'uso per centinaia di prodotti di terze parti in categorie quali DevOps, database, Big Data e applicazioni SaaS.
-
OCI Events Service tiene traccia delle modifiche apportate alle risorse utilizzando eventi conformi allo standard Cloud Native Computing Foundation (CNCF). Gli sviluppatori possono rispondere alle modifiche apportate in tempo reale attivando il codice con OCI Functions, registrando su OCI Streaming o inviando avvisi utilizzando OCI Notifications.
-
OCI Functions è un servizio di elaborazione serverless che consente agli sviluppatori di creare, eseguire e scalare le applicazioni senza gestire alcuna infrastruttura. OCI Functions dispone di integrazioni native con altri servizi OCI e applicazioni SaaS. OCI Functions si basa sul progetto Fn open source, quindi gli sviluppatori possono creare applicazioni che possono essere facilmente trasferite in altri ambienti cloud e on-premise. Il codice basato sulle funzioni in genere viene eseguito per brevi periodi di tempo, è senza conservazione dello stato e viene eseguito per un singolo scopo logico. I clienti pagano solo per le risorse che utilizzano.
-
Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) è un servizio Kubernetes gestito che semplifica le operazioni Kubernetes su larga scala e di livello aziendale. Riduce i tempi, i costi e gli sforzi necessari per gestire una complessa infrastruttura Kubernetes. OKE consente di distribuire i cluster Kubernetes per garantire operazioni affidabili sul piano di controllo e sui nodi di lavoro con ridimensionamento, aggiornamenti e patch di sicurezza automatici. Inoltre, OKE offre un'esperienza Kubernetes completamente serverless con nodi virtuali.
In questo tutorial vedremo un modo molto comune di elaborare grandi quantità di file, in cui le applicazioni possono depositare i propri file in un bucket in OCI Object Storage e quando questi file vengono depositati, viene generato un evento che consente di attivare una funzione per scrivere l'URL di questo file in OCI Streaming.
Nota: possiamo immaginare questa soluzione solo con alcune applicazioni di origine che salvano il contenuto dei file in OCI Streaming mentre la nostra applicazione legge solo questo contenuto, ma non è una buona prassi trasferire grandi volumi di dati all'interno di una coda Kakfa. Per fare questo, il nostro approccio utilizzerà un pattern chiamato Claim-Check, che farà esattamente come la nostra proposta, invece di inviare il file attraverso la coda dei messaggi, invieremo il riferimento a questo file. Delegheremo la lettura del file all'applicazione che sarà incaricata di elaborarlo.
Questa esercitazione include i seguenti componenti: OCI Object Storage, Events Service, Functions e Streaming.
Alla fine di questa catena, avremo l'applicazione che consuma la coda di streaming, tuttavia, non discuteremo come verrà elaborato il file.
Obiettivi
- Implementa un'architettura di eventi scalabile che consentirà l'elaborazione di un gran numero di file tramite l'uso di OCI Object Storage, Events Service, Functions e Streaming.
Prerequisiti
-
VNC, subnet e tutte le impostazioni di sicurezza configurate per bucket, funzione e streaming.
-
Utente Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) configurato per gestire bucket, servizio eventi, funzione e streaming.
Task 1: creare l'istanza di streaming OCI
OCI Streaming è un servizio di streaming gestito simile a Kafka. Possiamo sviluppare applicazioni utilizzando le API Kafka e gli SDK comuni sul mercato. In questo task, creeremo un'istanza di OCI Streaming e la configureremo per essere eseguita in entrambe le applicazioni per pubblicare e utilizzare un elevato volume di dati.
-
Eseguire il login a OCI Console, fare clic su Analytics e AI e Streams.
-
Selezionare Compartimento e fare clic su Crea flusso.
-
Immettere il Nome flusso dell'istanza di flusso e mantenere gli altri parametri con i valori predefiniti. Fare clic su Crea per inizializzare l'istanza e attendere lo stato Attivo.
Nota:
-
Nel processo di creazione dello streaming è possibile selezionare Crea automaticamente un pool di flussi predefinito, in modo che il pool predefinito venga creato automaticamente.
-
Puoi creare l'istanza di flusso in una subnet privata. In questo caso, l'attenzione per la funzione nel task 4 deve essere sulla stessa subnet privata o in una subnet che ha accesso all'istanza di flusso della subnet privata. Controllare la VCN, le subnet, gli elenchi di sicurezza, il gateway di servizi o altri componenti di sicurezza. Assicurarsi che la funzione possa accedere all'istanza di streaming OCI.
-
-
Fare clic sul collegamento DefaultPool.
-
Fare clic su Impostazioni di connessione Kafka e visualizzare le impostazioni di connessione. Prendere nota delle informazioni necessarie nei task successivi.
Task 2: creare un bucket di storage degli oggetti OCI
Dobbiamo creare un bucket. I bucket sono container logici per la memorizzazione degli oggetti, pertanto tutti i file utilizzati per questa demo verranno memorizzati in questo bucket.
-
Aprire la console OCI e passare a Storage, Bucket. Nella sezione Bucket selezionare Compartimento. Il compartimento sarà uguale all'istanza di streaming OCI creata nel task 1.
-
Fare clic su Crea gruppo e immettere un valore in Nome gruppo. Mantenere gli altri parametri con i valori predefiniti e fare clic su Crea.
Possiamo vedere il bucket creato.
Nota: rivedere i criteri IAM OCI per il bucket. Se si desidera utilizzare questi bucket nelle applicazioni demo, è necessario impostare i criteri. Per ulteriori informazioni, consulta la panoramica dello storage degli oggetti e i criteri IAM OCI.
Task 3: attivare il bucket di storage degli oggetti OCI per i servizi OCI Events
È necessario abilitare il bucket per emettere eventi. Pertanto, fare clic sui dettagli del bucket e cercare il collegamento Emetti modifica eventi oggetto, quindi attivarlo.
Task 4: Crea funzioni OCI
Per eseguire il task seguente, scaricare il codice da qui: OCI_Streaming_Claim_Check.zip.
-
Comprendere il codice
Sono disponibili due file di codice, il codice principale
HelloFunction.java
e il codice del producer OCI StreamingProducer.java
.-
HelloFunction.java
.In questa parte del codice, dobbiamo acquisire i dati provenienti dai servizi OCI Events, quindi ci sono 3 fonti.
- Contesto: questa proprietà utilizza cm dalla variabile RuntimeContext e la variabile
REGION
. - Dati evento: OCI Events Services produce dati come
resourceName
. - Dati aggiuntivi sui dettagli degli eventi: OCI Events Services per OCI Object Storage produce i dati come
namespace
ebucketName
.
È possibile eseguire il MOUNT dell'URL del file di storage degli oggetti OCI.
Inoltre, il codice principale può passare l'URL al producer di streaming OCI.
- Contesto: questa proprietà utilizza cm dalla variabile RuntimeContext e la variabile
-
Producer.java
.Struttura di classe
Message
per produrre le informazioni Kafka per il pattern Claim-check. Solokey
evalue
.E questo è il codice di base da produrre per lo streaming.
-
-
Crea e distribuisci la funzione OCI
In questo passo, sarà necessario utilizzare l'interfaccia CLI OCI per creare le funzioni OCI e distribuire il codice nella tenancy OCI. Per creare una funzione OCI, vedere Funzioni: Introduzione all'uso dell'interfaccia CLI, seguire i passi e cercare l'opzione Java. È necessario creare la funzione con le seguenti informazioni.
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
Ricordare il compartimento in cui è stata distribuita la funzione. Queste informazioni saranno necessarie per configurare il servizio OCI Events.
Task 5: configurare gli eventi OCI
Configurare una regola evento per attivare la funzione in modo da ottenere le informazioni sul bucket e inviarle a OCI Streaming.
-
Selezionare lo stesso compartimento per la regola e fare clic su Crea regola.
-
Immettere le informazioni riportate di seguito.
-
Nella sezione Condizione regole.
- Condizione:
Event Type
. - Nome servizio:
Object Storage
. - Tipo di evento:
Object-Create, Object-Delete, Object-Update
.
- Condizione:
-
Nella sezione Azione.
- Tipo di azione:
Functions
. - Compartimento funzione:
<your function compartment name>
. - Applicazione funzione:
<your function app, in this example ocistreaming-app>
. - Funzione:
fn_stream
.
- Tipo di azione:
-
Task 6: Prova il tuo circuito di eventi
Nota: per le reti private, il codice di test deve essere eseguito in un bastion connesso alla stessa subnet privata del servizio di streaming OCI.
Nel pacchetto del codice sorgente OCI_Streaming_Claim_Check.zip è possibile trovare una cartella denominata monitoring
e un file denominato consume.py
. Possiamo utilizzare questo codice per monitorare e testare se la soluzione funziona correttamente.
Dobbiamo configurare il codice.
Dopo aver configurato i parametri del flusso, è possibile eseguire il codice e verificare il circuito, ovvero bucket, evento, funzione e streaming.
Collegamenti correlati
Conferme
- Autore - Cristiano Hoshikawa (Solution Engineer Oracle LAD A-Team)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Process Files on Oracle Cloud Infrastructure Object Storage with a Scalable Cloud Native Flow
F94112-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.