L'uso di un broker di messaggi è in linea con i Microservizi di costruzione di Sam Newman?

7

In uno dei progetti il CTO ha scelto di utilizzare un broker di messaggi per connettere i microservizi. L'uso di tale software è allineato con la teoria dei microservizi?

Tentativo di rispondere alla domanda

InBuildingMicroservices>diSamNewmancapitolo12:Portaretuttoinsieme,l'autoremenzionasetteprincipi,tracuiDecentralizetuttelecose.L'ultimoparagrafodiquellaparteèilseguente:

Thisprinciplecanapplytoarchitecturetoo.Avoidapproacheslikeenterpriseservicebusororchestrationsystems,whichcanleadtocentralizationofbusinesslogicanddumbservices.Instead,preferchoreographyoverorchestrationanddumbmiddleware,withsmartendpointstoensureyouthatyoukeepassociatedlogicanddatawithinserviceboundaries,helpingkeepthingscohesive.

Busdiservizioaziendale

implements a communication system between mutually interacting software applications in a service-oriented architecture (SOA)

Sistemi di orchestrazione

the automated arrangement, coordination, and management of computer systems, middleware, and services

Coreografia

the art or practice of designing sequences of movements of physical bodies (or their depictions) in which motion, form, or both are specified

middleware stupido

I’m pretty confident that there exist enterprise service busses which are handling similar scenarios and those are the opposite of simple “dumb” ZeroMQ-like message passing frameworks.

Endpoint intelligenti

Q: And regarding smart endpoints.. if I get it right, Microservice=endpoint, sort of something that can send/receive messages. The reason the endpoint is smart, because it has a logic inside, not on the middleware(e.g. ESB). Right? A: Exactly, endpoints have the logic and I actually did a project in an open source team which used JMS as the underlying communication for an ESB, so it should be still rather dumb

Domande

  1. Qual è la definizione di coreografia nell'IT?
  2. Quali sono esempi di middleware stupido ?
  3. I microservizi endpoint intelligenti ?
  4. È l'uso dei broker di messaggi, ad es. kafka, rabbitmq, zeromq e qpid in Microservices sono una cattiva pratica?
posta 030 20.04.2017 - 12:47
fonte

1 risposta

11

Ok, ci proverò qui.

In primo luogo, l'opinione di Sam è considerata il modo normale di "fare" i micro-servizi, ma ci sono dei compromessi.

  1. La coreografia significa che gli attori agiscono in modo indipendente ma secondo una serie di istruzioni condivise. Questo è in contrasto con l'orchestrazione dove c'è un conduttore centrale che dice ai giocatori cosa fare e quando farlo.

    L'orchestrazione è comunemente associata agli ESB che contengono molta logica aziendale (si pensi agli script e alle scelte) e distribuiscono il lavoro ai servizi.

    La coreografia è più comunemente associata a sistemi event-driven, in cui i servizi trasmettono eventi al mondo e le parti interessate agiscono indipendentemente su questi eventi.

  2. Il middleware muto implica che il middleware non reagisce attivamente al contenuto dei messaggi che trasporta. Instrada "roba" da A a B in base all'indirizzo sulla busta. La maggior parte dei middleware di messaggistica è stupida sotto questo aspetto, sebbene spesso vi sia un grado di intelligenza aggiunto per fornire garanzie di consegna, ad es. esattamente una sola volta. Questo è, probabilmente, non l'intelligenza di per sé, ma è ancora, a mio parere, un po 'troppo intelligente a causa di problemi di transazione, e la semantica della gestione degli errori, ma non permette ancora di andare lì. Fidati di me quando dico che gli architetti discutono su questa roba tutto il tempo, e Sam cade dal lato della luce e della verità qui, se non la convenienza e la semplicità.

  3. Se hai un middleware stupido, i micro-servizi devono essere assolutamente degli endpoint intelligenti, altrimenti hai un sistema fragile (tende a rompersi facilmente) del peggior tipo. Quanta intelligenza dipende da come vuoi affrontare il sovraccarico e il fallimento. Dai un'occhiata a tutti i gadget utilizzati da Netflix per aggiungere questi smart ai micro-servizi in modo riutilizzabile, ad es. Hystrix.

  4. No. Per quanto il middleware non dovrebbe essere troppo intelligente, non dovrebbe essere stupido. Kafka, ZeroMQ e così via sono sottosistemi altamente sofisticati quando si desidera eseguire correttamente i sistemi basati sugli eventi. Ciò non significa che devi usarli, ma hanno alcune caratteristiche utili. La maggior parte dei sistemi su larga scala fa entrambe le cose. Le cose sincrone sono fatte usando la richiesta / risposta http. Roba asincrona utilizza la messaggistica. La messaggistica può essere centralizzata (Kafka) o distribuita (ZeroMQ locale), ma quelli centralizzati possono facilmente isolarti dall'errore / recupero del servizio.

risposta data 20.04.2017 - 14:55
fonte

Leggi altre domande sui tag