Come posso gestire il multiproduttore a un particolare utente singolo in Kafka?

1

Sto valutando il Kafka. Fornisce alcune caratteristiche interessanti che desidero utilizzare, in particolare la durata predefinita e l'accesso ai messaggi precedenti per i nuovi consumatori, ogni volta che il consumatore desidera raggiungere qualcosa dal passato.

Ho diviso la comunicazione in tre tipi:

  • app al server - dove voglio usare la semplice messaggistica e preferisco non occuparci di nulla in passato, dato che i dati dovrebbero essere gestiti on-line - spingendo i dati all'argomento come eventi
  • server per tutte le app - trasmissione di configurazione in cui i dati vengono trasferiti alle configurazioni degli argomenti e l'app può consumarli e raggiungere i messaggi precedenti in caso di problemi
  • e il server su app particolari - qui voglio usare topic con partizionamento come configurations_per_app_id; Voglio inviare i dati all'argomento con il tasto di partizionamento corretto

Le mie domande sono - se questi tre approcci sono corretti? Soprattutto il terzo, in quanto non ho trovato alcun modo su come gestire tale caso d'uso: ho trovato solo che è possibile utilizzare la chiave di partizionamento, ma nel caso in cui, ad esempio, ci siano 10.000 app che consumano da determinati argomenti usando chiave di partizione. È così che dovrebbe essere fatto, o possiamo usare qualche altra base di approccio su Kafka? C'è qualche schema per tali bisogni?

    
posta h__ 03.10.2017 - 14:00
fonte

1 risposta

1

Il terzo non è valido; tutti i consumatori su un argomento ottengono tutti i messaggi. Le partizioni vengono utilizzate per distribuire il carico tra più istanze consumer (stesso gruppo) e per mantenere l'ordine dei messaggi per chiavi specifiche.

Per la messaggistica point-to-point è necessario un argomento separato per ogni app.

Con JMS puoi usare i selettori di messaggi per selezionare i messaggi che ti interessano (purché il publisher fornisca qualcosa su cui selezionare).

Con RabbitMQ puoi usare uno scambio di argomenti e ogni consumatore (gruppo) lega una coda con una chiave di routing che selezionerà i messaggi di cui è interessato.

Se non vuoi utilizzare un argomento di kafka per ciascun consumatore, probabilmente avrai bisogno di un approccio ibrido per soddisfare tutti i tuoi casi d'uso.

I consumatori possono consumare da più argomenti.

    
risposta data 03.10.2017 - 14:36
fonte

Leggi altre domande sui tag