Come faccio a effettuare più chiamate a un servizio web senza gravare pesantemente su quel servizio? Domanda in scala

1

c'è un buon modello per come inviare più chiamate a un servizio web ma senza tassare e garantire che i dati vengano rispediti? Non ne so abbastanza per descrivere correttamente il problema anche per iniziare a googling correttamente: i risultati correnti di Google confrontano le risposte del wcf streaming vs non streaming?

Scenario: sto lavorando su un'app (sono un jr. dev.) che ha bisogno di raccogliere informazioni da diverse fonti su un 'cliente' e i domini che possiedono

tecniche: per una delle fonti, ho bisogno di inviare una stringa di array di domini a un servizio web e questo servizio web restituisce una voce per ogni nome di dominio, ma questo elenco di nomi di dominio sarà lungo migliaia - vorrei tentare di dividere questo elencare in blocchi di dimensioni di morso (nomi di dominio 1k ciascuno) e poi ... accodarli per inviare a quel servizio Web, ma assicurarsi che il servizio Web non salti uno

PseudoRequirements: Il consumatore della pagina web non si preoccupa di quanto tempo ci vuole, ma vorrebbe un elenco di risultati in primo piano che non impone la paginazione per navigare.

Teoria corrente: Dovrei prendere la mia massiccia lista di 30k, spezzarla in pezzi da 1k, farcire ogni pezzo di dimensioni di 1k in un oggetto 'richiesta', assemblare quei 'pezzi di richiesta' in una 'lista di blocchi di richieste' e scorrere su quell'elenco (in sequenza / bloccante, quindi non ho strangolato il WS) e per ogni 'chunk di richiesta' ritorna un 'pezzo di risposta' assemblare quelli in un elenco, e quindi passare l'elenco di nuovo nel front-end per la visualizzazione? è questo un metodo praticabile? c'è un modo migliore per mettere in coda gli oggetti? Qualcuno sa fuori mano qualche articolo utile per questo tipo di accodamento? ci sono "trucchi" o altri elementi da considerare prima di tentare il mio primo passaggio?

Altre modifiche: -Non ho il pieno controllo del servizio di ricezione, non riesco a visualizzare il codice e gli sviluppatori che lo gestiscono sono ... meno che sensibili alle e-mail. Al momento non conosco i limiti del test di stress del servizio web. Ho inviato un'email ai proprietari di quel componente, ma non ho ancora ricevuto risposta: stavo per elaborare il mio progetto mentre li aspettavo.

    
posta Paul42 10.12.2013 - 19:35
fonte

2 risposte

0

Penso che la tua strategia sia OK. Altre cose da considerare: prima di inviare messaggi, sappi quanti ne hai intenzione di inviare. Se hai n messaggi da inviare, potresti non voler visualizzare i risultati completi finché non ottieni tutte le tue risposte.

Ci sono altre cose che potresti fare come aggiungere ID di correlazione o numeri di sequenza per rendere più facile il tracciamento di tutti i messaggi, ma ciò presuppone che tu abbia il controllo sul servizio di ricezione, e non dici se lo fai.

Altre domande: hai effettivamente provato questo servizio web per vedere cosa può ragionevolmente gestire in una singola richiesta? Potresti scoprire che può gestire più di quanto pensi. O meno di quanto pensi. Sai per certo che una singola richiesta con 1000 nomi di dominio è ottimale?

    
risposta data 10.12.2013 - 19:46
fonte
0

È ammirevole che tu lo prenda in considerazione, ma se i proprietari delle API non ti stanno aiutando, fai del tuo meglio.

Personalmente lo scomporlo in blocchi di traffico "normali", se si aspettano che le persone lancino 1000 alla volta per farlo poi. Normalmente questa roba verrebbe elencata nei termini e condizioni di API

Con Internet / reti e server web moderni potresti probabilmente superare questi 30.000 record prima che qualcuno avesse il tempo di lamentarsi, la scorsa notte ho fatto un discreto raschiamento di 120.000 record da un sito web in poche ore e ho semplicemente aggiunto un secondo ritardo tra ogni richiesta.

La chiave qui è che se non ricevono chiamate che dicono che le persone non possono accedere all'API, non c'è alcun problema, dal momento che l'hanno messo in accesso e non lo stai abusando!

    
risposta data 11.12.2013 - 22:30
fonte

Leggi altre domande sui tag