サービス指向アーキテクチャとマイクロサービス アーキテクチャが徐々に成熟し、普及するにつれて、サービス ガバナンスがますます重要な問題になってきています。 Golang では、人気のある Web フレームワークである Beego が、Thrift との統合など、使用できるいくつかのサービス ガバナンス メソッドを実際に提供しています。Beego でサービス ガバナンスに Thrift を使用する方法について詳しく説明します。
1. Thrift とは
Thrift は Facebook がオープンソース化した言語間データ送信フレームワークで、データのエンコード、デコード、およびリモート呼び出し用のサービスの定義と生成に使用できます。演技。他の RPC フレームワークとは異なり、Thrift は言語自体とは異なるデータ形式、構造、コード生成方法を採用しており、異なるプラットフォーム間でのデータ対話機能を実現しているため、異なる言語間の通信問題の解決に使用できます。
Thrift の利点は、言語の独立性、クロスプラットフォーム、幅広いプログラム可能言語、簡潔なコード生成、優れたパフォーマンスなどです。
2. Beego の Thrift
Beego フレームワークはサービス ガバナンスのフレームワークを正式に提供していませんが、Thrift はサービス ガバナンスのフレームワーク内で引き続き使用できます。 Thrift を使用すると、Beego に分散サービス アーキテクチャを迅速に実装できます。
実行環境の構成
1. Beego で Thrift コード パッケージを取得します
コマンド ライン ウィンドウに次のコマンドを入力します:
git.apache.org/thrift.git/lib/go/thrift
2 を取得します。プロジェクト設定ファイルに Thrift サービスのアドレスとポート番号を追加します
Beego でプロジェクト、私たち 節約構成を構成ファイルに追加する必要があります。次の設定を app.conf ファイルに追加します:
[thrift] Addr = "127.0.0.1:9090"
3. Thrift IDL ファイルをプロジェクトに追加します
プロジェクトに新しい thrift フォルダーを作成して、thrift インターフェイス定義を保存できます。言語ファイル。たとえば、プロジェクト内に calculator.thrift ファイルを作成し、その中で電卓サービス インターフェイスを定義します。
enum Operation { ADD = 1, SUBTRACT = 2, MULTIPLY = 3, DIVIDE = 4 } struct Work { 1: i32 num1, 2: i32 num2, 3: Operation op, 4: i32 client_id, } service Calculator { i32 calculate(1: Work work), }
その中で電卓サービスが定義され、Work を受け取るサービス内に計算メソッドがカプセル化されます。構造体のパラメータを取得し、整数の結果を返します。
4. Thrift IDL ファイルをターゲット言語ファイルにコンパイルする
プロジェクト内の Thrift インターフェイス定義言語ファイルから、対応する言語のコード ファイルを生成する必要があります。たとえば、私たちのプロジェクトでは、thrift ツールを使用して calculator.thrift を Go 言語ファイルにコンパイルする必要があります。まず、コマンド ラインで次のコマンドを実行する必要があります:
thrift - -gen go calculator.thrift
このコマンドは、現在のディレクトリに gen-go フォルダーを生成します。このフォルダーには、calculator.thrift ファイルによって生成された Go 言語ファイルが含まれています。
Thrift サービスの作成
Beego では、Thrift を使用してサービスを作成し、インターフェイス ファイルにメソッドを実装できます。
import ( "git.apache.org/thrift.git/lib/go/thrift" "xxxx/thrift/gen-go/calculator" ) func thriftServer() { addr := beego.AppConfig.String("thrift::Addr") socket, err := thrift.NewTServerSocket(addr) if err != nil { panic(err) } handler := new(calculator.CalculatorHandler) processor := calculator.NewCalculatorProcessor(handler) server := thrift.NewTSimpleServer4(processor, socket, transportFactory, protocolFactory) server.Serve() }
上記のコードでは、まず構成ファイルから thrift に対応するアドレスを取得し、NewCalculatorProcessor を使用して thrift ツールによって生成されたコード内にサービス プロキシをカプセル化し、それを Thrift.NewTSimpleServer4 メソッドでラップします。監視するサーバーになります。
サービスを開始します
Beego の main.go の goroutine を通じて Thrift サーバーを作成し、それを監視できます:
func main() { go thriftServer() beego.Run() }
3. Thrift の利点と適用可能なシナリオ
サービス管理に Thrift を使用すると、次のような利点があります。
以上がBeego でのサービス ガバナンスに Thrift を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。