Uso dello streaming con Apache Kafka
Utilizza Apache Kafka con Oracle Cloud Infrastructure Streaming.
Oracle Cloud Infrastructure Streaming consente agli utenti di Apache Kafka di scaricare l'impostazione, la manutenzione e la gestione dell'infrastruttura che richiede l'hosting del proprio cluster Zookeeper e Kafka.
Lo streaming è compatibile con la maggior parte delle API Kafka e ti consente di utilizzare le applicazioni scritte per Kafka per inviare e ricevere messaggi dal servizio di streaming senza dover riscrivere il codice. Per ulteriori informazioni, vedere Utilizzo delle interfacce API Kafka.
Lo streaming può anche utilizzare l'ecosistema Kafka Connect per interfacciarsi direttamente con origini esterne come database, aree di memorizzazione degli oggetti o qualsiasi microservizio su Oracle Cloud. I connettori Kafka possono creare, pubblicare e distribuire argomenti in modo semplice e automatico, sfruttando al contempo l'elevato throughput e durabilità del servizio di streaming. Per ulteriori informazioni, vedere Utilizzo di Kafka Connect.
I casi d'uso per Streaming e Kafka includono:
-
Sposta i dati da Streaming ad Autonomous Data Warehouse tramite il connettore JDBC per eseguire analisi e visualizzazione avanzate.
-
Utilizzare il connettore Oracle GoldenGate per Big Data Service per creare un'applicazione basata sugli eventi.
-
Spostare i dati da Streaming a Oracle Object Storage tramite il connettore HDFS/S3 per lo storage a lungo termine o per eseguire i job Hadoop/Spark.
Supporto API Kafka
Lo streaming è completamente compatibile a monte con le versioni più recenti delle API Kafka. Il servizio di streaming supporta le seguenti API Kafka:
- Produttore (v0.10.0 e versioni successive)
- Consumatore (v0.10.0 e versioni successive)
- Connetti (v0.10.0.0 e versioni successive)
- Amministrazione (v0.10.1.0 e versioni successive)
- Gestione dei gruppi (v0.10.0 e versioni successive)
Le seguenti API e funzioni Kafka non sono ancora state implementate nel servizio di streaming:
Client Kafka
Sebbene siano disponibili molti client Kafka, consigliamo i client che sono stati completamente testati e certificati per lavorare con il servizio di streaming.
Lo streaming supporta tutte le versioni di apache-kafka-java.
Lo streaming supporta inoltre i seguenti client Kafka in modo ottimale:
Requisiti e limitazioni
L'implementazione della compatibilità Kafka in Streaming comporta le seguenti configurazioni, limitazioni e comportamenti.
Configurazione senza perdite
Lo streaming supporta solo configurazioni Kafka senza perdite. I dati vengono replicati in tre modi. I messaggi dei producer non avviano una conferma (ACK) dallo streaming fino a quando non vengono sincronizzate almeno due repliche.
Nomi flussi univoci
Se in un compartimento sono presenti flussi con gli stessi nomi, non è possibile utilizzare Kafka con Streaming finché non si eliminano i flussi duplicati, a meno che i flussi non si trovino in pool di flussi diversi. Nello stesso compartimento possono esistere due flussi con lo stesso nome solo se i flussi si trovano in pool di flussi diversi.
I nomi di flusso duplicati vengono altrimenti visualizzati tramite un errore "autenticazione non riuscita". Se non si desidera eliminare i flussi, contattare il team di streaming in modo da poter rinominare i flussi senza perdita di dati.
Riciclo della connessione di bilanciamento del carico
Poiché il protocollo Kafka utilizza connessioni TCP di lunga durata, il livello di compatibilità Streaming Kafka implementa un meccanismo di bilanciamento del carico per bilanciare periodicamente le connessioni tra nodi front-end. Questo meccanismo chiude periodicamente le connessioni per forzarne di nuove. La maggior parte degli SDK Kafka gestisce automaticamente queste disconnessioni durante il consumo, ma la produzione in streaming utilizzando l'API Kafka potrebbe generare errori di disconnessione. Le disconnessioni possono essere mitigate aggiungendo nuovi tentativi alle richieste. I nuovi tentativi fanno parte del kit SDK Kafka e vengono abilitati automaticamente ed è possibile configurarne il funzionamento in modo esplicito.