Nell'architettura dei microservizi, è ragionevole che il servizio che emette l'evento lo ascolti?

1

Abbiamo un'app complessa creata utilizzando più microservizi. A un runtime, uno dei microservizi emette un evento per inizializzare alcuni processi di manutenzione in un altro microservizio, va bene. Ma ultimamente, ci è stato richiesto di inizializzare un processo di manutenzione nello stesso servizio da cui è stato emesso questo evento e nello stesso momento in cui viene emesso questo evento.

Il mio team leader pensa che questo processo di manutenzione debba essere avviato eseguendo una semplice chiamata di funzione dal codice che emette eventi. Penso che sarà più ragionevole che il servizio ascolti l'evento che emette, e al suo arrivo questo processo di manutenzione dell'evento verrà avviato.

Voglio mantenere un modo coerente con cui tutti i microservizi inizializzano lo stesso processo. Mi disturba che in un microservizio questa manutenzione sarà invocata in un modo, mentre in altri in un modo diverso. Inoltre, penso che questa sia una funzionalità che deve essere loose coupled .

Che ne pensi?

    
posta Anatoly 06.03.2018 - 16:33
fonte

1 risposta

2

Se ci sono più istanze di Microservice in esecuzione e tutti attivano l'evento, cosa succede? In altre parole, quali misure di sicurezza devi garantire per garantire che il tuo processo di manutenzione non avvenga n volte per ogni istanza del tuo microservizio?

Detto questo, posso vedere entrambi gli argomenti.

  • Il professionista per te è che il trigger per avviare la manutenzione è lo stesso in tutti i microservizi
  • Il vantaggio per la tua squadra è che ti garantiamo che ogni istanza della tua applicazione gestisce solo la propria manutenzione

Probabilmente c'è qualcosa a cui pensare anche per gli altri servizi.

Sfortunatamente, non c'è una risposta secca e secca a questo, e visto che sei in una squadra devi discutere le implicazioni di entrambe le opzioni e assicurarti che il gruppo sia a bordo.

Questi sono gli argomenti che devi discutere:

  • Impatti sulla gestione del codice
  • Gli impatti sull'affidabilità dell'evento emesso (ad esempio, l'esecuzione di una funzione subito dopo l'invio di un evento potrebbe avere un impatto sulla tempistica del prossimo evento)
  • Effetti sulla scalabilità

Detto questo, se non riesci ad arrivare a un accordo che entrambi, la tua squadra è in vantaggio. (S) È pronto a rispondere agli impatti e alle decisioni del piano di gestione nel codice base.

    
risposta data 06.03.2018 - 16:49
fonte

Leggi altre domande sui tag