Kafka Connect è lo strumento preferito per l'integrazione dei dati per gli sviluppatori Kafka. Fornisce un framework per connettere Kafka a sistemi esterni come database, code di messaggi e file system.
Kafka Connect fornisce un insieme selezionato di plug-in dei connettori incorporati, verificati e gestiti da Google Cloud. Questi plug-in connettori vengono patchati e aggiornati automaticamente, semplificando la manutenzione e garantendo la compatibilità.Google Cloud fornisce anche monitoraggio e logging integrati per mantenere l'integrità delle pipeline.
Le API Kafka Connect sono offerte nell'ambito del servizio Google Cloud Managed Service per Apache Kafka. Queste API sono accessibili tramite managedkafka.googleapis.com e sono
integrate nella console e nelle librerie client di Google Cloud . Per gestire Kafka Connect, puoi utilizzare la console Google Cloud , gcloud CLI, l'API Managed Kafka, le librerie client di Cloud o Terraform.
Casi d'uso di Kafka Connect
Kafka Connect supporta l'integrazione dei dati tra il tuo cluster Managed Service per Apache Kafka e vari altri sistemi. Ecco alcuni casi d'uso principali:
Migra le tue implementazioni Kafka esistenti a Managed Service per Apache Kafka.
Replica il cluster Managed Service per Apache Kafka in un'altra regione per ilripristino di emergenzay.
Trasmetti flussi di dati da Managed Service per Apache Kafka a BigQuery, Cloud Storage, Pub/Sub.
Termini di Kafka Connect
Queste sezioni descrivono alcuni componenti chiave di Kafka Connect.
Cluster di connessione
Un cluster di connessione è un deployment distribuito di Kafka Connect con plug-in e configurazioni di connettori pre-confezionati. Ogni cluster di connessione è associato a un cluster Managed Service per Apache Kafka principale. Questo cluster primario memorizza lo stato dei connettori in esecuzione sul cluster di connessione.
In genere, il cluster Managed Service per Apache Kafka principale funge anche da destinazione per tutti i connettori di origine e da origine per tutti i connettori di sink in esecuzione sul cluster di connessione associato.
Un singolo cluster Managed Service per Apache Kafka può avere più cluster Connect. Se esegui MirrorMaker 2.0, un cluster di connessione può connettersi a cluster Managed Service per Apache Kafka non primari o a cluster Kafka autogestiti per leggere o scrivere dati degli argomenti. Questo processo consente la replica degli argomenti tra cluster diversi.
Dal punto di vista del modello di risorse, un cluster di connessione è una risorsa separata da un cluster Managed Service per Apache Kafka.
Supponiamo di avere un cluster Managed Service per Apache Kafka in cui memorizzi i dati sul traffico del sito web. Vuoi trasmettere in streaming questi dati in BigQuery per l'analisi. Puoi creare un cluster Connect e utilizzare un connettore di sink BigQuery per spostare i dati dagli argomenti Kafka a BigQuery. Questo cluster di connessione è associato al tuo cluster Managed Service per Apache Kafka come cluster principale.
Plug-in del connettore
Un pacchetto software per la creazione di connettori. Consideralo come il codice che definisce la logica del connettore.
Un connettore può essere un connettore di origine o di destinazione. Un connettore di origine scrive i dati da un'origine a un cluster Managed Service per Apache Kafka.
Un connettore di sink scrive i dati da un cluster Managed Service per Apache Kafka a un sink.
Managed Service per Apache Kafka supporta diversi tipi di plug-in dei connettori incorporati che puoi configurare per creare connettori. Questi connettori offrono integrazioni con servizi comuni come Pub/Sub o BigQuery. Questi plug-in del connettore sono i seguenti:
Plug-in del connettore di sink BigQuery
Plug-in del connettore di sink Cloud Storage
Plug-in del connettore di origine Pub/Sub
Plug-in del connettore di sink Pub/Sub
Plug-in del connettore MirrorMaker 2.0
Connettore
Un connettore è un'istanza in esecuzione di un plug-in del connettore all'interno di un cluster di connessione specifico. Puoi creare più connettori dallo stesso plug-in connettore, ognuno con la propria configurazione specifica. Esempi di configurazione includono diverse impostazioni operative e dettagli di autenticazione. Un connettore viene sottoposto a deployment, configurato e gestito all'interno del cluster di connessione. Può essere avviato, interrotto, messo in pausa, riavviato e la sua configurazione può essere aggiornata.
I componenti di un connettore sono trattati nelle sezioni successive.
Utenti che hanno completato una conversione
I convertitori sono componenti fondamentali di Kafka Connect responsabili della serializzazione e della deserializzazione. Traducono i dati tra il formato wire di byte non elaborati che si trova negli argomenti Kafka, ad esempio in formato Avro o JSON, e la rappresentazione interna e strutturata dei dati di Kafka Connect.
Ruolo dei convertitori
Per i connettori Sink, i convertitori deserializzano i dati dal formato wire dell'argomento nella rappresentazione interna e strutturata dei dati di Kafka Connect, che il connettore utilizza poi per scrivere nel sistema di destinazione.
Per i connettori di origine, i convertitori serializzano i dati dalla rappresentazione interna e strutturata dei dati di Kafka Connect fornita dal connettore nel formato di trasmissione specificato per l'argomento Kafka.
Questo formato interno funge da rappresentazione comune, consentendo varie fasi di elaborazione intermedie. Questi passaggi includono primitive come filtri, predicati, trasformazioni e convertitori, che operano tutti su questo formato interno unificato. Utilizzando un formato interno astratto, la logica di questi passaggi intermedi rimane indipendente dai formati specifici dei dati di input o output.
Un convertitore diventa necessario quando devi interagire con i dati oltre a trasmetterli. In particolare, i convertitori sono necessari nei casi in cui devi eseguire passaggi di elaborazione intermedi, come predicati o trasformazioni, in modo granulare e consapevole della struttura.
Se intendi spostare una stringa di byte (anche se si tratta di JSON) da un'origine a Kafka senza alcuna manipolazione, non è necessario un convertitore.
In una configurazione del connettore, se non specifichi i convertitori di chiavi e valori, il connettore utilizza il valore predefinito ByteArrayConverter. Il valore org.apache.kafka.connect.converters.ByteArrayConverter
non applica alcuna trasformazione ai dati e li passa
nel formato originale.
Convertitori supportati
Per questa release, Google Cloud supporta i seguenti convertitori integrati:
org.apache.kafka.connect.converters.ByteArrayConverter: converte i dati in e da array di byte. Questo è il convertitore predefinito. Trasmette i dati tramite il connettore come byte sottostanti non elaborati.org.apache.kafka.connect.json.JsonConverter: converte i dati da e verso il formato JSON.org.apache.kafka.connect.storage.StringConverter: converte i dati nel formato Stringa e viceversa.org.apache.kafka.connect.converters.ByteArrayConverter: converte i dati in e da array di byte.org.apache.kafka.connect.converters.DoubleConverter: converte i dati nel formato Double e viceversa.org.apache.kafka.connect.converters.FloatConverter: converte i dati nel formato Float e viceversa.org.apache.kafka.connect.converters.IntegerConverter: converte i dati nel formato Integer e viceversa.org.apache.kafka.connect.converters.LongConverter: converte i dati in formato lungo e viceversa.org.apache.kafka.connect.converters.ShortConverter: converte i dati in formato Short e viceversa.org.apache.kafka.connect.converters.BooleanConverter: converte i dati in formato booleano e viceversa.io.confluent.connect.avro.AvroConverter: converte i dati nel formato Apache Avro e viceversa.
Per questa release, Kafka Connect non supporta la convalida rispetto a uno schema remoto utilizzando Schema Registry.
Per informazioni sui convertitori preferiti per ogni connettore, consulta la documentazione del connettore specifico.
Configurazione predefinita del convertitore
Il convertitore di chiavi e valori predefinito per tutti i connettori supportati è
org.apache.kafka.connect.json.JsonConverter.
Quando configuri i connettori, devi specificare il convertitore appropriato sia per la chiave che per il valore dei messaggi Kafka. Ad esempio, se
utilizzi dati JSON, usa JsonConverter. Se i dati sono in formato
stringa, utilizza StringConverter.
Alcune configurazioni comuni includono:
tasks.max: il numero massimo di attività da creare per questo connettore. Controlla il parallelismo del connettore. L'aumento del numero di attività può migliorare la velocità effettiva, ma aumenta anche il consumo di risorse (CPU e memoria). Il valore ottimale dipende dal carico di lavoro e dalle risorse allocate ai worker del cluster di connessione e, per i connettori sink, dal numero di partizioni degli argomenti Kafka.value.converter: il convertitore da utilizzare per serializzare il valore dei messaggi prima di inviarli al bucket Cloud Storage. I convertitori più comuni includono:org.apache.kafka.connect.json.JsonConverter: per i dati JSON. Spesso devi impostarevalue.converter.schemas.enable=falsequando utilizzi questo convertitore con JSON semplice (senza schema).org.apache.kafka.connect.converters.ByteArrayConverter: Per preservare il contenuto esatto dei messaggi in due sistemi.org.apache.kafka.connect.storage.StringConverter: Per le stringhe di testo normale.
key.converter: il convertitore da utilizzare per serializzare la chiave dei messaggi. Si applicano le stesse opzioni di conversione divalue.converter. Se i tuoi messaggi non hanno chiavi, spesso puoi utilizzareorg.apache.kafka.connect.storage.StringConverter.value.converter.schemas.enable: per un connettore sink, se imposti questo valore sutruequando utilizziorg.apache.kafka.connect.json.JsonConverter, Kafka Connect cerca e utilizza uno schema incorporato nel messaggio Kafka in entrata. Se impostato sufalse(impostazione predefinita), Kafka Connect si aspetta che i dati siano JSON semplici senza uno schema incorporato.
Trasformazioni (facoltative)
Le trasformazioni consentono la manipolazione o l'arricchimento dei dati durante la pipeline. Le trasformazioni consentono di modificare i singoli messaggi prima che vengano inviati a Managed Service per Apache Kafka (per i connettori di origine) o al sistema esterno (per i connettori sink). Puoi utilizzare una trasformazione per mascherare i dati sensibili, aggiungere timestamp o rinominare i campi.
Predicati (facoltativi)
I predicati consentono di filtrare i dati in base a condizioni specifiche. I predicati fungono da filtri per l'applicazione delle trasformazioni, determinando a quali messaggi si applica una trasformazione in base alle proprietà del messaggio.
Gestisci Kafka Connect in Google Cloud
Con Kafka Connect, puoi concentrarti sul deployment dei connettori mentre Google Cloud gestisce l'infrastruttura sottostante e le complessità operative. Ecco una descrizione dettagliata di ciò che Google Cloud automatizza e di ciò che puoi configurare:
Il servizio Kafka Connect automatizza le seguenti operazioni:
Provisioning dei worker Kafka Connect: quando crei un cluster Connect, il servizio Kafka Connect esegue automaticamente il provisioning di un cluster di worker in Kubernetes.
Networking: il servizio Kafka Connect configura la rete per consentire la comunicazione tra i worker, i broker Managed Service per Apache Kafka e i sistemi esterni. In alcuni casi, potrebbe essere necessario apportare alcune modifiche alle impostazioni di rete esistenti.
Resilienza zonale: il servizio Kafka Connect distribuisce i worker in un minimo di tre zone, garantendo che l'elaborazione dei dati possa procedere in caso di interruzione zonale.
Autenticazione: il servizio Kafka Connect configura anche l'autenticazione con i broker Kafka, garantendo connessioni sicure.
Implementazioni e upgrade: il servizio Kafka Connect gestisce le modifiche alla configurazione dei worker, gli upgrade di versione e le patch di sicurezza, garantendo che i deployment siano sempre aggiornati.
All'interno del servizio Kafka Connect, puoi eseguire le seguenti configurazioni:
Vincoli di capacità e di rete: definisci i limiti delle risorse e le configurazioni di rete per ottimizzare le prestazioni e i costi.
Monitoraggio e logging: accedi ai log e alle metriche dei tuoi connettori per monitorare le prestazioni e risolvere i problemi.
Gestione del ciclo di vita dei connettori: metti in pausa, riprendi, riavvia o interrompi i connettori in base alle esigenze per gestire le pipeline di dati.
Limitazioni
Il servizio Kafka Connect supporta solo il cluster Managed Service per Apache Kafka come cluster Kafka principale. Il cluster principale è il cluster in cui il cluster Kafka Connect scrive i metadati.
Il servizio non supporta il caricamento di plug-in di connettori personalizzati nel cluster Kafka Connect.