Progettazione dell'applicazione microservizio

0

Sto cercando di progettare un'applicazione che abbia un back-end Microservices e un front-end SPA. Ho qualche preoccupazione per le prestazioni, una singola pagina CRUD da popolare potrebbe richiedere chiamate a 6 o 7 endpoint di servizio che non riesco a immaginare sarà veloce.

È buona norma implementare un livello di servizio aggiuntivo che essenzialmente crea modelli di visualizzazione con tutte le informazioni richieste anziché richiedere al cliente di effettuare così tante chiamate? Come si chiama questo modello?

    
posta Craig 01.08.2017 - 00:16
fonte

2 risposte

2

Hai due opzioni di base.

  1. Crea un servizio 'wrapper' per l'interfaccia utente che effettua chiamate aggregate per ciascun servizio di cui ha bisogno e inserisce i dati nel modulo in cui l'interfaccia utente ha bisogno.
  2. Crea un servizio che abbia sempre le informazioni più aggiornate già archiviate nel suo datastore per ogni risorsa a cui sei interessato.

Ho fatto # 1 e non scala molto bene. Soprattutto se devi impaginare i dati e avere complicate query di ricerca che devono filtrare i dati che sono memorizzati in diversi micro servizi. Se prevedi strongmente che potresti aver bisogno di tali capacità, non andrei in questa tana del coniglio.

Stiamo iniziando a lavorare sempre di più con # 2 ora. Sulla base della mia ricerca ci sono molti negozi che seguono questo "modello". Si chiama anche gestione dei dati guidata . Ciò significa che ogni micro servizio può trasmettere eventi asincroni quando i loro dati cambiano e chiunque può sottoscrivere questi eventi e reagire aggiornando il proprio archivio dati in modo appropriato. Nel tuo caso potresti avere un semplice archivio dati per ospitare tutte le informazioni necessarie a servire l'interfaccia utente e assicurarti di rilevare correttamente questi eventi e aggiornare i dati.

Questo è uno degli inconvenienti molto gravi dell'utilizzo di un'architettura di micro-servizi. La gestione dei dati è molto più difficile a causa del contesto limitato . Andate lungo il percorso di aggregazione delle chiamate fino a quando non vi accorgete che non sarà sufficiente, quindi potreste dover iniziare a gestire i dati gestiti dagli eventi che è solo un lavoro extra per "denormalizzare" i vostri dati in un unico datastore per una query veloce.

    
risposta data 01.08.2017 - 01:09
fonte
2

Di solito implemento un livello di servizio dedicato alle esigenze di ciascun cliente specifico. Presumo che tu stia parlando di una webapp che deve fare 6-7 richieste per rendere una pagina. Come hai notato, questo non è scalabile o performante per un client web per fare tante richieste.

Is is good practice to implement an additional service layer that essentially creates view models with all the information required rather than requiring the client make so many calls?

Sì, è quello che farei. Creerei un nuovo microservizio per soddisfare le esigenze di questa webapp. Crea un'API in questo microservizio che mappa pagine / richieste della tua webapp a una o più richieste ad altri servizi. La webapp dovrebbe solo fare una singola richiesta al tuo back-end per ogni azione / pagina.

What is this pattern called?

Non so se si tratta di uno schema specifico, ma è essenzialmente il microservizio equivalente al modello di adattatore .

    
risposta data 01.08.2017 - 00:27
fonte

Leggi altre domande sui tag