ホームページ  >  記事  >  バックエンド開発  >  docker が go 言語を使用する理由

docker が go 言語を使用する理由

青灯夜游
青灯夜游オリジナル
2021-03-15 11:16:413121ブラウズ

理由: 1. 主流のサービスは Unix/Linux オペレーティング システムを使用しており、go 言語はサードパーティへの依存度がほとんどないため、go 言語を使用して開発された Docker は基本的にほとんどの Unix/Linux 上で完全に実行できます。 Linux のインストール、サーバー上のオペレーティング システム。 2. Go 言語には、簡単なデプロイメント、優れた同時実行性、優れた実行パフォーマンスなど、多くの利点があります。

docker が go 言語を使用する理由

#このチュートリアルの動作環境: Windows10 システム、GO 1.18、thinkpad t480 コンピューター。

Docker は、開発者がアプリケーションと依存関係パッケージをポータブル コンテナにパッケージ化し、一般的な Linux マシンまたは Windows マシンに公開できるようにするオープン ソース アプリケーション コンテナ エンジンです。仮想化にも実装できます。コンテナーは完全にサンドボックス メカニズムを使用し、相互にインターフェイスを持ちません。

なぜ docker は go 言語を使用するのでしょうか?

まず第一に、当社の現在の主流サービスはすべて Unix/Linux オペレーティング システムを使用しており、前述したように、Golang はサードパーティへの依存度がほとんどありません (glibc のみに依存しています)。そして利点。この場合、Golang を使用して開発された Docker は、基本的に Unix/Linux オペレーティング システムがインストールされているほとんどのサーバーで完全に実行できるためです。

第二に、Golang 開発には多くの利点があります:

1. シンプルなデプロイメント。

Go コンパイルでは、glibc 以外の外部依存関係を持たない静的実行可能ファイルが生成されます。これにより、展開が非常に便利になります。ターゲット マシンには基本システムと必要な管理および監視ツールのみが必要で、アプリケーションに必要なさまざまなパッケージやライブラリの依存関係を心配する必要がなく、メンテナンスの負担が大幅に軽減されます。これは Python とは大きく異なります。歴史的な理由により、Python のデプロイメント ツールの生態は非常に複雑です (適用されるさまざまな状況や、setuptools、distutils、pip、buildout の互換性の問題など)。公式の PyPI ソースには多くの場合問題があり、プライベート ミラーを構築する必要があり、このミラーの維持には多くの時間とエネルギーがかかります。

2. 優れた同時実行性。

Goroutine とチャネルを使用すると、同時実行性の高いサーバー側ソフトウェアを非常に簡単に作成できるようになり、多くの場合、ロック機構やそれによって引き起こされるさまざまな問題を考慮する必要がなくなります。単一の Go アプリケーションは複数の CPU コアを効果的に利用し、優れた並列実行パフォーマンスを実現することもできます。これも Python とはまったく異なります。マルチスレッドおよびマルチプロセスのサーバー プログラムは作成が簡単ではありません。また、グローバル ロック GIL のせいで、マルチスレッドの Python プログラムは複数のコアを効果的に利用できず、マルチプロセスでしかデプロイできません。標準ライブラリ パッケージも監視と管理に多くの課題をもたらします [プロセスの管理に使用するスーパーバイザはフォークを適切にサポートしていません]。 Python アプリケーションをデプロイする場合、通常は CPU コアごとに 1 つのアプリケーションがデプロイされるため、多くのリソースが無駄になります。たとえば、Python アプリケーションが起動後に 100MB のメモリを占有する必要があり、サーバーに 32 個の CPU コアがあると仮定すると、システム用に 1 つのコアが残っている場合、31 個のアプリケーション コピーを実行すると、3 GB のメモリ リソースが無駄になります。

3. 優れた言語設計。

学術的な観点から見ると、Go 言語は実際には非常に平凡で、多くの高度な言語機能をサポートしていません。しかし、エンジニアリングの観点から見ると、Go の設計は非常に優れています。十分な柔軟性があり、他の言語の基礎があるため、プログラマーはすぐに始めることができます。さらに重要なことは、Go には完全なツール チェーンが付属しており、これによりチームのコラボレーションの一貫性が大幅に向上します。たとえば、 gofmt は Go コードを自動的にフォーマットするため、さまざまな人々が作成したコードのフォーマット スタイルが一貫していないという問題が大幅に解消されます。アーカイブの編集時に gofmt を自動的に実行するようにエディターを構成すると、コードを記述するときに gofmt をどこにでも配置でき、アーカイブ時に自動的に正しくフォーマットされたコードになります。さらに、gofix や govet などの非常に便利なツールもあります。

4. 優れた実行パフォーマンス。

C や Java ほど優れているわけではありませんが、通常はネイティブ Python アプリケーションよりも一桁高いため、ボトルネックとなるビジネスを作成するのに適しています。メモリ使用量も非常に経済的です。

推奨学習:

Golang チュートリアル

以上がdocker が go 言語を使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。