Storm Emit esegue la latenza
-
21-12-2019 - |
Domanda
Ho una topologia della tempesta che funziona in un ambiente distribuito su 4 nodi UNIX.
Ho un JMSPout che riceve un messaggio e poi lo inoltra su un Parsebolt che analizzerà il messaggio RAW e creerà un oggetto.
Per aiutare a misurare la latenza il mio jmspout emette l'ora corrente come valore e quindi quando il Parsebolt riceve di nuovo questo otterrà la differenza come la latenza.
Utilizzando questo approccio Sto vedendo 200+ ms che non suona affatto.Qualcuno ha un'idea per quanto riguarda il motivo per cui questo potrebbe essere?
Soluzione
È probabilmente un problema di threading.La tempesta utilizza lo stesso thread per tutti i becco nexttuple () chiamate e tuple emesse emesse non vengono elaborate fino alla fine della chiamata nexttupla ().C'è anche un ciclo molto stretto che chiama ripetutamente il metodo NextTuple () e può consumare molti cicli se non si mette almeno un breve sonno in prossima implementazione ().
Prova ad aggiungere un sonno (10) ed emettono solo una tupla per nexttuple ().