Golang のマイクロサービスとは何ですか
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 を使用してエンコードおよびデコードできます
- #RPC クライアント/サーバー: 上記の機能を利用し、マイクロサービスの構築に必要なインターフェイスを提供します
- Broker: 非同期通信におけるメッセージ ブローカー (メッセージ ブローカー) のインターフェイスを提供します
- コーデック: メッセージの暗号化または復号化に使用されます
- レジストリ: サービス検索機能を提供します
- セレクター: ペイロードの構築on register Balance
- Transport: Transport はサービス間で同期リクエスト/レスポンスを行うための通信インターフェイスです
GO Kit
Go Kit は、マイクロサービスを構築するためのプログラミング ツールキットです。 Go Microとは異なり、バイナリパッケージとしてインポートできるライブラリです。 Go Kitのルールはシンプルです。次のように:- グローバル変数なし
- 宣言的な構成
- 明示的な依存関係
- コントラクトとしてのインターフェース (インターフェース コントラクト)
- ドメイン駆動設計 (DDD)
- 認証 認証: BasicAuth および JWT
- トランスポート プロトコル: HTTP、gRPC など
- ロギング ログ: サービスの構造化ロギング インターフェイス
- メトリクス メトリクス: CloudWatch、Statsd、Graphite など
- トレース分散トレース : Zipkin および Opentracing
- サービス ディスカバリーサービス ディスカバリー: Consul、Etcd、Eureka など
- サーキットブレーカー 電流制限サーキット ブレーカー: Hystrix 実装Go 言語での
Gizmo
Gizmo は、The New York のマイクロサービス ツールキットです回。これは、サーバー デーモンと pubsub デーモンを統合するパッケージを提供します。次のパッケージを公開します。- Server: SimpleServer (HTTP) および RPCServer (gRPC)
- Server/kit の 2 つのサーバー実装を提供します。 Go Kit に基づく実験コード パッケージ ##Config 構成: JSON ファイル、Consul k/v の JSON BLOB、または環境変数からの構成関数が含まれています
-
-
##Pubsub/pubsubtest: パブリッシャー インターフェイスとサブスクライバー インターフェイスのテスト実装が含まれます
- #Web: リクエスト クエリとペイロードから型を解析するための外部関数
- Pubsub パッケージは、次のキューを処理するためのインターフェイスを提供します。
- pubsub/gcp: Google Pubsub #pubsub/kafka: Kafka トピックの場合
- pubsub/http: user HTTP Push
- つまり、私の意見では、Gizmo は Go Micro と Go Kit の間のどこかにあります。 Go Micro のような完全なブラックボックスではありません。同時に、Go Kit ほど原始的ではありません。構成や pubsub パッケージなどの高レベルの構築コンポーネントを提供します。
- Kite
Kite は、Go でマイクロサービスを開発するためのフレームワークです。 RPC クライアントおよびサーバー側のコード パッケージを公開します。作成されたサービスは、サービス検出システム Kontrol に自動的に登録されます。 Kontrol は Kite で書かれており、それ自体が Kite サービスです。これは、Kite マイクロサービスが独自の環境で適切に動作することを意味します。 Kite マイクロサービスを別のサービス検出システムに接続する必要がある場合は、カスタマイズが必要です。これが、私がリストから Kite を選択し、このフレームワークを導入しないことに決めた重要な理由の 1 つです。
[関連する推奨事項: Go ビデオ チュートリアル 、
プログラミング教育]
以上がGolang のマイクロサービスとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

GO言語で構造を定義する2つの方法:VARとタイプのキーワードの違い。構造を定義するとき、GO言語はしばしば2つの異なる執筆方法を見ます:最初...

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

VSCODEユーザーのGolang Generic Function Typeの制約の自動削除は、VSCODEを使用してGolangコードを書くときに奇妙な問題に遭遇する可能性があります。いつ...
