Esiste un modo elegante per interrogare un argomento di Kafka per un record specifico? L'API REST che sto sviluppando ottiene un ID e deve cercare i record associati a quell'ID in un argomento di Kafka. Un approccio è quello di controllare ogni record nell'argomento tramite un consumatore personalizzato e cercare una corrispondenza, ma vorrei evitare l'overhead di leggere un sacco di record. Kafka ha una capacità di filtraggio veloce e integrata?Query argomento Kafka per record specifici
risposta
L'unico modo veloce per cercare un record in Kafka (per semplificare eccessivamente) è per partizione e offset. La nuova classe di produttori può restituire, tramite future, la partizione e l'offset in cui è stato scritto un messaggio. È possibile utilizzare questi due valori per recuperare molto rapidamente il messaggio.
Quindi, se si crea l'ID fuori dalla partizione e l'offset, è possibile implementare la query veloce. Altrimenti, non così tanto. Ciò significa che l'ID di un oggetto non fa parte del tuo modello di dati, ma piuttosto è generato dal codice Kafka-wellledgable.
Forse questo funziona per voi, forse no.
[Metodo che restituisce il futuro] (https://kafka.apache.org/0101/javadoc/org/apache/kafka/clients/producer/KafkaProducer.html#send (org.apache.kafka.clients.producer.ProducerRecord)) contenente partizione e offset – ruhong
questo potrebbe essere tardi per voi, ma vi aiuterà a come gli altri questa domanda, vi KSQL, Kafka SQL è un open-source streaming motore SQL
AFAIK Kafka Stream esegue il filtraggio sul lato client, non sul broker. Quindi stai ancora recuperando tutti i dati sulla rete. –
Sì, sei corretto @SergeyKostrukov –
- 1. argomento Kafka vs partizione
- 2. Consentire valori specifici per un argomento Argparse
- 3. Replica di messaggi da un argomento di Kafka a un altro argomento di kafka
- 4. Apache Kafka - KafkaStream su argomento/partizione
- 5. Come eliminare un argomento in apache kafka
- 6. kafka ottiene il conteggio delle partizioni per un argomento
- 7. Ricerca di record con due record specifici in un'altra tabella
- 8. Aggiornare record specifici della tabella MySQL
- 9. Generazione di script per record specifici in SQL Server
- 10. Query Elasticsearch per restituire tutti i record
- 11. query SQL per ottenere il record eliminati
- 12. Query SQL per record non duplicati
- 13. Kafka 0.9 - Come creare un argomento tramite java api
- 14. Errore di registro schema Kafka: impossibile scrivere record Noop nel negozio kafka
- 15. Come posso ottenere l'ULTIMO offset di un argomento di kafka?
- 16. come caricare un argomento di Kafka su HDFS?
- 17. Come ottenere l'ultimo offset per una partizione per un argomento di kafka?
- 18. Kafka più utenti per una partizione
- 19. Come posso creare un'istanza di un argomento Mock Kafka per i test di junit?
- 20. come usare kafka acls?
- 21. Query: passando argomento alla funzione anonima
- 22. Kafka Storm Integration using Kafka Spout
- 23. SQLite Query per inserire un record Se non esiste
- 24. query ANSI Sql per forzare il ritorno 0 record
- 25. Query SELEZIONA efficiente per trovare i record entro un mese
- 26. CodeIgniter Active Record vs query regolari
- 27. PHP PDO query richiesta non aggiornata record
- 28. typeahead.js: Restituisce tutti i record Bloodhound su query vuota
- 29. Confusione caching query record attivo con Rails.cache.fetch
- 30. Restituire l'ennesimo record da query MySQL
Come Chris fa notare, Kafka fornisce alcuni meccanismi per il recupero di singoli record. Ma vorrei dire che questo non è ciò per cui Kafka è principalmente progettato, http://kafka.apache.org/documentation.html#uses. Se stai utilizzando Kafka principalmente per recuperare singoli messaggi da un argomento, l'utilizzo di un software diverso potrebbe adattarsi meglio al tuo caso d'uso. – morganw09dev
Sì, ho deciso di implementare un consumer Kafka che scrive su un database Mongo e quindi la mia API REST può richiedere i singoli record da lì. Ho votato la risposta di Chris perché confermava il mio sospetto che non fosse possibile (almeno con eleganza). – user554481