Come accedere a grandi quantità di dati per l'apprendimento automatico in un'architettura di microservizi

5

Immagina di costruire un algoritmo di raccomandazione del prodotto per un'applicazione ecommerce che è costruita come un'architettura di microservizi, questa architettura con servizi separati per utenti e prodotti. L'algoritmo dovrebbe essere esposto come un servizio di raccomandazione che, dato un id utente, restituisce un elenco di prodotti consigliati in base alla cronologia degli acquisti.

Ecco il problema, supponiamo che l'algoritmo della raccomandazione sia offline, quindi viene eseguito in batch e richiede la cronologia degli acquisti di ogni utente per ogni esecuzione, come si ottengono questi dati dal servizio utente? In un'architettura monolitica basta leggere direttamente da una copia report del database che consente query complesse di grandi dimensioni senza alcun impatto sulle prestazioni di produzione.

La risposta ovvia a me sembra essere che fai una richiesta enorme al servizio utenti per ogni corsa e assicurati di avere la capacità di gestire quella richiesta, ci sono soluzioni migliori?

    
posta Alex jg 15.01.2015 - 13:56
fonte

1 risposta

3

Conserva una copia della cronologia degli acquisti degli utenti all'interno del tuo servizio di consigli. Quindi, per ogni nuova esecuzione batch, deve solo richiedere gli utenti aggiornati dal servizio utenti (un aggiornamento delta, se si desidera chiamarlo in quel modo).

Avrai bisogno di un grande aggiornamento per aumentare il servizio di consigli, e possibilmente un grande aggiornamento di sincronizzazione di volta in volta, ma non è necessario richiedere l'intera cronologia acquisti ogni volta.

    
risposta data 15.01.2015 - 15:59
fonte

Leggi altre domande sui tag