Como acessar grandes quantidades de dados para aprendizado de máquina em uma arquitetura de microsserviços

5

Imagine que você está construindo um algoritmo de recomendação de produtos para um aplicativo de comércio eletrônico que é construído como uma arquitetura de microsserviços, tendo essa arquitetura serviços separados para usuários e produtos. O algoritmo deve ser exposto como um serviço de recomendação que, dado um ID de usuário, retorna uma lista de produtos recomendados com base em seu histórico de compras.

Aqui está o problema, suponha que o algoritmo de reccomendação esteja off-line para que seja executado em lotes e exija o histórico de compras de cada usuário para cada execução, como você obtém esses dados do serviço de usuário? Em uma arquitetura monolítica, basta ler diretamente de uma cópia de relatório do banco de dados, permitindo consultas complexas e grandes sem afetar o desempenho da produção.

A resposta óbvia para mim parece ser que você apenas faz uma solicitação enorme para o serviço de usuários em cada execução e garante que tem capacidade para lidar com essa solicitação. Existem soluções melhores?

    
por Alex jg 15.01.2015 / 13:56
fonte

1 resposta

3

Mantenha uma cópia do histórico de compras dos usuários no seu serviço de recomendações. Então, para cada nova execução em lote, basta solicitar os usuários atualizados do serviço de usuários (uma atualização delta, se você quiser chamá-la assim).

Você precisará de uma grande atualização para acelerar o serviço de recomendações e possivelmente uma grande atualização de sincronização de tempos em tempos, mas não é necessário solicitar todo o histórico de compras a cada vez.

    
por 15.01.2015 / 15:59
fonte