Microservices: que sont les smart endpoints et les Dumb pipes?

j'ai lu un article " Microservicessmart point de terminaisonet muet tuyaux. Veuillez expliquer ces termes, les exemples sont les bienvenus.

15
demandé sur Ivan Voroshilin 2014-10-28 22:33:01

6 réponses

Je n'ai pas lu l'article, donc je ne peux que spéculer sur ce qu'il veut dire exactement, mais comme il donne ESB comme exemple contre microservices et ZeroMQ comme exemple pour micro services, j'espère que mes spéculations seront assez exactes:

une des idées D'Unix (et de Linux) est de construire de petites applications indépendantes et de les connecter via des pipes. L'ensemble probablement le plus commun de deux commandes que j'utilise est ps et grepcomme ceci: ps stdin grep.

les autres systèmes de messagerie comme ZeroMQ fonctionnent de la même façon, bien qu'ils puissent avoir un peu plus de complexité comme la distribution robin et la livraison fiable. Erlang en tant que langue est construit sur le dessus de petits points intelligents envoyant des messages entre eux. Les avantages sont ici évidents et également mentionnés dans l'article, Les petites applications sont plus faciles à entretenir, le découplage rend plus facile à échelle.

D'autre part, les Microservices sont le plus souvent de grandes applications d'entreprise, comme le Bus de Service D'entreprise mentionné. Je n'ai pas vraiment travaillé avec ceux-là assez pour vous donner un exemple spécifique, mais généralement ces bus contiennent beaucoup de fonctionnalités qui sont soit inclus via des scripts ou une configuration. Cette fonctionnalité inclut principalement un flux de travail configurable avec un routage avancé et peut même transformer les messages, de sorte que différents points terminaux peuvent gérer ils.

un exemple pourrait être - si vous voulez effectuer une action anticipée dans un système, par exemple modifier les exigences dans un projet déjà en cours d'exécution, cela pourrait démarrer un flux de travail, où L'ESB enverrait automatiquement des notifications différentes à différents acteurs autour de ces exigences modifiées et attendre qu'un ou plusieurs de ces acteurs confirment avant que cette modification ne soit appliquée. Ce qui serait essentiellement l'effet inverse-stupide (qui ne font qu'envoyer / recevoir les données vers / depuis le bus) et un tuyau très intelligent (le bus, qui peut être configuré ou configuré pour gérer tous les scénarios d'entreprise possibles).

je suis assez confiant qu'il existe des bus de service d'entreprise qui gèrent des scénarios similaires et qui sont le contraire de simple ZeroMQ" muet " comme les cadres de passage de message.

fondamentalement, la logique doit être mise en œuvre quelque part - soit dans le grand ESB, soit dans les paramètres. L'idée de microservices est pour le mettre dans le endpoints plutôt que dans le bus et ont une philosophie similaire à celle des applications unix.

14
répondu peter 2014-10-30 09:42:36

je pense que L'article de Martin Fowlers est tristement court en interprétant mal le concept "ESB". Cette caractérisation erronée est répandue. Combien de fois avez-vous vu un diagramme qui représente le " bus " comme un tuyau qui circulent des messages? J'ai certainement perdu le compte et ça me fait pleurer à chaque fois. Un " bus " n'est pas une pipe. Il s'agit d'un mécanisme permettant de rendre les "services porteurs" facilement accessibles dans un environnement distribué et axé sur les services. L'analogie classique est un bar de bus dans un usine. Bien que l'électricité circule à travers le bar de bus, ce n'est pas pour cela qu'il s'agit d'un "bus". C'est un " bus " parce qu'il parcourt toute la longueur du plancher de fabrication. N'importe quelle machine (implémentation de service) peut facilement puiser dans la barre pour obtenir de l'énergie (à partir d'un service de génération), où que cette machine se trouve. Le bus est un outil omniprésent qui favorise la flexibilité et le changement au fil du temps.

les seules choses qui vivent sur un bus de service sont les services, et en général principe il est préférable de les mettre en œuvre sous forme de microservices chaque fois que cela est possible ou souhaitable. Le mantra de "smart endpoints, dumb pipes" remonte bien avant l'avènement des microservices. Je l'ai entendu pour la première fois d'un membre de L'équipe de Microsoft BizTalk il y a de nombreuses années dans un débat public avec un défenseur de premier plan de L'ESB. Le représentant de la Direction générale des services D'Infrastructure préconisait la mise en place de services de transformation autonomes (microservices) à très petite échelle plutôt que L'approche typique de BizTalk où les transformations sont appliqué aux paramètres (smart endpoints). Le type de L'ESB critiquait BizTalk, affirmant qu'il était "monolithique" et ne pouvait donc pas être utilisé pour mettre en œuvre des services aussi fins et déployables indépendamment. Le représentant de BizTalk a fait remarquer qu'il avait tort sur le plan des faits (comme L'a démontré par la suite la boîte à outils de BizTalk ESB), mais que le point essentiel était la désirabilité générale d'effectuer une transformation aux fins du message (du point de vue de l'intégration) plutôt qu'en aval dans certains cas. service intermédiaire invoqué dans l'échange (conceptuellement, plus loin dans le "tuyau").

C'était un adulte débat entre pratiquants sérieux. Je suis d'accord avec le gars de BizTalk sur ce point – des points intelligents, des pipes débiles. Ironiquement, le gars de L'ESB favorisait effectivement une approche microservice dans le contexte de l'ESB. Pour moi, c'est un excellent exemple de la façon dont la microservice mantra, comme toute autre philosophie, peut être trop loin.

12
répondu CharlesY 2014-11-21 23:30:50

les composants d'un système utilisent des "pipes" (HTTP/s, Files d'attente, etc...) pour communiquer les uns avec les autres. Habituellement, ces canalisations passent par un ESB (Enterprise Service Bus) qui fait un certain nombre de choses aux messages transmis entre les composants.

Il peut faire:

  • vérifications de sécurité
  • Routage
  • flux d'Affaires / validation
  • Transformation

une fois ces tâches terminées, le message sera transmis sur le "point final". C'est un exemple de "Smart pipes" car beaucoup de logique et de traitement résident à l'intérieur de L'ESB (qui fait partie du système de "pipes"). Les paramètres peuvent alors être "stupide" comme l'ESB a fait tout le travail.

"Smart points de terminaison et muet tuyaux", préconise le scénario inverse. Que les voies de communication devraient être dépouillées du traitement des affaires et de la logique et ne distribuer les messages qu'entre les composants. C'est alors les composants eux - mêmes qui font du traitement / de la logique / de la validation, etc... sur ces messages.

5
répondu johnharris85 2015-01-25 18:37:05

C'est une des questions très générales. Je vais essayer de le tenir de cette façon

Smart points de terminaison

Smart les postes clients signification réelle des règles d'affaires et tout autre validations qui se passe derrière les points de terminaison qui ne sont pas visible pour tous les consommateurs de ces points de terminaison de penser que c'est un endroit réel où la Magie se produit.

pipelines muets

1
répondu afr0 2018-08-06 02:11:18

les tuyaux muets signifient simplement des connexions point à point. Les points terminaux font tout le travail et toute complexité est retirée du mécanisme qui les relie. Je pense que les gens parlent D'ESBs dans cette conversation parce que les tuyaux muets (point à point connexions) sont une idée terrible dans un contexte d'entreprise (et dans beaucoup d'autres). Les BSE ne sont pas des "pipes débiles". ESBs sont à peu près une bonne définition de tuyaux très intelligents. Et ils aident à obtenir le contrôle du désordre incroyablement Poilu qui point à point connections créer chaque fois que vous avez plus de quelques services qui ont besoin de parler à l'autre.

WSO2 vient de créer un ensemble de bons webinaires sur microservices, et ils parlent de ce concept. Mais même eux hésitent à utiliser le concept de tuyaux muets.

maintenant les pipes muettes peuvent avoir du sens si les services sont utilisés purement sur une base ad hoc mais pas en essayant de gérer des systèmes d'entreprise complexes. Configurer plusieurs connexions réseau pour chaque service est le moindre de il.

0
répondu Bill Rosmus 2016-02-12 18:14:37

selon Martin Fowler: "la deuxième approche d'usage courant est la messagerie sur un bus de messages léger. L'infrastructure choisie est typiquement muette (muette comme dans agit comme un routeur de message seulement)".

la justification de l'utilisation des smart end points est implicite par: "la propriété clé d'un composant est la notion de remplacement indépendant et de mise à niveau - ce qui implique que nous recherchons des points où nous pouvons imaginer réécrire un composant sans affecter son collaborateur.".

pour soutenir ce dernier, un micro-service doit être tolérant à l'égard de son consommateur. Par exemple: ajouter un argument d'entrée obligatoire plus tard briserait l'interface, et devrait donc être évité. On devrait plutôt utiliser des stratégies de compensation, comme les défauts, ou prendre en charge une sorte de "routage" interne pour que le microservice soit toujours en mesure de donner une réponse valide. C'est une sorte de "point final"intelligent.

0
répondu jeeka 2016-06-07 17:58:55