golang では、マイクロサービス (またはマイクロサービス アーキテクチャ) は、単一のアプリケーションを一連の小さなサービスに分割し、サービスが相互に調整および連携することを提唱するソフトウェア アーキテクチャ スタイル (テクノロジ) です。ユーザー。各サービスは独自の独立したプロセスで実行され、サービスは軽量の通信メカニズム (通常は HTTP ベースの RESTful API) を使用して相互に通信します。各サービスは特定のビジネスを中心に構築されており、実稼働環境と同様に実稼働環境に独立してデプロイできます。環境など
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
マイクロサービスとは
マイクロサービス (マイクロサービス アーキテクチャ) は、ソフトウェア アーキテクチャ スタイル、サービス指向アーキテクチャ (SOA) アーキテクチャのバリエーションです。単一のアプリケーションを一連の小さなサービスに分割し、相互に調整および連携してユーザーに最終的な価値を提供することを推奨するスタイル。各サービスは独自の独立したプロセスで実行され、サービスは軽量の通信メカニズム (通常は HTTP ベースの RESTful API) を使用して相互に通信します。各サービスは特定のビジネスを中心に構築されており、実稼働環境や実稼働に類似した環境などに個別にデプロイできます。また、統一的かつ集中的なサービス管理メカニズムは可能な限り避けるべきであり、特定のサービスについては、コンテキストに基づいて適切な言語とツールを選択して構築する必要があります。
マイクロサービス (またはマイクロサービス アーキテクチャ) は、クラウド ネイティブのアーキテクチャ アプローチであり、単一のアプリケーションが、疎結合で独立して展開可能な多数の小さなコンポーネントまたはサービスで構成されます。通常、これらのサービスは、データベースやデータ モデルを含む独自のスタックを持ち、
は REST API を介して相互に通信します。イベント ストリームとメッセージ ブローカー 通信;##
マイクロサービスを使用する理由
このアーキテクチャは、アプリケーション全体を部分、小さなモジュールに分けて記述するのに役立ち、理解、開発、テストが容易になります。また、各サービスを、それぞれのサービスを明確に示す独立したサービスとして扱うのに役立ちます。目的。さらに、プロジェクトのアーキテクチャの一貫性を維持するのにも役立ちます (最初に設計されたアーキテクチャと実際に開発されたアーキテクチャの間にはほとんど違いがありません)。また、異なる独立したチームを設立してサービスを展開および拡張し、各チームが並行して開発できるようにすることもできます。このアーキテクチャではコードのリファクタリングが簡単になります。また、継続的デリバリーおよび展開プロセス (CI/CD) もサポートします。 マイクロサービスの構築に go を使用する理由
この問題について詳しく説明する前に。まず、Golang の利点についてお話します。 Golang は新しい言語ですが、他の言語と比べて多くの利点があります。 Golang で書かれたプログラムはより堅牢です。これらは、実行中のサービスを使用してプログラムが構築する高負荷に耐えることができます。 Golang は、マルチプロセッサ システムや Web アプリケーションに適しています。さらに、GitHub と簡単に統合して、分散コード パッケージを管理します。マイクロサービス アーキテクチャの有用性は、プログラムがスケーラブルである必要がある場合に主に反映されます。標準に完全に準拠した言語があるとすれば、それは Golang です。その理由は、C ファミリーのプログラミング言語を継承しており、Golang で書かれたコンポーネントは、同じファミリーの他の言語で書かれたコンポーネントと組み合わせるのが簡単だからです。 Go は C ファミリに由来していますが、C/C よりも効率的です。構文は単純で、Python に似ています。その構文は安定しており、最初の公開リリース以来ほとんど変更されていません。つまり、下位互換性があります。これにより、他の言語と比較して golang が優位になります。さらに、Golang のパフォーマンスは Python や Java よりもはるかに優れています。何よりも、C/C++ と同じくらいシンプルでありながら、読みやすく理解しやすいため、マイクロサービス アプリケーションの開発に最適です。
Golang のマイクロサービス アーキテクチャ フレームワーク
次に、マイクロサービス アーキテクチャに使用できるフレームワークについて説明します。次のフレームワークがあります。 Go Micro
Go Micro は、私がこれまでに出会った中で最も人気のある RPC フレームワークです。プラグイン可能な RPC フレームワークです。 Go Micro は次の機能を提供します。
サービス ディスカバリ: プログラムはサービス ディスカバリ システムに自動的に登録します。
同期通信: リクエスト/レスポンス トランスポート層を提供します
非同期通信: パブリッシュおよびサブスクリプション機能が組み込まれています
メッセージ エンコーディング: ヘッダーの Content-Type を使用してエンコードおよびデコードできます
GO Kit
Go Kit は、マイクロサービスを構築するためのプログラミング ツールキットです。 Go Microとは異なり、バイナリパッケージとしてインポートできるライブラリです。 Go Kitのルールはシンプルです。次のように:
Gizmo
Gizmo は、The New York のマイクロサービス ツールキットです回。これは、サーバー デーモンと pubsub デーモンを統合するパッケージを提供します。次のパッケージを公開します。#Pubsub: キューからデータをパブリッシュおよび消費するための共通インターフェイスを提供します
##Pubsub/pubsubtest: パブリッシャー インターフェイスとサブスクライバー インターフェイスのテスト実装が含まれます
Kite は、Go でマイクロサービスを開発するためのフレームワークです。 RPC クライアントおよびサーバー側のコード パッケージを公開します。作成されたサービスは、サービス検出システム Kontrol に自動的に登録されます。 Kontrol は Kite で書かれており、それ自体が Kite サービスです。これは、Kite マイクロサービスが独自の環境で適切に動作することを意味します。 Kite マイクロサービスを別のサービス検出システムに接続する必要がある場合は、カスタマイズが必要です。これが、私がリストから Kite を選択し、このフレームワークを導入しないことに決めた重要な理由の 1 つです。
[関連する推奨事項: Go ビデオ チュートリアル 、
プログラミング教育]
以上がGolang のマイクロサービスとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。