Hai bisogno di consigli su come trasferire i dati tra due sistemi di back-end

2

Ho lavorato per implementare un'API REST rivolta al cliente durante il lavoro nelle ultime settimane. Sebbene non ci sia ancora un requisito, penso che sarebbe davvero bello avere un'analisi per questo.

Ad esempio, per tenere traccia di quante richieste vengono fatte da quale client, ecc.

Sto pensando di creare un'app di analisi nei fine settimana che dovranno ricevere dati dal nostro server API. Non ho mai fatto nulla di simile prima quindi ho alcune domande sul design:

Quale metodo / protocollo funzionerebbe meglio per questo?

Stavo pensando di andare con un modello push, in cui il server API inviava i log / dati alla mia app di analisi in modo tale che potesse persistere e posso creare una bella interfaccia utente con grafici, grafici, ecc. originariamente usava solo REST con HTTP poiché questo è quello che mi è più familiare. Ma stavo anche considerando l'utilizzo di prese per il web. Ho fatto delle ricerche e penso di capire le differenze, ma non mi è ancora chiaro quale sia la scelta migliore.

Una decisione di progettazione che potrebbe influire sulla scelta è questa: il server API deve spingere questi registri / dati ogni volta che viene effettuata una richiesta? Se è così, immagino che i websocket potrebbero essere migliori perché è più adatto a gestire numerose richieste più piccole.

D'altra parte, questo server API potrebbe ricevere tonnellate di richieste. Stavo anche pensando di raccogliere prima un mucchio di registro delle richieste / dati, quindi inviarlo come batch all'app di analisi (magari in base a un intervallo di tempo, o anche in base a un conteggio). Se questo è l'approccio migliore (bulk vs push individuali), REST ha più senso qui?

Mi piacerebbe sentire pensieri e commenti su questo. Sono qui per imparare da tutti, grazie mille per il tuo tempo!

    
posta Isaiah Lee 13.10.2017 - 00:51
fonte

1 risposta

2

Non ci dovrebbero essere richieste sincrone su un altro server mentre l'utente è in attesa di una risposta a meno che non sia assolutamente necessario per formare la risposta. Poiché la registrazione dell'analisi è qualcosa che non modifica la risposta all'utente, l'elaborazione di questi dovrebbe essere eseguita in modo asincrono.

Questo tipo di problema sarebbe spesso risolto spingendo le informazioni di ogni richiesta su una sorta di coda di messaggi, che può essere eseguita molto rapidamente in modo da non rallentare la richiesta. Il sistema di analisi quindi estrae i messaggi dalla coda per elaborarli a suo tempo. Il vero protocollo utilizzato dipende solo dalla coda di messaggi che decidi di utilizzare.

    
risposta data 13.10.2017 - 18:00
fonte

Leggi altre domande sui tag