Ho un'applicazione per l'architettura di servizi micro. Uno dei servizi contiene tutte le informazioni relative all'utente. Un altro servizio contiene un insieme di oggetti business. L'interfaccia utente angolare chiama le API di riposo di user-service e business-service per eseguire operazioni come la gestione degli utenti, la gestione aziendale. Le tabelle nel servizio aziendale contengono l'ID utente del servizio utente, ad esempio il proprietario di un oggetto business. Poiché sono database diversi, non esiste alcun vincolo referenziale.
Voglio visualizzare un elenco di oggetti business nell'interfaccia utente. Voglio poter filtrare i risultati in base al nome del proprietario. Tieni presente che il servizio aziendale non conosce i dettagli dell'utente tranne l'ID utente.
Qual è il modo migliore per eseguire query sui dati appartenenti a più servizi?
Alcune opzioni in mente
- memorizza i dati ridondanti nel servizio aziendale, ma ciò potrebbe andare fuori sincrono. Potrebbe essere necessario eseguire un cron job per mantenerlo sincronizzato con il servizio utente. Ma la soluzione è brutta.
- Innanzitutto, ottieni l'elenco degli ID utente corrispondenti al nome dell'utente. Passa quegli ID al servizio aziendale per ottenere l'elenco degli oggetti commerciali lì ottenendo il filtro.
Entrambe le soluzioni non sembrano pulite ...