2015-11-27 24 views
5

Sto studiando l'architettura dei microservizi e mi sto davvero chiedendo qualcosa.Microservizio, amqp e registro di servizio/rilevamento

Sono abbastanza d'accordo con il fatto di utilizzare (indietro) l'individuazione del servizio per rendere possibile la richiesta su microservizi basati su REST. Devo sapere dov'è il servizio (o almeno la parte anteriore del cluster di server) per fare richieste. Quindi ha senso essere in grado di scoprire un ip: port in quel caso.

Ma mi chiedevo quale potrebbe essere l'obiettivo dell'utilizzo del registro di sistema/rilevamento quando si ha a che fare con AMQP (basato solo, senza chiamate possibili HTTP)?

Voglio dire, usare AMQP è proprio come "Ho bisogno di questo, e mi aspetto che qualcuno mi risponda", non devo sapere chi è il server che mi ha inviato la risposta.

Quindi qual è l'obiettivo dell'utilizzo del registro di sistema/rilevamento con microservizio basato su AMQP?

Grazie per il vostro aiuto

+0

Interessante domanda. Avevo anche pensato che la MOM funzionasse in modo simile a una funzione di scoperta dei servizi. Garantisce la trasparenza e l'elasticità della posizione. Il MOM è come un registro di servizio e tutto ciò che devi sapere è il nome del servizio, ad es. il nome dello scambio e MOM instrada e bilancia il carico del messaggio a uno dei fornitori di servizi (consumatori) e quindi ti dà una risposta. Francamente, non ho ottenuto i punti forniti nell'unica risposta esistente oggi. –

risposta

4

AMQP (ogni mamma, in realtà) fornisce un modo per i processi di comunicare senza dover in mente su indirizzi IP, la sicurezza delle comunicazioni, di routing, tra le altre preoccupazioni. Ciò non significa necessariamente che qualsiasi processo possa avere fiducia o persino avere informazioni sui processi con cui comunica.

Le code di messaggi risolvono metà del processo: come raggiungere il servizio remoto. Ma non risolvono l'altra metà: quale servizio è quello giusto per me. In altre parole, quale servizio:

  • ha le risorse di cui ho bisogno
  • può fidare (è ospitato su un server affidabile, ha un'implementazione del servizio soddisfacente, si trova in un paese dove le leggi locali sono compatibili con le vostre esigenze, ecc.)
  • addebita quello che volete pagare (anche se raramente le persone discutono dei costi quando si tratta di microservizi)
  • ci sarà durante tutto il tempo necessario per elaborare il vostro servizio - tenete presente che i server sono diventando sempre più volatile. Alcuni server sono in realtà contenitori che possono durare per un paio di minuti.

Questi due problemi sono quasi linearmente indipendenti. Per risolvere il secondo tipo di problemi, hai broker di risorse in Grid computing. C'è anche l'allocazione delle risorse per assicurarsi che l'ultimo elemento sopra sia gestito correttamente.

Esistono alcune strategie alternative come il multicasting l'intenzione di utilizzare un servizio e l'attesa di risposte con le offerte. Ad esempio, potresti avere un'asta al ribasso in questo caso.

In breve, la regola generale è che se non si dispone di una conoscenza a priori sul servizio che si intende utilizzare (hardcoded o in alcuni file di configurazione), l'agente dovrà negoziare, che include il servizio dinamico scoperta.

+0

Sto provando davvero a capire i punti della tua risposta.Si vede che MOM offrirà trasparenza di posizione, elasticità e bilanciamento del carico, che sono caratteristiche chiave della scoperta dei servizi. Non riesco a capire bene dove "le risorse di cui ho bisogno" o "ci si può fidare", ecc, potrebbe essere un problema qui. Posso aggiungere tanti contenitori di finestra mobile effimeri a nuovi utenti e questi verranno elasticamente. Usando gli argomenti posso controllare aspetti come usare il consumatore più vicino o il più economico, e il MOM probabilmente offre già funzionalità di sicurezza. Se potesse elaborare un po 'di più sarebbe fantastico –

+0

MOM creerà una rete di sovrapposizione per te. Se si controllano tutti i processi collegati a questa rete overlay, potrebbe non essere necessario il registro di servizio o il rilevamento. Si può semplicemente creare un protocollo in cui si invia un messaggio broadcast chiedendo "chi può farlo per me" e si fida delle risposte. – Akira

+0

Ma la domanda era "in quale situazione trarrò vantaggio dal registro di servizio e dalla scoperta". Una possibile risposta è legata all'assenza di una precedente fiducia su tutti i partecipanti alla MOM. Se non puoi o non vuoi fidarti di nessuno, puoi fidarti solo del registro. Se il registro suggerisce di utilizzare la risorsa A, è possibile interagire con A. Nel tuo esempio, sembra che tu controlli tutti i partecipanti, quindi disporre di un registro non fornirà alcuna funzionalità aggiuntiva a tale riguardo. – Akira