Maison  >  Article  >  développement back-end  >  Pourquoi Docker utilise le langage Go

Pourquoi Docker utilise le langage Go

青灯夜游
青灯夜游original
2021-03-15 11:16:413070parcourir

Raisons : 1. Les services grand public utilisent le système d'exploitation Unix/Linux et le langage go dépend très peu des tiers. De cette façon, Docker développé à l'aide du langage go peut fondamentalement fonctionner parfaitement sur la plupart des Unix/. Installations Linux sur le serveur. 2. Le langage Go présente de nombreux avantages tels qu'un déploiement simple, une bonne concurrence et de bonnes performances d'exécution.

Pourquoi Docker utilise le langage Go

L'environnement d'exploitation de ce tutoriel : système Windows 10, GO 1.18, ordinateur thinkpad t480.

Docker est un moteur de conteneur d'applications open source qui permet aux développeurs de regrouper leurs applications et leurs packages de dépendances dans un conteneur portable, puis de les publier sur n'importe quelle machine Linux ou Windows populaire. Il peut également être implémenté dans la virtualisation, les conteneurs utilisent entièrement le mécanisme du bac à sable et n'auront aucune interface entre eux.

Pourquoi Docker utilise-t-il le langage Go ?

Tout d'abord, nos services grand public actuels utilisent tous des systèmes d'exploitation Unix/Linux, et comme décrit précédemment, Golang dépend très peu de tiers (uniquement la glibc). avantage. Car dans ce cas, Docker développé avec Golang peut fonctionner parfaitement sur la plupart des serveurs installés avec les systèmes d'exploitation Unix/Linux.

Deuxièmement, le développement Golang présente de nombreux avantages :

1. Déploiement simple.

La compilation Go génère un fichier exécutable statique sans autre dépendance externe que la glibc. Cela rend le déploiement extrêmement pratique : seuls un système de base et les outils de gestion et de surveillance nécessaires sont nécessaires sur la machine cible, et il n'y a pas lieu de s'inquiéter des dépendances des divers packages et bibliothèques requis par l'application, ce qui réduit considérablement la charge de maintenance. C'est extrêmement différent de Python. Pour des raisons historiques, l'écosystème des outils de déploiement de Python est assez déroutant [comme les différentes occasions applicables et les problèmes de compatibilité de setuptools, distutils, pip, buildout]. La source officielle PyPI a souvent des problèmes, et un miroir privé doit être construit, et la maintenance de ce miroir prend beaucoup de temps et d'énergie.

2. Bonne simultanéité.

Goroutine et Channel facilitent l'écriture de logiciels côté serveur à haute concurrence. Dans de nombreux cas, il n'est pas nécessaire de prendre en compte le mécanisme de verrouillage et les divers problèmes qu'il provoque. Une seule application Go peut également utiliser efficacement plusieurs cœurs de processeur et obtenir de bonnes performances d'exécution parallèle. C'est également un monde à part de Python. Les programmes serveur multithread et multiprocessus ne sont pas simples à écrire, et en raison du verrouillage global GIL, les programmes Python multithread ne peuvent pas utiliser efficacement plusieurs cœurs et ne peuvent être déployés de manière multiprocessus que si vous utilisez le multitraitement ; les packages de bibliothèque standard poseront également de nombreux défis en matière de surveillance et de gestion [le superviseur que nous utilisons pour gérer le processus ne prend pas bien en charge fork]. Lors du déploiement d'applications Python, une application est généralement déployée par cœur de processeur, ce qui entraînera un gaspillage important de ressources. Par exemple, en supposant qu'une application Python doit occuper 100 Mo de mémoire après le démarrage et que le serveur dispose de 32 cœurs de processeur. il reste un cœur pour le système, l'exécution de 31 copies d'application gaspillera 3 Go de ressources mémoire.

3. Bonne conception du langage.

D'un point de vue académique, le langage Go est en fait très médiocre et ne prend pas en charge de nombreuses fonctionnalités avancées du langage, mais d'un point de vue technique, la conception de Go est très excellente : les spécifications sont suffisamment simples et flexibles, et avoir les bases d'autres langages. Les programmeurs peuvent démarrer rapidement. Plus important encore, Go est livré avec une chaîne d’outils complète, ce qui améliore considérablement la cohérence de la collaboration en équipe. Par exemple, gofmt formate automatiquement le code Go, ce qui élimine en grande partie le problème des styles de formatage incohérents des codes écrits par différentes personnes. Configurez l'éditeur pour qu'il exécute automatiquement gofmt lors de la modification de l'archive, afin que vous puissiez le placer à volonté lors de l'écriture du code, et il deviendra automatiquement du code correctement saisi lors de l'archivage. De plus, il existe des outils très utiles tels que gofix et govet.

4. Bonne performance d'exécution.

Bien qu'il ne soit pas aussi bon que C et Java, il est généralement d'un ordre de grandeur supérieur aux applications Python natives et convient à l'écriture de certaines entreprises à goulot d'étranglement. L'utilisation de la mémoire est également très économique.

Apprentissage recommandé : Tutoriel Golang

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn