Visão geral do Zerobus Ingest

O Zerobus Ingest é uma API de streaming baseada em push que grava dados diretamente em tabelas Delta do Unity Catalog em grande escala, sem barramento de mensagens para executar. Remove a camada intermédia que muitas equipas colocam entre os seus produtores e a casa do lago. O fluxo de trabalho é composto por dois passos: criar uma tabela e depois enviar dados para ela. Um cliente "hello world" e uma carga de trabalho à escala de petabytes executam essencialmente o mesmo código sem infraestrutura para gerir.

O Ingesting com um autocarro de mensagens encaminha os produtores através de um intermediário e de um trabalho de ingestão antes de chegar às mesas Delta, enquanto o Zerobus Ingest liga os produtores diretamente à casa do lago.

O Zerobus Ingest é serverless, adicionando e removendo capacidade à medida que a carga muda. Ingeriu mais de 1 bilião de registos numa única tabela em menos de 24 horas (ver o artigo do blogue Ingering the Milky Way: Petabyte-Scale with Zerobus Ingest ), e regista registos em segundos.

Advantages

O Zerobus Ingest simplifica a ingestão à medida que escala para suportar as maiores cargas de trabalho:

  • Simples por design. Crie uma tabela e, em seguida, envie dados para a mesma — não há brokers, partições nem canais de processamento para gerir. Em vez de encaminharem os dados através de um barramento de mensagens e de um processo de ingestão antes de chegarem à tabela, os produtores escrevem diretamente na tabela, pelo que há menos saltos e menos componentes para gerir.
  • Sem servidor e elástico. O Zerobus Ingest está ativado por defeito e adiciona ou remove capacidade à medida que a carga muda. Aumentas a escala executando mais produtores, não reescrevendo a tua aplicação. Para saber como, veja Como o Zerobus Ingest é dimensionado.
  • Cargas de trabalho de alto rendimento. O Zerobus Ingest foi desenvolvido para ingestão em grande escala, suportando taxas elevadas de escrita numa única tabela.
  • Atualização quase em tempo real. Os registos chegam à Delta em segundos e estão prontos para consultas quase assim que chegam.
  • Alta concorrência. O Zerobus Ingest gere escritas concorrentes de milhares de clientes para a mesma tabela.

Quando o destino é a casa do lago, o Zerobus Ingerit é o caminho mais direto. Outras ferramentas do Azure Databricks respondem a necessidades adjacentes e funcionam bem em conjunto:

  • Para casos de uso em que está a usar o Kafka para suportar consumidores que não são do Lakehouse, pode também querer uma cópia dos dados feitos no Lakehouse. Utilize conectores de streaming geridos para replicar isso.
  • Para dados já armazenados como ficheiros em armazenamento na nuvem, use o Auto Loader.
  • Quando precisar de latência operacional inferior a um segundo no caminho de processamento, use o modo em tempo real.

Crie uma tabela e depois envie dados

Usar o Zerobus Ingest é tão simples como criar uma tabela e depois enviar dados para ela. O esquema da tabela define o que cada registo deve conter. Primeiro, crie a tabela alvo:

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

Em seguida, importar um registo requer apenas algumas linhas de código:

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})
# ingest more records...
stream.close()

O mesmo código que implementas em ambiente de desenvolvimento pode escalar para suportar cargas de trabalho de produção. Para obter as instruções completas, consulte Utilizar o Zerobus Ingest.

Casos de uso comuns

  • IoT e telemetria de dispositivos: transmitir dados de sensores, veículos e dispositivos inteligentes de grandes frotas distribuídas diretamente para tabelas Delta governadas.
  • On-premises para a nuvem: faça a ponte entre sistemas on-premises e híbridos e o lakehouse, sem implementar infraestrutura de brokers intermédia. Para conectividade privada e configuração de firewall, veja Considerações de rede.
  • Eventos de aplicações e de clickstream: envio de eventos a partir de aplicações na cloud e na edge para análise quase em tempo real.
  • Captura de dados de alterações (CDC): carregar alterações ao nível das linhas de sistemas de operação para o Delta.
  • Dados de observabilidade: envie rastreios, registos e métricas do OpenTelemetry para tabelas Delta que lhe pertencem. Veja Ingerir dados OpenTelemetry com Zerobus Ingest.

Como funciona

Um produtor abre um stream para o Zerobus Ingest e envia os registos para uma tabela Delta alvo. O serviço valida cada registo contra o esquema da tabela e torna-o durável. Quando um disco é durável, o Zerobus Ingest reconhece-o rapidamente, para que o seu produtor possa continuar a enviar discos sem esperar por cada um. Os dados são materializados na tabela pouco depois, normalmente em segundos. A arquitetura dinâmica e sem necessidade de partições do Zerobus Ingest torna a ingestão elástica, o que permite que a sua capacidade de computação sem servidor acompanhe a escala das suas cargas de trabalho.

Como funciona o Zerobus Ingest: os produtores enviam os registos para o endpoint do Zerobus Ingerest, que os valida, torna duráveis, reconhece e materializa em tabelas Delta do Unity Catalog

Para uma explicação mais aprofundada dos fluxos e de como o Zerobus Ingest escala, veja os conceitos do Zerobus Ingest. Para o modelo de comunicação assíncrona entre cliente e servidor, veja Comunicação assíncrona.

Formas de enviar dados

O Zerobus Ingest é um endpoint que suporta múltiplas interfaces, por isso pode escolher a melhor opção para cada produtor:

  • SDKs via gRPC: clientes de streaming de alto débito em Python, Java, Rust, Go, TypeScript e, em beta, C++ e C# / .NET. É ideal para ingestão ordenada em grande volume. Consulte Criar um cliente.
  • REST API: uma interface sem estado para clientes ligeiros ou "verbosos", como grandes frotas de dispositivos na periferia da rede. Consulte Criar um cliente.
  • OpenTelemetry (OTLP): aponta os coletores OpenTelemetry existentes no Zerobus Ingest para localizar rastreios, logs e métricas sem integração personalizada. Veja Ingerir dados OpenTelemetry com Zerobus Ingest.
  • APIs compatíveis com Kafka (Beta): apontar um produtor Apache Kafka existente para Zerobus Ingest, sem Azure Databricks SDK. Veja Usar APIs compatíveis com Kafka com Zerobus Ingest.

Arquitetura de escalonamento do Zerobus Ingest: as fontes enviam registos Protocol Buffers (protobuf), JSON e Arrow através das APIs compatíveis com gRPC, REST, OpenTelemetry e Kafka, que passam por escalonamento automático e balanceamento de carga até um conjunto de nós Zerobus sem estado, escalável horizontalmente, cada um com um log de escrita antecipada e um gravador do Lakehouse que efetua confirmações em lote dos registos numa tabela Delta gerida pelo Unity Catalog

Todos eles escrevem diretamente nas tabelas Delta. Para uma comparação completa e como escolher, consulte protocolos API. Para escrever o seu primeiro cliente, consulte Use Zerobus Ingest.

Custo

Os custos do Zerobus Ingest são faturados ao SKU "Automated Serverless". Os preços estão disponíveis na página de preços do Lakeflow Connect.

Monitorizar a sua utilização

Pode monitorizar os seus gastos através da tabela do sistema de utilização faturável. Consulte Tabela de referência do sistema de uso faturável. Filtrar o uso de ingestão do Zerobus com:

  • billing_origin_product = 'LAKEFLOW_CONNECT'
  • product_features.lakeflow_connect.zerobus_request_type identifica como os dados foram ingeridos: 'GRPC' (SDK streaming), 'HTTP' (REST) 'OTEL_GRPC' e 'OTEL_HTTP' (OpenTelemetry/OTLP), ou 'KAFKA' (APIs compatíveis com Kafka).

Recursos adicionais