Qu'est-ce qu'un réseau de distribution ? Parce qu'ils sont importants ?

  • Principal
  • Nouvelles
  • Qu'est-ce qu'un réseau de distribution ? Parce qu'ils sont importants ?

Quanrong Huang

Un réseau de distribution est une couche d'infrastructure qui facilite la communication entre les composants de l'application. Les maillages fournissent des fonctionnalités telles que la découverte de services, l'équilibrage de charge et l'observabilité.

Les maillages de services se trouvent généralement dans les systèmes distribués composés de microservices. Le maillage permet à différents services d'échanger des données. Il gère uniquement le trafic interne, en le transmettant à une passerelle API ou à un nœud périphérique pour servir les utilisateurs. Les collants populaires incluent Linkerd et Istio.

Qu'y a-t-il à l'intérieur de la chemise ?

Le concept de base d'un réseau de distribution est assez simple. La couche encapsule les proxys réseau qui acheminent le trafic vers des services individuels. Une couche de contrôle gère les appels réseau entre les services et orchestre l'utilisation des proxys.

L'objectif fondamental du maillage est de rendre la communication entre les services plus facile et plus fiable. Prenons une simple paire de services : une API et un système d'authentification distinct. L'API devra interagir avec le service d'authentification lors de la réception des demandes.

Avec un réseau de distribution, vous obtenez une communication fiable entre les services à l'aide d'identifiants connus. Votre API peut envoyer des appels réseau à |__+_| nom d'hôte et assurez-vous qu'il sera toujours résolu correctement, même si le service d'authentification est déplacé vers un autre emplacement dans le centre de données. Le réseau de distribution agit pour acheminer de manière transparente les demandes vers le service approprié.

L'utilisation d'un réseau de distribution facilite le transfert de services. La logique de communication réseau codée en dur peut rapidement devenir contraignante. Un maillage vous donne plus de flexibilité pour répartir vos charges de travail à l'avenir.

Comment les maillages de services sont-ils implémentés ?

La plupart des maillages de services modernes se composent de deux composants : un plan de contrôle et un plan de données. La fonctionnalité principale appartient au plan de données, qui traite les données circulant dans le système.

Chaque requête au maillage sera traitée par le plan de données. Il découvrira le service correct à utiliser, effectuera toutes les actions d'enregistrement et activera les comportements conditionnels pour filtrer et rediriger le trafic.

Les services font souvent partie de votre application, ils peuvent donc inclure une logique de routage. Le plan de données examine les règles de configuration pour déterminer le point de terminaison final en fonction des en-têtes HTTP, des paramètres de demande et d'autres valeurs de demande.

Alors que le plan de données est plein d'activités, le plan de contrôle est relativement plus simple. Il surveille les proxys dans le plan de données et fournit une API afin que vous puissiez interagir avec eux.

Ce diagramme de projet Istio illustre comment les composants s'emboîtent. Chaque service a son propre proxy. Le trafic entrant passe par des proxys. Ils peuvent communiquer avec le plan de contrôle pour découvrir d'autres services. Les proxys sont communément appelés 'side-cars', car ils fonctionnent parallèlement au service qu'ils représentent.

Autres fonctionnalités du réseau de distribution

Les maillages de services fournissent souvent des fonctionnalités supplémentaires au-delà de la découverte de services de base. Vous trouverez généralement un support pour l'équilibrage de charge, l'authentification au niveau de la demande et le chiffrement des données. Le trafic crypté peut transiter par le réseau, mais il est envoyé à vos services sous une forme non cryptée.

Son maillage offre généralement une protection contre les coupures transitoires du réseau. Les tentatives automatiques, les basculements et les disjoncteurs rendent la communication entre les services plus résiliente. L'utilisateur final est moins susceptible de voir un état d'erreur fatale. Ces fonctionnalités importantes seraient difficiles et coûteuses à mettre en œuvre manuellement.

De plus, les maillages de services intègrent des optimisations de performances qui aident à minimiser les coûts globaux. Le maillage pourrait contenir des connexions aux services pour une réutilisation ultérieure, réduisant ainsi la latence jusqu'à la prochaine requête.

Les couches réseau fournissent également des protections de sécurité. Vous pouvez implémenter des politiques de contrôle d'accès au niveau du maillage qui refusent le trafic avant qu'il n'atteigne vos services. Si vous souhaitez un limiteur de débit API global, l'intégrer à la configuration du maillage l'appliquera à tous vos services, présents et futurs.

Et les inconvénients ?

Le plus grand défi concernant les maillages de services est la complexité supplémentaire qui les accompagne. S'ils visent à simplifier le réseau de microservices, ils introduisent également leur propre courbe d'apprentissage.

Les développeurs doivent se familiariser avec autre Superposez vos services existants. Les terminologies de maillage telles que proxy et sidecar s'ajoutent à la liste déjà longue des ressources Kubernetes gérées par les équipes opérationnelles.

Bien que les maillages ajoutent leurs propres améliorations de performances, certaines implémentations peuvent remarquer une réduction globale des performances du réseau. Mesh ajoute une nouvelle couche que les requêtes doivent traverser, ce qui affecte l'efficacité globale. Cela est souvent plus apparent si vous stockez le maillage avec de nombreuses règles de routage.

Quand utiliser un réseau de distribution ?

Les maillages de services fonctionnent mieux lorsque vous vous consacrez pleinement aux conteneurs et aux microservices. Ils sont conçus pour résoudre les problèmes d'exploitation de systèmes distribués à grande échelle en production. Les petits déploiements pourraient toujours bénéficier d'un maillage, mais pourraient également utiliser des approches de mise en réseau plus simples telles que les ressources de mise en réseau intégrées de Kubernetes.

Les maillages sont très utiles lors du lancement fréquent de nouveaux services ou de leur distribution entre les serveurs. Un maillage permet aux développeurs de se concentrer sur la fonctionnalité, plutôt que sur l'ennui de connecter différents services ensemble. Au fur et à mesure que vous déployez une flotte de services sans cesse croissante, vous passerez plus de temps à gérer la communication de service à service. Un maillage automatise la majeure partie de cette configuration afin que vous n'ayez pas à penser à la localisation et au routage des services.

Focus aide également votre système à devenir plus observable. Toutes les demandes transitent par le maillage afin que la journalisation et le traçage puissent être mis en œuvre au niveau de l'infrastructure. Cela permet de diagnostiquer et de résoudre plus facilement les problèmes de routage. Sans maillage, vous pourriez avoir des dizaines de services qui se transmettent directement des informations. Il est donc difficile de trouver la source d'un problème.

Les écrans utilitaires les plus populaires sont faciles à configurer. Istio et Linkerd ont tous deux des guides de démarrage bien documentés pour vous aider à implémenter le maillage dans votre cluster Kubernetes. Cela vaut la peine d'expérimenter même si vous n'êtes pas sûr que votre système soit toujours à l'échelle du maillage. Rester trop longtemps avec une communication de service directe peut limiter votre capacité à lancer de nouveaux services de manière rapide et fiable.

Qu'est-ce que tu penses?