Cache utente locale nei post microservizio

4

Data la seguente architettura dei microservizi:

Ogni post ha un utente, per il quale vogliamo avere tutte le informazioni disponibili.
È più personalizzato per:

  • avere una cache utente locale nei post microservizio
  • Effettua chiamate api al servizio utente ad ogni richiesta
  • Memorizza le informazioni dell'utente insieme a ogni post

Non mi piace particolarmente l'ultima opzione quando si memorizza nel database; a causa della duplicazione, ma anche perché non aggiorna i dati dell'utente quando qualcosa cambia.

Che cosa ne pensi?

    
posta Trace 23.08.2018 - 01:31
fonte

1 risposta

1

Ci sono più opzioni

  1. Invece di memorizzare tutti i dati relativi a un utente nell'oggetto post, memorizza solo le informazioni minime che puoi mostrare quando qualcuno passa sopra il nome utente. Se un utente fa clic sul nome utente, puoi fare una richiesta separata al servizio micro dell'utente per ottenere un oggetto utente dettagliato.

  2. Se vuoi davvero tutte le informazioni dell'utente (e non ti piace l'opzione 1), mentre stai inviando n numero di post all'interfaccia utente (fai una query batch a Cassandra per ottenere tutti gli oggetti di n utenti) . Non sono sicuro che Cache abbia la capacità di trovare tutti gli oggetti per tutte le chiavi. (idealmente la cache dovrebbe avere questa capacità).

  3. Simile a 2 ... Invece di chiamare microservice utente per ogni utente, è possibile sviluppare un endpoint api che può recuperare la risposta in blocco compresi i dati di più utenti

Non è ideale avere una cache utente nel post microservice, in futuro renderà la vita difficile assicurarsi che la cache utente nel servizio post micro sia sincronizzata con i dati del servizio micro dell'utente. La dipendenza incrociata non è una buona opzione. Se due squadre indipendenti ci stanno lavorando, non è l'ideale.

    
risposta data 23.08.2018 - 03:19
fonte

Leggi altre domande sui tag