Microservices: Quels sont les terminaux intelligents et les tuyaux muets?
J'ai lu un article "Microservices" par Martin Fowler et de trouver qu'il est difficile de comprendre smart extrémités et muet tuyaux. Veuillez expliquer ces termes, les exemples sont les bienvenus.
source d'informationauteur Ivan Voroshilin | 2014-10-28
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas lu l'article, donc je ne peux que spéculer sur ce qu'il peut dire exactement, mais qu'il donne à l'ESB comme un exemple contre microservices et ZeroMQ comme un exemple pour les micro-services, j'espère que mon avis sera assez exacte:
L'une des idées de Unix (et Linux) est de construire de petites applications indépendantes et de les relier par des tuyaux. Probablement le plus commun de l'ensemble de commande deux que j'ai choisi est
ps
etgrep
comme ceci:ps aux | grep PROCESS_NAME
- ici vous pouvez voir un tuyaux muets qui ne communique que la sortie deps
à stdin degrep
.D'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 le round-robin de la distribution et de la fiabilité de la livraison. Erlang comme une langue est construite au-dessus de la petite smart points de terminaison de l'envoi de messages entre les uns des autres. Les avantages sont évidents et aussi mentionné dans l'article, de petites applications sont plus faciles à entretenir, le découplage rend plus facile à l'échelle.
Sur l'autre main de Microservices sont le plus souvent de grandes applications d'entreprise, comme l'a mentionné Bus de Service d'Entreprise. Je n'ai pas vraiment le travail avec les personnes assez pour vous donner un exemple précis, mais en général, ces bus de contenir beaucoup de fonctionnalités qui est inclus le biais de scripts ou de configuration. Une telle fonctionnalité pour la plupart comprend une configureable Flux de travail avec le routage avancé et peut même transformer les messages, de sorte que les différents ordinateurs d'extrémité de la poignée.
Un exemple pourrait être, si vous souhaitez l'effectuer un peu d'avance à l'action dans un système, par exemple de modifier les exigences dans un projet en cours d'exécution, ce qui pourrait démarrer un flux de travail, où l'ESB serait d'envoyer automatiquement les notifications pour les différents acteurs autour de ces nouvelles exigences et attendre 1 ou plusieurs de ces acteurs pour confirmer avant que ce changement ne devrait être appliqué. Ce qui serait le contraire - muets points de terminaison (qui vient d'envoyer/recevoir des données vers/depuis l'arrêt de bus) et très intelligent de la pipe (le bus, qui peut être configuré ou script pour gérer tous les possibles scénarios d'entreprise).
Je suis assez confiant sur le fait qu'il existe enterprise service bus qui sont la manipulation des scénarios similaires et ceux qui sont à l'opposé de la simple “muet”, ZeroMQ-comme la transmission de message cadres.
Fondamentalement, la logique doit être mis en œuvre quelque part - que ce soit dans les grandes ESB, ou dans les points de terminaison. L'idée de microservices est de le mettre dans les points de terminaison plutôt que dans le bus et ont une philosophie similaire comme les applications unix.
Je pense que Martin Fowlers’ article tombe malheureusement très courte par mischaracterising le " ESB "concept". Cette mischaracterisation est très 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 il me fait sursauter à chaque fois. Un " bus " n'est pas une pipe. C'est un mécanisme pour le faire " permettant à des services facilement accessibles à travers un système distribué, orientée vers les services de l'environnement. Le classique analogie est une barre de bus dans une usine. Bien que les flux d'électricité par le biais de la barre de bus, ce n'est pas pourquoi un "bus". C'est un "bus", car il fonctionne sur toute la longueur de l'aire de fabrication. Toutes les machines (implémentations de service) peut facilement appuyez sur dans la barre d'obtenir de l'énergie (à partir d'une génératrice de service), chaque fois que les machines se trouve. Le bus est un composé catalyseur qui favorise la souplesse et de changer au fil du temps.
Les seules choses qui vivent sur un service de bus de services, et, comme principe général, ils sont mieux mises en œuvre comme microservices dans la mesure du possible ou souhaitable. Le mantra de "smart points de terminaison, muet tuyaux" remonte bien avant l'avènement de microservices. J'ai d'abord entendu par un membre de la Microsoft BizTalk équipe il y a plusieurs années dans le débat public, avec l'un des principaux défenseurs de l'ESB. L'ESB guy était de préconiser l'opportunité d'un grain très fin autonomes de transformation des services (microservices) plutôt que l'habituel BizTalk approche où les transformations sont appliquées aux points d'extrémité (smart points de terminaison). L'ESB gars a été critiqué BizTalk, affirmant qu'il était "monolithique" et ne pouvait donc pas être utilisés pour mettre en œuvre de tels fine, indépendamment déployable services. BizTalk gars a souligné qu'il est, de fait mal (comme l'a démontré par la suite dans le BizTalk ESB toolkit), mais le point principal a été l'opportunité de faire de la transformation à la message d'extrémité (d'une intégration de la perspective) plutôt qu'en aval, dans certains intermédiaires de service invoqué dans l'échange (sur le plan conceptuel, plus bas, le ‘pipe’).
C'était un adulte débat entre pratiquants sérieux. Je suis d'accord avec BizTalk gars sur ce point – smart points de terminaison, muet tuyaux. Ironiquement, l'ESB gars était effectivement la promotion d'une microservice approche dans un ESB contexte. Pour moi, c'est un excellent exemple de la façon dont la microservice mantra, comme toute autre philosophie, peut être trop loin.
Composants dans un système d'utilisation de "tuyaux" (HTTP/S, les files d'attente, etc...) de communiquer les uns avec les autres. Habituellement, ces tuyaux d'écoulement à travers un ESB (Enterprise Service Bus) qui fait un certain nombre de choses pour le passage de messages entre les composants.
Il pourrait faire:
Une fois qu'il est rempli de ces tâches, le message sera envoyé sur le "point final". Ceci est un exemple de "smart pipes", comme beaucoup de logique et de traitement de résider à l'intérieur de l'ESB (partie du système de "tuyaux"). 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 devrait être dépouillé de traitement des affaires et de la logique devrait littéralement seulement de transmettre des messages entre les composants. C'est ensuite les composants eux-mêmes qui ne le traitement /la logique de validation, etc... sur ces messages.
Muet tuyaux signifie simplement des connexions point à point. Les points d'extrémité à faire tout le travail et toute la complexité est prise sur le mécanisme de connexion entre eux. Je pense que les gens parlent bus de services d'entreprise dans cette conversation, parce muet tuyaux (point à point connexions) sont une très mauvaise idée dans un environnement d'entreprise (et dans beaucoup d'autres). Bus de services d'entreprise ne sont pas "bêtes tuyaux". Bus de services d'entreprise sont à peu près une bonne définition de très intelligent tuyaux. Et ils aider à obtenir le contrôle de l'incroyablement poilu gâchis que de point à point des connexions de créer à chaque fois que vous avez un certain nombre de services qui ont besoin de parler les uns aux autres.
WSO2 vient de créer un ensemble de bonnes webinaires sur les microservices, et ils parlent de ce concept. Mais même qu'ils évitent d'utiliser le concept de dumb tuyaux.
Maintenant muet tuyaux de sens que si les services sont utilisés uniquement dans une base ad hoc, mais pas lorsque vous essayez de gérer des systèmes d'entreprise. L'installation de plusieurs connexions réseau pour chaque service, c'est la moindre des choses.
Selon Martin Fowler: "La deuxième approche dans l'usage commun est de messagerie sur un léger bus de message. L'infrastructure choisie est généralement muet (muet comme dans les actes comme un routeur de messages seulement)".
La justification de l'utilisation intelligente de points d'extrémité est implicite: "La clé de la propriété d'un composant est la notion de remplacement et d'évolutivité, ce qui implique que nous regardons pour des points où nous pouvons imaginer la réécriture d'un composant sans affecter l'ensemble de ses collaborateurs.".
À l'appui de ce dernier un micro service doit être tolérant à ses consommateurs. E. g. l'ajout d'une entrée obligatoire argument de plus tard serait briser l'interface, et par conséquent devrait être évitée. Au lieu de cela on doit utiliser des stratégies de compensation, comme par défaut, ou de soutenir une certaine sorte de l'intérieur "routage" de sorte que le microservice est encore en mesure de donner une réponse valable. C'est une sorte de smart "end-point".