Elenco risultati ricerca / query da più di 30 servizi Web in modo efficiente e ordinato

1

Abbiamo un sistema che al momento ha circa 25 clienti (non si espanderà mai da questo) e che ognuno di essi ha un servizio Web pubblico che consente a vicenda di interrogare reciprocamente le informazioni interne sull'applicazione. ad esempio il numero di domanda di ricerca (ad es. PAR1056) o il nome del richiedente (es. Bill Bob) e ricevere un elenco di applicazioni corrispondenti (ad esempio se ho digitato PAR I otterrei PAR1, PAR2, PAR3 ecc.) e quindi una volta selezionata un'applicazione, recupera alcune informazioni a riguardo.

Attualmente ognuno di questi servizi ha un front-end di base scritto per interrogarli in cui il campo di ricerca andrà e chiamerà i servizi (automaticamente, non via post back) ed elencerà i risultati. È diventato un requisito (il team di vendita ha già venduto sogni) per creare un portale di front-end che consenta a qualsiasi utente di uno di questi siti di utilizzare una casella di ricerca per digitare il numero dell'applicazione o il nome del richiedente e recuperare i risultati da ciascuno dei 25 siti che eseguono il servizio (quindi fondamentalmente un servizio di ricerca per interrogare tutti i siti).

Avendo questo sold out da sotto di noi, senza un vero concetto già preparato, sto cercando di considerare come ciò possa essere fatto. Non c'è coerenza tra nessuno di questi clienti se non il fatto che stanno utilizzando lo stesso servizio (cioè il sistema che contiene le informazioni dell'applicazione è di terze parti e diverso sito al sito) e geograficamente ciascuno di questi siti si trova a circa 1000 miglia l'uno dall'altro. Ogni servizio contiene da 10.000 a 100.000 applicazioni, quindi penso che l'esecuzione di un servizio di sincronizzazione notturna per portare tutti i risultati in una posizione centrale non è un'opzione praticabile.

Questo mi mette in testa il dubbio di poter interrogare il servizio A per vedere se ha dei risultati, se non passare al servizio B e così via finché non vengono trovati i primi 50 risultati. Se non ci sono risultati fino agli ultimi servizi rispetto alla performance percepita sarà terribile.

L'unico modo logico in cui credo possa essere fatto, è una volta che il testo è digitato, tutti i 25 servizi sono chiamati in una volta e elenca i primi 50 risultati per ciascuno di questi servizi in un bel front-end che separa e distingue quale sito ognuno dei risultati viene da.

L'altra soluzione sarebbe quella di chiamare ciascuno dei 25 servizi allo stesso tempo per vedere se hanno qualche risultato (booleano vero / falso) e quindi eseguire il servizio di quotazione solo sui servizi che restituiscono true.

L'obiettivo è ovviamente percepito come prestazione.

Qualcuno ha già lavorato o lavorato su qualcosa di simile prima e cosa hanno ottenuto con questo?

Grazie,

    
posta Cyassin 19.05.2016 - 01:23
fonte

2 risposte

1

Invece di centralizzare la data durante la notte, perché non utilizzare un'interfaccia utente, che mostra naturalmente i progressi su ciascuno dei siti sottoposti a ricerca.

Il link è un'interfaccia di esempio per la ricerca dei nomi di dominio.

Fonderesti fondamentalmente un'interfaccia utente con 25 righe, che contengono il nome di ciascun tuo database. Il termine di ricerca verrebbe quindi inserito nella parte superiore e ciò sposterà le richieste AJAX a 25 o meno script dell'adattatore che cercano ciascuno uno dei 25 database. Quando i risultati vengono restituiti, vengono visualizzati come voci o elenchi singoli in ciascuna delle 25 righe.

    
risposta data 19.05.2016 - 04:17
fonte
1

Implementa una forma di architettura dei microservizi: ognuno dei 25 siti ha un "front-end" (per loro) che è un back-end del tuo sito web. Esegui richieste a ciascuno di questi che effettua la richiesta appropriata ai siti.

Sta a te come aggregare i risultati che ottieni, se prenderli come vengono, o tenerli e elaborarli in un unico modulo. Il punto principale è che il tuo server web fa richieste a servizi che rappresentano ciascuno dei 25 siti dei clienti.

L'ho fatto per un sistema di controllo del credito - un modulo per utente singolo che mostra la storia di credito di tutte le persone è stato aggregato con richieste a diversi sistemi contenenti dati bancari, carta di credito, affitto, elettorato, frode ecc. Nick e combinare i risultati in seguito. Ogni sistema, noterete, era diverso nei dati posseduti, nel formato e nel modo in cui la richiesta poteva essere fatta. Alcuni restituirebbero i dati richiesti (poiché costano per richiesta), altri verrebbero interrogati due volte - una volta per un hit di ricerca e poi di nuovo per i dettagli, altri sono stati regolarmente importati in un DB localmente trattenuto e ricercati.

Il punto qui è che al server web non importa come i dati tornano, solo che può fare una richiesta comune su ogni microservizio, a ciascun microservizio interessa solo come ottiene i dati dal suo particolare sistema di back-end.

    
risposta data 19.05.2016 - 11:09
fonte

Leggi altre domande sui tag