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 サイトの他の関連記事を参照してください。

Cは、ハードウェアリソースと高性能の最適化が必要なシナリオにより適していますが、Golangは迅速な開発と高い並行性処理が必要なシナリオにより適しています。 1.Cの利点は、ハードウェア特性と高い最適化機能に近いものにあります。これは、ゲーム開発などの高性能ニーズに適しています。 2.Golangの利点は、その簡潔な構文と自然な並行性サポートにあり、これは高い並行性サービス開発に適しています。

Golangは実際のアプリケーションに優れており、そのシンプルさ、効率性、並行性で知られています。 1)同時プログラミングはゴルチンとチャネルを通じて実装されます。2)柔軟なコードは、インターフェイスと多型を使用して記述されます。3)ネット/HTTPパッケージを使用したネットワークプログラミングを簡素化、4)効率的な同時クローラーを構築する、5)ツールと最高の実践を通じてデバッグと最適化。

GOのコア機能には、ガベージコレクション、静的リンク、並行性サポートが含まれます。 1. GO言語の並行性モデルは、GoroutineとChannelを通じて効率的な同時プログラミングを実現します。 2.インターフェイスと多型は、インターフェイスメソッドを介して実装されているため、異なるタイプを統一された方法で処理できます。 3.基本的な使用法は、関数定義と呼び出しの効率を示しています。 4。高度な使用法では、スライスは動的なサイズ変更の強力な機能を提供します。 5.人種条件などの一般的なエラーは、Getest Raceを通じて検出および解決できます。 6.パフォーマンス最適化Sync.Poolを通じてオブジェクトを再利用して、ゴミ収集圧力を軽減します。

GO言語は、効率的でスケーラブルなシステムの構築においてうまく機能します。その利点には次のものがあります。1。高性能:マシンコードにコンパイルされ、速度速度が速い。 2。同時プログラミング:ゴルチンとチャネルを介してマルチタスクを簡素化します。 3。シンプルさ:簡潔な構文、学習コストとメンテナンスコストの削減。 4。クロスプラットフォーム:クロスプラットフォームのコンパイル、簡単な展開をサポートします。

SQLクエリの結果の並べ替えについて混乱しています。 SQLを学習する過程で、しばしば混乱する問題に遭遇します。最近、著者は「Mick-SQL Basics」を読んでいます...

テクノロジースタックの収束とテクノロジーの選択の関係ソフトウェア開発におけるテクノロジーの選択、テクノロジースタックの選択と管理は非常に重要な問題です。最近、一部の読者が提案しています...

ゴーラン...

GO言語で3つの構造を比較および処理する方法。 GOプログラミングでは、2つの構造の違いを比較し、これらの違いを...


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

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

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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