Panoramica di Zerobus Ingest

Zerobus Ingest è un'API di streaming basata su push che scrive dati direttamente nelle tabelle Delta del Catalogo Unity ad alta scala, senza un bus di messaggi da eseguire. Il flusso di lavoro è composto da due fasi: creare una tabella e poi inviare i dati. Zerobus Ingest elimina la necessità di gestire partizioni, broker o pipeline. È un endpoint serverless che è attivo di default nel tuo workspace e scala man mano che apri più connessioni.

Progettato per un throughput elevato e un aggiornamento quasi in tempo reale, Zerobus Ingest gestisce scritture concorrenti ad alto volume da migliaia di client nella stessa tabella e scrive i record in Delta nel giro di pochi secondi, così i dati sono pronti per essere interrogati quasi non appena arrivano.

  • Zerobus Ingest è disponibile in alcune regioni. Il tuo spazio di lavoro e la tabella target devono essere entrambi in una regione supportata. Per l'elenco delle regioni supportate, vedi Disponibilità di ingestione.

Progettato per un'alta scalabilità

Zerobus Ingest è progettato per un'alta scalabilità, senza che tu pianifichi la capacità. Ha assorbito oltre 1 trilione di record in una singola tabella Delta in meno di 24 ore, gestendo scritture concomitanti ad alto volume da migliaia di clienti, come descritto nel post sul blog Ingesting the Milky Way: Petabyte-Scale with Zerobus Ingest . Per le quote di throughput predefinite, consulta quote di Zerobus Ingest.

Un client "hello world" e un carico di lavoro su scala petabyte eseguono essenzialmente lo stesso codice. Puoi scalare eseguendo più producer, non riscrivendo la tua applicazione.

Zerobus Ingest è serverless: aggiunge e rimuove capacità man mano che il carico cambia. I flussi agiscono come unità di partizionamento dinamico che il servizio apre, chiude e ruota per ribilanciare la capacità man mano che la domanda cambia.

Per capire come Zerobus Ingest ottiene questo risultato, vedi come Zerobus Ingest si adatta alla scalabilità.

Nessun bus di messaggi richiesto

Molti team inseriscono un bus di messaggi come Kafka tra i propri producer e le proprie tabelle esclusivamente per fare da buffer ai dati nel loro percorso verso il lakehouse. Questo aggiunge passaggi, costi e overhead operativo: broker da dimensionare, partizioni da ribilanciare e lag dei consumer da monitorare. Zerobus Ingest rimuove quel livello intermedio, permettendo ai produttori di scrivere direttamente su Delta.

L'acquisizione dei dati tramite un bus di messaggi instrada i producer attraverso un broker e un processo di ingestione prima di raggiungere le tabelle Delta, mentre Zerobus Ingest collega direttamente i producer alle tabelle Delta

Un bus di messaggi è ancora lo strumento giusto quando gli stessi dati alimentano molti consumer esterni al lakehouse, quando serve la messaggistica tra microservizi o per la distribuzione di un messaggio a più destinatari. In questi casi, quando vuoi anche tali dati nel lakehouse, usa i connettori di streaming gestiti di Azure Databricks per replicare i dati dal bus di messaggi. Ma quando la casa sul lago è la destinazione, Zerobus Ingerit è un percorso più semplice e diretto.

Come funziona

Un produttore apre uno stream verso Zerobus Ingest e invia i record a una tabella Delta target. Il servizio valida ogni record rispetto allo schema della tabella e lo rende duraturo. Una volta che un disco è duro, Zerobus Ingest lo riconosce rapidamente, così il tuo produttore può continuare a inviare dischi senza dover aspettare per ognuno di essi. I dati vengono materializzati nella tabella poco dopo, tipicamente in pochi secondi. Il design dinamico e senza partizioni di Zerobus Ingest rende l'ingestione elastica, così la sua capacità di elaborazione serverless si adatta ai tuoi carichi di lavoro.

Come funziona Zerobus Ingest: i produttori inviano i record all'endpoint Zerobus Ingest, che li valida, li rende durevi, li riconosce e li materializza nelle tabelle Delta del Catalogo Unity

Per una spiegazione più approfondita dei flussi e di come si espande Zerobus Ingest, consulta i concetti di Zerobus Ingest. Per il modello di comunicazione asincrona tra client e server, vedi Comunicazione asincrona.

Crea una tabella e poi invia i dati

Qualsiasi applicazione che possa utilizzare un SDK di Ingest Zerobus o chiamare un'API supportata (gRPC, REST o OpenTelemetry) può trasferire dati in una tabella Delta. Lo schema della tabella definisce cosa deve contenere ogni record. Per prima cosa, crea la tabella target:

CREATE TABLE main.default.air_quality (
  device_name STRING,
  temp INT,
  humidity INT
);

Poi, dopo aver concesso a un service principal l'accesso alla tabella, acquisire un record richiede solo poche righe di codice:

from zerobus.sdk.sync import ZerobusSdk
from zerobus.sdk.shared import TableProperties

sdk = ZerobusSdk(SERVER_ENDPOINT, DATABRICKS_WORKSPACE_URL)

table_properties = TableProperties("main.default.air_quality")
stream = sdk.create_stream(CLIENT_ID, CLIENT_SECRET, table_properties)

stream.ingest_record_offset({"device_name": "sensor-1", "temp": 22, "humidity": 55})
stream.close()

Lo stesso codice che assorbe un disco scala fino a petabyte: lo esegui da più produttori. Per la procedura completa, vedi Use Zerobus Ingest.

Quando utilizzare Zerobus Ingest

Utilizzare Zerobus Ingest quando… Valuta un altro strumento quando...
La casa sul lago è l'unica destinazione per i tuoi dati. Devi diffondere gli stessi dati a molti consumatori non appartenenti a lakehouse (usa un bus di messaggi come Kafka, e usa connettori Streaming per replicare quei dati nella lakehouse).
Vuoi eseguire scritture concorrenti a throughput elevato direttamente nelle tabelle Delta. Hai bisogno di una messaggistica tra microservizi (usa un bus di messaggi).
La freschezza quasi in tempo reale (secondi) soddisfa le tue esigenze. È necessario un latenza operativa inferiore al secondo nel percorso di elaborazione (usa concetti di modalità Real-time).
Controlli il produttore e puoi inviare i dati a un'API. Stai acquisendo dati da file già presenti nell’archiviazione cloud (usa Auto Loader).

Un punto di progettazione da pianificare: Zerobus Ingest garantisce l'ordine per ogni stream, non globalmente tra i stream. Per capire come funziona l'ordine per stream e come progettare attorno ad esso, vedi Streams.

Casi d'uso comuni

  • IoT e telemetria dei dispositivi: trasmetti in streaming i dati di sensori, veicoli e dispositivi intelligenti da grandi flotte distribuite direttamente nelle tabelle Delta governate.
  • Da ambienti on-premises al cloud: collega i sistemi on-premises e ibridi al lakehouse senza dover predisporre un'infrastruttura broker intermedia. Per la connettività privata e la configurazione del firewall, vedi Considerazioni di rete.
  • Eventi applicativi e clickstream: invio di eventi da applicazioni cloud ed edge per analisi quasi in tempo reale.
  • Acquisizione dei dati modificati (CDC): carica in Delta le modifiche a livello di riga dai sistemi operazionali.
  • Dati di osservabilità: invia tracce, log e metriche di OpenTelemetry nelle tabelle Delta di tuo possesso. Vedi Ingestire dati OpenTelemetry con Zerobus Ingest.

Modi per inviare dati

Zerobus Ingest è un endpoint che supporta più interfacce, quindi puoi scegliere la soluzione migliore per ogni produttore:

  • SDK su gRPC: client di streaming ad alta velocità in Python, Java, Rust, Go, TypeScript e (in Beta) C++ e C# / .NET. Ideale per l'ingestione ordinata ad alto volume. Vedi Creare un client.
  • API REST: un'interfaccia senza stato per client leggeri o molto verbosi, come ampie flotte di dispositivi edge. Vedi Creare un client.
  • OpenTelemetry (OTLP): configura i collector OpenTelemetry esistenti affinché puntino a Zerobus Ingest per inviare tracce, log e metriche senza alcuna integrazione personalizzata. Vedi Ingestire dati OpenTelemetry con Zerobus Ingest.
  • API compatibili con Kafka (Beta): indirizza un producer Apache Kafka esistente verso Zerobus Ingest, senza l'SDK di Azure Databricks. Consulta Utilizzare API compatibili con Kafka con Zerobus Ingest.

Architettura di scalabilità di Zerobus Ingest: le sorgenti inviano record Protocol Buffers (protobuf), JSON e Arrow tramite le API gRPC, REST, OpenTelemetry e compatibili con Kafka, che passano attraverso meccanismi di auto-scaling e bilanciamento del carico verso un pool scalabile orizzontalmente di nodi Zerobus stateless, ciascuno con un log write-ahead e un writer per Lakehouse che esegue il commit in batch dei record in una tabella Delta gestita da Unity Catalog

Tutti scrivono direttamente nelle tabelle Delta. Per un confronto completo e come scegliere, vedi protocolli API. Per scrivere il tuo primo client, vedi Usa Zerobus Ingest.

Costo

I costi di Zerobus Ingest sono fatturati in base allo SKU "Automated Serverless". I prezzi sono disponibili nella pagina dei prezzi di Lakeflow Connect.

Monitoraggio dell'utilizzo

Puoi monitorare la tua spesa tramite la tabella del sistema di utilizzo fatturabile. Consultare Tabella di riferimento del sistema di utilizzo fatturabile. Filtrare l'uso di Zerobus Ingest con:

  • billing_origin_product = 'LAKEFLOW_CONNECT'
  • product_features.lakeflow_connect.zerobus_request_type identifica come i dati sono stati ingeriti: 'GRPC' (SDK streaming), 'HTTP' (REST) 'OTEL_GRPC' e 'OTEL_HTTP' (OpenTelemetry/OTLP), oppure 'KAFKA' (API compatibili con Kafka).