gRPC e queue broker non si escludono a vicenda. Non è che dobbiamo scegliere l'uno o l'altro. Potremmo scegliere uno, entrambi o nessuno. Potremmo anche utilizzare un server SMTP come coda o un file di testo normale.
Possono completarsi a vicenda poiché soddisfano diversi scopi.
Il disaccoppiamento
Pensa in una pipeline in cui ogni fase è un processo (servizio).
[Process A] < ----- > [Process B]
Le frecce indicano la cardinalità e la dipendenza.
Il diagramma mostra due servizi client e server allo stesso tempo. A è client e server di B . E viceversa. Tale IPC implica che i servizi siano consapevoli l'uno dell'altro indipendentemente dal protocollo di comunicazione (HTTP 1/2, socket Web, socket, ecc.).
Ora metti una coda o un intermediario tra
[Process A] <----- > [Queue|Broker] <------> [Process B]
Le frecce indicano la cardinalità o la dipendenza.
Le code e i broker rompono la cardinalità tra i servizi, quindi la dipendenza. Non hanno più bisogno di essere consapevoli l'uno dell'altro. Potremmo persino abbandonare le interfacce pubbliche dei servizi, poiché potrebbero non essere più necessarie. Nessuna interfaccia pubblica, nessun accoppiamento.
Adozione delle funzioni
Le code e i broker di solito sono progettati per essere performanti / affidabili / coerenti / scalabili / resilienti per quanto riguarda I / O e possiamo fornire alla nostra architettura queste funzionalità implementando l'una o l'altra. Ad esempio, gRPC è un meccanismo di trasporto per richieste / risposte e casi di utilizzo dello streaming (non persistenti). Se non possiamo permetterci i messaggi mancanti, probabilmente dovremo cercare alternative o componenti architetturali complementari. Code e broker potrebbero fare il lavoro. La persistenza non è l'unica funzione per fornire il nostro IPC. Per citarne alcuni
- Consistenza e persistenza dei messaggi
- Acquisizione e batch
- Gestione degli errori
- Failover
- Riprova
- Scalabilità
- Modularità o compartimentalità (con broker o code dedicati)
- Compatibilità con diversi protocolli pronti all'uso
- Tracciabilità del traffico
- Monitoraggio del traffico
- Tooling
Link correlati
Ho trovato questo post di blog che si tuffa un po 'di più nell'argomento.
Vale la pena menzionare post sul blog Nginx su Microservice e implementazioni IPC .