Pular para o conteúdo principal

Visão geral do Zerobus Ingest

O Zerobus Ingest é uma API de transmissão baseada em push que grava dados diretamente em tabelas Delta do Unity Catalog em alta escala, sem a necessidade de executar um barramento de mensagens. Isso remove a camada intermediária que muitas equipes colocam entre seus produtores e o lakehouse. O fluxo de trabalho consiste em dois os passos: criar uma tabela e, em seguida, enviar dados para ela. Um cliente "hello world" e uma carga de trabalho em escala de petabyte executam essencialmente o mesmo código sem infraestrutura para gerenciar.

A ingestão com um barramento de mensagens roteia os produtores através de um broker e um job de ingestão antes de chegar às tabelas Delta, enquanto o Zerobus Ingest conecta os produtores diretamente ao lakehouse.

O Zerobus Ingest é serverless, adicionando e removendo capacidade conforme a carga muda. Ele ingeriu mais de 1 trilhão de registros em uma única tabela em menos de 24 horas (consulte a postagem no blog Ingesting the Milky Way: Petabyte-Scale with Zerobus Ingest), e processa registros em segundos.

Vantagens​

O Zerobus Ingest mantém a ingestão simples enquanto escala para as maiores cargas de trabalho:

  • Simples por design. Crie uma tabela e envie dados para ela — não há brokers, partições ou pipelines para gerenciar. Em vez de rotear dados por meio de um barramento de mensagens e um job de ingestão antes que eles cheguem ao destino, os produtores escrevem diretamente na tabela, portanto, há menos saltos e menos partes móveis para operar.
  • Serverless e elástico. O Zerobus Ingest está ativado por default e adiciona ou remove capacidade conforme a carga muda. Você escala executando mais produtores, não reescrevendo sua aplicação. Para saber como, consulte Como o Zerobus Ingest escala.
  • Cargas de trabalho de alto throughput. O Zerobus Ingest foi criado para ingestão em larga escala, sustentando altas taxas de gravação em uma única tabela.
  • Atualização quase em tempo real. Os registros chegam ao Delta em segundos e ficam prontos para query quase assim que chegam.
  • high concurrency. O Zerobus Ingest gerencia gravações concorrentes de milhares de clientes na mesma tabela.

Quando seu destino for o lakehouse, o Zerobus Ingest é o caminho mais direto. Outras ferramentas do Databricks atendem a necessidades adjacentes e funcionam bem em conjunto com ela:

  • Para casos de uso em que você está executando o Kafka para oferecer suporte a consumidores que não são do Lakehouse, talvez você também queira uma cópia dos dados feita no Lakehouse. Use conectores de transmissão gerenciados para replicá-lo.
  • Para dados já armazenados como arquivos no armazenamento em cloud, use o Auto Loader.
  • Quando precisar de latência operacional de sub-segundo no caminho de processamento, use o modo em tempo real.

Criar uma tabela e, em seguida, enviar dados​

Usar o Zerobus Ingest é tão simples quanto criar uma tabela e enviar dados para ela. O esquema da tabela define o que cada registro deve conter. Primeiro, crie a tabela de destino:

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

Em seguida, a ingestão de um registro consiste em algumas linhas de código:

Python
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 você envia em desenvolvimento pode escalar para cargas de trabalho de produção. Para o passo a passo completo, consulte Use Zerobus Ingest.

Casos de uso comuns​

  • IoT e telemetria de dispositivos : transmita dados de sensores, veículos e dispositivos inteligentes de grandes frotas distribuídas diretamente para tabelas Delta governadas.
  • On-premises para cloud : conecte sistemas on-premises e híbridos ao lakehouse sem precisar configurar uma infraestrutura de broker entre eles. Para conectividade privada e configuração de firewall, consulte Considerações sobre rede.
  • Eventos de aplicação e clickstream : envie eventos de aplicações em cloud e edge para analítica quase em tempo real.
  • Captura de dados de alterações (CDC) : grave alterações de linha de sistemas operacionais no Delta.
  • Dados de observabilidade : envie rastreamentos, logs e métricas do OpenTelemetry para tabelas Delta de sua propriedade. Veja Ingest OpenTelemetry data with Zerobus Ingest.

Como funciona​

Um produtor abre uma transmissão para o Zerobus Ingest e envia registros para uma tabela Delta de destino. O serviço valida cada registro em relação ao esquema da tabela e o torna persistente. Assim que um registro é persistido, o Zerobus Ingest o reconhece rapidamente, para que seu produtor possa continuar enviando registros sem esperar por cada um. Os dados são materializados na tabela logo em seguida, normalmente em poucos segundos. O design dinâmico e sem partições do Zerobus Ingest torna a ingestão elástica, de modo que seu compute serverless escala com suas cargas de trabalho.

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

Para uma explicação mais detalhada sobre transmissões e como o Zerobus Ingest escala, consulte Conceitos do Zerobus Ingest. Para o modelo de comunicação assíncrona entre cliente e servidor, consulte Comunicação assíncrona.

Maneiras de enviar dados​

O Zerobus Ingest é um endpoint que oferece suporte a várias interfaces, para que você possa escolher a mais adequada para cada produtor:

  • SDKs sobre gRPC : clientes de transmissão de alto throughput em Python, Java, Rust, Go, TypeScript e (em Beta) C++ e C# / .NET. Ideal para ingestão ordenada de alto volume. Consulte Escrever um cliente.
  • API REST : uma interface sem estado para clientes leves ou "tagarelas" (chatty), como grandes frotas de dispositivos de borda. Consulte Escrever um cliente.
  • OpenTelemetry (OTLP) : aponte os coletores OpenTelemetry existentes para o Zerobus Ingest para gravar rastreamentos, logs e métricas sem integração personalizada. Veja Ingest OpenTelemetry data with Zerobus Ingest.
  • APIs compatíveis com Kafka (Beta): aponte um produtor do Apache Kafka existente para o Zerobus Ingest, sem o Databricks SDK. Consulte Usar APIs compatíveis com Kafka com o Zerobus Ingest.

Arquitetura de escalonamento do Zerobus Ingest: as fontes enviam registros em Protocol Buffers (protobuf), JSON e Arrow por meio de APIs compatíveis com gRPC, REST, OpenTelemetry e Kafka, que fluem através de escalonamento automático e balanceamento de carga para um pool horizontalmente escalável de nós stateless do Zerobus, cada um com um log de write-ahead e um gravador de Lakehouse que faz o commit em lotes de registros em uma tabela Delta gerenciada pelo Unity Catalog

Todos eles gravam diretamente em tabelas Delta. Para uma comparação completa e como escolher, consulte protocolos de API. Para escrever seu primeiro cliente, consulte Usar o Zerobus Ingest.

Custo​

As cobranças do Zerobus Ingest são faturadas usando o SKU de "Jobs Serverless". Os preços estão disponíveis na página de preços do Lakeflow Connect.

seu uso​

Você pode monitorar seus gastos por meio da tabela do sistema de uso faturável. Consulte Referência da tabela do sistema de uso faturável. Filtre o uso do Zerobus Ingest com:

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

Outros recursos​