Architettura dei microservizi:
Dal mio , è necessario avere una conoscenza di base dell'architettura dei microservizi.Ma essendo un professionista con richiederà più delle semplici basi. In questo blog, entrerai nella profondità dei concetti architettonici e li implementerai utilizzando un caso di studio UBER.
In questo blog imparerai quanto segue:
- Definizione dell'architettura dei microservizi
- Concetti chiave dell'architettura dei microservizi
- Pro e contro dell'architettura dei microservizi
- UBER - Case Study
Puoi fare riferimento a , per comprendere i fondamenti e i vantaggi dei microservizi.
final infine e finalizzare in java
Sarebbe giusto solo se ti fornissi la definizione di microservizi.
Definizione di microservizi
In quanto tale, non esiste una definizione corretta di Microservices aka Microservice Architecture, ma si può dire che si tratta di un framework costituito da piccoli servizi distribuibili individualmente che eseguono operazioni diverse.
I microservizi si concentrano su un singolo dominio aziendale che può essere implementato come servizi distribuibili completamente indipendenti e implementarli su diversi stack tecnologici.
Figura 1: Differenza tra architettura monolitica e microservice - Architettura microservice
Fare riferimento al diagramma sopra per comprendere la differenza tra l'architettura monolitica e quella a microservizi.Per una migliore comprensione delle differenze tra le due architetture, puoi fare riferimento al mio blog precedente
Per farti capire meglio, lascia che ti spieghi alcuni concetti chiave dell'architettura dei microservizi.
Concetti chiave dell'architettura dei microservizi
Prima di iniziare a creare le proprie applicazioni utilizzando i microservizi, è necessario essere chiari sull'ambito e sulle funzionalità dell'applicazione.
Di seguito sono riportate alcune linee guida da seguire durante la discussione sui microservizi.
Linee guida durante la progettazione di microservizi
- In qualità di sviluppatore, quando decidi di creare un'applicazione separa i domini e sii chiaro con le funzionalità.
- Ogni microservizio progettato deve concentrarsi su un solo servizio dell'applicazione.
- Assicurati di aver progettato l'applicazione in modo tale che ogni servizio sia distribuibile individualmente.
- Assicurati che la comunicazione tra i microservizi avvenga tramite un server senza stato.
- Ogni servizio può essere ulteriormente trasformato in servizi più piccoli, con i propri microservizi.
Ora che hai letto le linee guida di base durante la progettazione dei microservizi, vediamo di capire l'architettura dei microservizi.
Come funziona l'architettura dei microservizi?
Una tipica architettura di microservizi (MSA) dovrebbe essere costituita dai seguenti componenti:
- Clienti
- Fornitori di identità
- API Gateway
- Formati di messaggistica
- Banche dati
- Contenuto statico
- Gestione
- Scoperta del servizio
Fare riferimento allo schema seguente.
Figura 2: Architettura dei microservizi - Architettura dei microservizi
So che l'architettura sembra un po 'complessa, ma lasciaiosemplificalo per te.
1. Clienti
L'architettura inizia con diversi tipi di client, da diversi dispositivi che cercano di eseguire varie funzionalità di gestione come ricerca, compilazione, configurazione ecc.
2. Fornitori di identità
Queste richieste dai client vengono quindi trasmesse ai provider di identità che autenticano le richieste dei client e comunicano le richieste a API Gateway. Le richieste vengono poi comunicate ai servizi interni tramite un gateway API ben definito.
3. Gateway API
Poiché i client non chiamano i servizi direttamente, API Gateway funge da punto di ingresso per i client per inoltrare le richieste ai microservizi appropriati.
I vantaggi dell'utilizzo di un gateway API includono:
- Tutti i servizi possono essere aggiornati all'insaputa dei clienti.
- I servizi possono anche utilizzare protocolli di messaggistica non compatibili con il Web.
- Il gateway API può eseguire funzioni trasversali come fornire sicurezza, bilanciamento del carico ecc.
Dopo aver ricevuto le richieste dei client, l'architettura interna è costituita da microservizi che comunicano tra loro tramite messaggi per gestire le richieste dei client.
4. Formati di messaggistica
Esistono due tipi di messaggi attraverso i quali comunicano:
- Messaggi sincroni: Nella situazione in cui i client attendono le risposte da un servizio, i microservizi tendono solitamente a utilizzarli REST (Representational State Transfer) poiché si basa su uno stateless, client-server e Protocollo HTTP . Questo protocollo viene utilizzato in quanto è un ambiente distribuito ogni funzionalità è rappresentata con una risorsa per eseguire operazioni
- Messaggi asincroni: Nella situazione in cui i client non aspettano le risposte da un servizio, i Microservizi tendono solitamente a utilizzare protocolli come AMQP, STOMP, MQTT . Questi protocolli vengono utilizzati in questo tipo di comunicazione poiché la natura dei messaggi è definita e questi messaggi devono essere interoperabili tra le implementazioni.
La prossima domanda che potrebbe venirti in mente è come gestiscono i dati le applicazioni che utilizzano i microservizi?
5. Trattamento dei dati
Ebbene, ogni Microservizio possiede un database privato per acquisire i propri dati e implementare le rispettive funzionalità aziendali. Inoltre, i database dei Microservizi vengono aggiornati solo tramite la loro API di servizio. Fare riferimento allo schema seguente:
Figura 3: Rappresentazione dei microservizi che gestiscono i dati - Architettura dei microservizi
I servizi forniti da Microservices vengono trasferiti a qualsiasi servizio remoto che supporti la comunicazione tra processi per diversi stack tecnologici.
6. Contenuto statico
Dopo che i microservizi comunicano al loro interno, distribuiscono il contenuto statico a un servizio di archiviazione basato su cloud che può fornirli direttamente ai client tramite Content Delivery Network (CDN) .
Oltre ai componenti di cui sopra, ci sono altri componenti che compaiono in una tipica architettura di microservizi:
7. Gestione
java cos'è un vettore
Questo componente è responsabile del bilanciamento dei servizi sui nodi e dell'identificazione dei guasti.
8. Service Discovery
Funge da guida ai microservizi per trovare la via di comunicazione tra di loro in quanto mantiene un elenco di servizi su cui si trovano i nodi.
Iscriviti al nostro canale youtube per ricevere nuovi aggiornamenti ..!
Ora, esaminiamo i pro e i contro di questa architettura per ottenere una migliore comprensione di quando utilizzare questa architettura.
Pro e contro dell'architettura dei microservizi
Fare riferimento alla tabella seguente.
Vantaggi dell'architettura dei microservizi | Contro del microservizio Architettura |
Libertà di utilizzare diverse tecnologie | Aumenta le sfide per la risoluzione dei problemi |
Ogni microservizio si concentra su una singola capacità aziendale | Aumenta il ritardo dovuto alle chiamate remote |
Supporta singole unità dispiegabili | Maggiori sforzi per la configurazione e altre operazioni |
Consente frequenti rilasci del software | Difficile mantenere la sicurezza delle transazioni |
Garantisce la sicurezza di ogni servizio | Difficile tenere traccia dei dati attraverso vari confini di servizio |
Parallelamente vengono sviluppati e distribuiti più servizi | Difficile spostare il codice tra i servizi |
Cerchiamo di capire di più sui microservizi confrontando l'architettura precedente di UBER con quella attuale.
CASO DI STUDIO UBER
Architettura precedente di UBER
Come molte startup, UBER ha iniziato il suo viaggio con un'architettura monolitica costruita per un'unica offerta in una singola città. Avere una base di codice sembrava ripulita in quel momento e ha risolto i problemi aziendali principali di UBER. Tuttavia, quando UBER ha iniziato ad espandersi in tutto il mondo, ha dovuto affrontare rigorosamente vari problemi relativi alla scalabilità e all'integrazione continua.
Figura 4: Architettura monolitica di UBER - Architettura di microservizi
Il diagramma sopra mostra la precedente architettura di UBER.
- È presente un'API REST con cui si connettono il passeggero e il conducente.
- Tre diversi adattatori vengono utilizzati con API al loro interno, per eseguire azioni come fatturazione, pagamenti, invio di e-mail / messaggi che vediamo quando prenotiamo un taxi.
- Un database MySQL per memorizzare tutti i loro dati.
Quindi, se noti qui, tutte le funzionalità come la gestione dei passeggeri, la fatturazione, le funzionalità di notifica, i pagamenti, la gestione dei viaggi e la gestione dei conducenti sono state composte in un unico framework.
Dichiarazione problema
Mentre UBER ha iniziato ad espandersi in tutto il mondo, questo tipo di framework ha introdotto varie sfide. Le seguenti sono alcune delle principali sfide
- Tutte le funzionalità dovevano essere ricostruite, distribuite e testate più e più volte per aggiornare una singola funzionalità.
- La correzione dei bug è diventata estremamente difficile in un singolo repository poiché gli sviluppatori hanno dovuto cambiare il codice ancora e ancora.
- Il ridimensionamento delle funzionalità contemporaneamente all'introduzione di nuove funzionalità in tutto il mondo è stato piuttosto difficile da gestire insieme.
Soluzione
Per evitare tali problemi UBER ha deciso di cambiare la sua architettura e di seguire le altre aziende in iper-crescita come Amazon, Netflix, Twitter e molte altre. Pertanto, UBER ha deciso di suddividere la sua architettura monolitica in più basi di codice per formare un'architettura di microservizi.
Fare riferimento al diagramma seguente per esaminare l'architettura dei microservizi di UBER.
Figura 5: Architettura dei microservizi di UBER - Architettura dei microservizi
come fare il potere in python
- Il cambiamento principale che osserviamo qui è l'introduzione di API Gateway attraverso il quale sono collegati tutti i conducenti e passeggeri. Dall'API Gateway, sono collegati tutti i punti interni come la gestione dei passeggeri, la gestione dei conducenti, la gestione dei viaggi e altri.
- Le unità sono singole unità schierabili separate che eseguono funzionalità separate.
- Ad esempio: se desideri modificare qualcosa nei microservizi di fatturazione, devi solo distribuire solo i microservizi di fatturazione e non devi distribuire gli altri.
- Tutte le funzionalità sono state ridimensionate individualmente, ovvero l'interdipendenza tra ciascuna funzionalità è stata rimossa.
- Ad esempio, sappiamo tutti che il numero di persone che cercano un taxi è più comparativamente superiore a quello delle persone che prenotano effettivamente un taxi ed effettuano i pagamenti. Questo ci porta a dedurre che il numero di processi che lavorano sul microservizio di gestione dei passeggeri è maggiore del numero di processi che lavorano sui pagamenti.
In questomodo, UBER ha beneficiato del cambiamentosuoarchitettura dal monolitico ai microservizi.
Spero che ti sia piaciuto leggere questo post su Microservice Architecture.Mi verranno in mente altri blog, che conterranno anche delle pratiche.
Interessato a saperne di più sui microservizi?
Se desideri imparare i microservizi e creare le tue applicazioni, dai un'occhiata al nostro che viene fornito con formazione dal vivo con istruttore e esperienza di progetto nella vita reale. Questa formazione ti aiuterà a comprendere i microservizi in profondità e ti aiuterà a raggiungere la padronanza dell'argomento.
Hai domande per noi? Si prega di menzionarlo nella sezione commenti di ' Architettura dei microservizi 'E ti ricontatterò.