Heim  >  Artikel  >  Backend-Entwicklung  >  Warum Docker die Go-Sprache verwendet

Warum Docker die Go-Sprache verwendet

青灯夜游
青灯夜游Original
2021-03-15 11:16:413134Durchsuche

Gründe: 1. Mainstream-Dienste verwenden das Unix/Linux-Betriebssystem und die Go-Sprache ist kaum von Drittanbietern abhängig. Auf diese Weise kann Docker, das mit der Go-Sprache entwickelt wurde, grundsätzlich perfekt auf den meisten Servern mit Unix/Linux-Betrieb laufen Systeme überlegen. 2. Die Go-Sprache bietet viele Vorteile wie einfache Bereitstellung, gute Parallelität und gute Ausführungsleistung.

Warum Docker die Go-Sprache verwendet

Die Betriebsumgebung dieses Tutorials: Windows 10-System, GO 1.18, Thinkpad T480-Computer.

Docker ist eine Open-Source-Anwendungscontainer-Engine, die es Entwicklern ermöglicht, ihre Anwendungen und Abhängigkeitspakete in einen tragbaren Container zu packen und sie dann auf jeder gängigen Linux-Maschine oder Windows-Maschine zu veröffentlichen. Es kann auch Virtualisierung und Container implementieren Sandbox-Mechanismus und es wird keine Schnittstelle zwischen ihnen geben.

Warum verwendet Docker die Go-Sprache?

Erstens nutzen unsere aktuellen Mainstream-Dienste alle Unix/Linux-Betriebssysteme, und wie bereits beschrieben ist Golang sehr wenig von Dritten abhängig (nur glibc), was sowohl eine Einschränkung als auch einen Vorteil darstellt. Denn in diesem Fall kann der mit Golang entwickelte Docker grundsätzlich einwandfrei auf den meisten Servern laufen, auf denen Unix/Linux-Betriebssysteme installiert sind.

Zweitens hat die Golang-Entwicklung viele Vorteile:

1.

Go-Kompilierung generiert eine statische ausführbare Datei ohne andere externe Abhängigkeiten außer Glibc. Dies macht die Bereitstellung äußerst komfortabel: Auf dem Zielcomputer sind nur ein Basissystem und die erforderlichen Verwaltungs- und Überwachungstools erforderlich, und Sie müssen sich keine Gedanken über die Abhängigkeiten verschiedener Pakete und Bibliotheken machen, die für die Anwendung erforderlich sind, was den Wartungsaufwand erheblich reduziert. Das ist ein großer Unterschied zu Python. Aus historischen Gründen ist das Ökosystem der Bereitstellungstools von Python ziemlich verwirrend [z. B. die verschiedenen anwendbaren Anlässe und Kompatibilitätsprobleme von Setuptools, Distutils, Pip, Buildout]. Die offizielle PyPI-Quelle hat oft Probleme, und es muss ein privater Spiegel erstellt werden, und die Wartung dieses Spiegels kostet viel Zeit und Energie.

2. Gute Parallelität.

Goroutine und Channel machen es sehr einfach, serverseitige Software mit hoher Parallelität zu schreiben. In vielen Fällen besteht keine Notwendigkeit, den Sperrmechanismus und die verschiedenen dadurch verursachten Probleme zu berücksichtigen. Eine einzelne Go-Anwendung kann auch mehrere CPU-Kerne effektiv nutzen und eine gute parallele Ausführungsleistung erzielen. Das ist auch Welten von Python entfernt. Multithread- und Multiprozess-Serverprogramme sind nicht einfach zu schreiben, und aufgrund der globalen Sperre (GIL) können Multithread-Python-Programme nicht mehrere Kerne effektiv nutzen und können nur in einer Multiprozess-Manier bereitgestellt werden Die Standardbibliothekspakete werden auch viele Herausforderungen für die Überwachung und Verwaltung mit sich bringen [der Supervisor, den wir zur Verwaltung des Prozesses verwenden, unterstützt Fork nicht gut]. Bei der Bereitstellung von Python-Anwendungen wird normalerweise eine Anwendung pro CPU-Kern bereitgestellt, was zu einer großen Ressourcenverschwendung führt. Nehmen wir beispielsweise an, dass eine Python-Anwendung nach dem Start 100 MB Speicher belegen muss und der Server über 32 CPU-Kerne verfügt Ein Kern bleibt für das System übrig, die Ausführung von 31 Anwendungskopien verschwendet 3 GB Speicherressourcen.

3. Gutes Sprachdesign.

Aus akademischer Sicht ist die Go-Sprache eigentlich sehr mittelmäßig und unterstützt nicht viele fortgeschrittene Sprachfunktionen, aber aus technischer Sicht ist das Design von Go sehr gut: Die Spezifikationen sind einfach und flexibel genug, dass Programmierer es können Mit anderen Sprachgrundlagen können Sie schnell loslegen. Noch wichtiger ist, dass Go über eine vollständige Toolkette verfügt, die die Konsistenz der Teamzusammenarbeit erheblich verbessert. Beispielsweise formatiert gofmt Go-Code automatisch, wodurch das Problem inkonsistenter Formatierungsstile von Codes, die von verschiedenen Personen geschrieben wurden, weitgehend beseitigt wird. Konfigurieren Sie den Editor so, dass beim Bearbeiten des Archivs automatisch gofmt ausgeführt wird, sodass Sie es beim Schreiben von Code an einer beliebigen Stelle platzieren können und es beim Archivieren automatisch zu korrekt formatiertem Code wird. Darüber hinaus gibt es sehr nützliche Tools wie Gofix und Govet.

4. Gute Ausführungsleistung.

Obwohl es nicht so gut ist wie C und Java, ist es normalerweise eine Größenordnung besser als native Python-Anwendungen und eignet sich zum Schreiben einiger Engpassunternehmen. Auch der Speicherverbrauch ist sehr sparsam.

Empfohlenes Lernen: Golang-Tutorial

Das obige ist der detaillierte Inhalt vonWarum Docker die Go-Sprache verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn