Carichi di lavoro dei lavori batch

IBM Cloud® Code Engine è una piattaforma senza server completamente gestita che esegue i tuoi carichi di lavoro inseriti nel contenitore, inclusi i carichi di lavoro batch o i carichi di lavoro dell'applicazione. Per saperne di più sull'esecuzione di lavori batch, consultare Code Engine.

Che cosa sono i carichi di lavoro dei lavori batch?

Un lavoro in Code Engine esegue una o più istanze del tuo codice eseguibile. A differenza delle applicazioni, che gestiscono le richieste HTTP, i lavori sono progettati per essere eseguiti una sola volta e uscire, in modo da liberare le risorse per eseguire il carico di lavoro.

Puoi ridimensionare i lavori batch definendo più istanze. I workload possono essere suddivisi in attività parallele per ridurre i tempi di elaborazione. È possibile impostare il lavoro da eseguire con un nuovo tentativo automatico per indirizzare i carichi di lavoro non riusciti in un'istanza del lavoro. Puoi attivare i lavori batch manualmente, in modo programmatico e tramite eventi, come gli eventi Object Storage.

Quando si crea un lavoro, è possibile specificare le informazioni di configurazione del workload che vengono utilizzate ogni volta che il lavoro viene eseguito.

I carichi di lavoro tipici dei lavori batch includono:

  • Formazione del modello di macchina
  • Analisi dei file, come l'analisi vocale o il riconoscimento delle immagini
  • Comprimere o decomprimere i file
  • Archiviazione delle informazioni

Quando si crea un lavoro, è possibile specificare le informazioni di configurazione del carico di lavoro che vengono utilizzate ogni volta che viene eseguito il lavoro.

Qual è il ciclo di vita di un lavoro batch?

Quando si inoltra un lavoro batch, viene eseguito fino al completamento. Generalmente, i lavori batch richiamano i dati di input, svolgono attività di calcolo e memorizzano i risultati in PDS (persistent data store). Quando il lavoro batch viene completato, le risorse utilizzate per eseguire il lavoro vengono rimosse e non viene sostenuto alcun costo per le risorse in standby.

Cosa sono gli array di lavori e gli stati degli array di lavori?

La specifica dell'array del lavoro fa parte del lavoro e della configurazione dell'esecuzione del lavoro. Un array di lavori ha due funzioni:

  • Determina il numero di istanze concorrenti avviate per l'esecuzione del lavoro.
  • Consente al codice utente di determinare la parte di lavoro che ogni istanza deve eseguire in base all'indice dell'array individuale fornito.

Specificare un array di lavori in base alle dimensioni dell'array o a un insieme di indici dell'array:

  • Se si specifica una dimensione dell'array con un valore pari a n, il numero di istanze avviate per l'esecuzione del lavoro è pari a n. A ogni istanza viene fornito un indice dell'array (0, 1, 2 e così via, fino a n-1 ), utilizzando la variabile d'ambiente JOB_INDEX. La variabile d'ambiente JOB_ARRAY_SIZE è impostata su n, a meno che non venga specificato un valore particolare.

  • Se si specifica un insieme di uno o più indici di array, il numero di istanze avviate corrisponde al numero di indici. Ogni istanza viene dotata di uno degli indici specificati utilizzando la variabile d'ambiente JOB_INDEX. La variabile d'ambiente JOB_ARRAY_SIZE viene impostata sul numero di indici specificati, a meno che non si specifichi un valore particolare.

La variabile d'ambiente JOB_ARRAY_SIZE è disponibile anche per il codice utente e, per impostazione predefinita, è impostata sul numero di indici.

Se un'istanza termina con un codice di ritorno positivo, lo stato dell'indice dell'array associato passa a completed. Altrimenti, Code Engine avvia una nuova istanza per lo stesso indice, se il numero di tentativi configurato non è ancora stato superato. Se un'istanza fallisce e non sono consentiti altri tentativi, l'indice dell'array associato cambia il suo stato in failed.

Quali sono le funzioni principali dell'utilizzo dei lavori batch Code Engine ?

Esamina i seguenti argomenti per ulteriori informazioni sull'utilizzo dei lavori batch in Code Engine.

Isolamento

Code Engine è un servizio regionale a più tenant in cui i tenant condividono la stessa rete e infrastruttura di calcolo. In particolare, la rete e l'infrastruttura di elaborazione sono risorse condivise e alcuni componenti di gestione sono comuni a tutti i tenant. Tuttavia, i tenant e i loro carichi di lavoro sono isolati l'uno dall'altro utilizzando progetti Code Engine. Code Engine impedisce la comunicazione tra progetti, fornendo l'isolamento alle tue applicazioni all'interno di un ambiente a più tenant. Inoltre, esistono controlli di accesso eseguiti a livello di risorsa per consentire solo agli utenti autorizzati di eseguire determinate operazioni sulle risorse del progetto, come le applicazioni o altri carichi di lavoro Code Engine.

Per ulteriori informazioni sull'isolamento del carico di lavoro, vedi Isolamento del carico di lavoroCode Engine.

Registrazione

Quando si lavora con i lavori Code Engine nella console con i log abilitati, i log vengono inoltrati a un'istanza del servizio IBM Cloud Logs associata al progetto Code Engine. Nell'istanza del servizio IBM Cloud Logs, i log sono indicizzati, consentendo la ricerca full-text di tutti i messaggi generati e una comoda interrogazione basata su campi specifici. Consultare Richiamo dei log per i lavori.

Le informazioni sugli eventi di sistema possono essere utili anche per risolvere i problemi quando si eseguono i lavori. Puoi visualizzare le informazioni sugli eventi di sistema con la CLI. Consultare Richiamo delle informazioni sugli eventi di sistema per i lavori.

Per ulteriori informazioni, vedi Visualizzazione dei log.

Accodamento

I lavori batch inoltrati vengono automaticamente accodati e si trovano in uno stato in sospeso fino a quando non vengono inviati. I lavori batch vengono eseguiti in base alle risorse di elaborazione disponibili come definito dal progetto Code Engine. I lavori batch che si trovano in uno stato pending possono essere rimossi dalla coda. Puoi monitorare i lavori batch in sospeso, in esecuzione o completati utilizzando la console o la CLI (command - line interface) Code Engine.

Tentativi

Ogni istanza di lavoro viene eseguita fino al completamento. Tuttavia, il codice del carico di lavoro potrebbe rilevare un errore durante l'esecuzione del job. Quando un'istanza del lavoro viene completata con un codice di ritorno diverso da zero, Code Engine riavvia l'istanza del lavoro. Con Code Engine, puoi specificare di limitare il numero di nuovi tentativi per evitare di riavviare istanze di lavoro non riuscite.

Esecuzione di lavori batch

Se il tuo codice esiste come origine in un file locale o in un repository Git o se il tuo codice è un'immagine del contenitore presente in un registro pubblico o privato, Code Engine fornisce un modo semplificato per eseguire il tuo codice come un lavoro.

Puoi creare ed eseguire i lavori batch in Code Engine nei modi seguenti:

Per ulteriori informazioni, consultare Gestione dei lavori.

Ridimensionamento

Un lavoro in Code Engine (lavoro batch) è costituito da una o più istanze di lavoro. Mentre le istanze di lavoro vengono eseguite indipendentemente l'una dall'altra, eseguono lo stesso codice. Si supponga di avere un database con 100 record da analizzare. È possibile eseguire il lavoro in modo che ogni istanza del lavoro analizzi 10 record ciascuno. Ad esempio, la prima istanza di lavoro analizza i record da 0 a 9, la seconda istanza di lavoro può analizzare i record da 10 a 19 e così via. In questo esempio, ogni istanza di lavoro riceve il parametro di input del job fornito dal sistema JOB_INDEX come una variabile di ambiente che è possibile utilizzare per calcolare l'intervallo di record di database da analizzare per ciascuna istanza di lavoro. Il numero di istanze del lavoro viene specificato quando il lavoro batch viene inoltrato.

Quando si esegue un lavoro batch, durante il tempo di avvio, le istanze del lavoro potrebbero restare in uno stato in sospeso man mano che le istanze vengono avviate. I tempi in sospeso per le istanze di lavoro possono variare a causa del sistema e dell'infrastruttura di rete, poiché il sistema si adatta per soddisfare le richieste di risorse relative a questa esecuzione del lavoro. Se l'infrastruttura del sistema sta rispondendo a una richiesta di utilizzo elevato, il risultato potrebbe essere un ritardo di più minuti dell'avvio per i job perché le istanze del job vengono fornite solo nel tempo.

Condizione

Un lavoro batch si trova nello stato Succeeded quando tutte le istanze di esecuzione lavoro sono completate.

Un lavoro batch si trova nello stato Failed dopo che una o più istanze di esecuzione del lavoro hanno raggiunto il limite di tentativi. Inoltre, se un lavoro impiega troppo tempo per essere completato, il lavoro si trova nello stato Failed ogni volta che viene raggiunto il tempo massimo di esecuzione. Per ulteriori informazioni, consultare stato del lavoro.

Inoltro di lavori batch simili

Quando si crea un lavoro, è possibile specificare le informazioni di configurazione del carico di lavoro che vengono utilizzate ogni volta che viene eseguito il lavoro. Quando si utilizza una serie comune di informazioni di configurazione per i lavori batch, con Code Engine, è possibile specificare ulteriori parametri con l'inoltro del lavoro per sovrascrivere i parametri del lavoro batch per questo specifico inoltro del lavoro.

Attivazione di lavori batch con eventi

I lavori batch possono essere inoltrati automaticamente in base agli eventi, come i timer periodici, gli eventi Object Storage o gli argomenti Kafka.

Supponi di voler attivare il tuo lavoro batch automaticamente in base a una sottoscrizione a un bucket IBM Cloud Object Storage che genera eventi ogni volta che un file cambia o viene aggiunto al bucket Object Storage. Consultare Esempio Code Engine cos-event-job per informazioni su come creare eventi Object Storage e utilizzare gli eventi per attivare i lavori batch.

Per ulteriori informazioni sull'utilizzo dell'evento con i lavori Code Engine, vedi i seguenti argomenti: Gestione del produttore di eventi timer periodico(cron), Utilizzo del produttore di eventi IBM Cloud Object Storage e Gestione del produttore di eventi Kafka.

Cerchi altri esempi di codice? Controlla gli Esempi per il repository IBM Cloud Code Engine GitHub.

Come è possibile iniziare con i lavori batch?

Per creare ed eseguire una semplice applicazione di lavoro batch Code Engine con l'immagine di esempio icr.io/codeengine/firstjob, vedi Esecuzione del tuo primo lavoro Code Engine.

Inoltre, è possibile provare un'esercitazione del lavoro batch, consultare Esecuzione e aggiornamento dei lavori.

Per approfondire la gestione dei lavori batch, consultare Gestione dei lavori e delle esecuzioni dei lavori.