ホームページ  >  記事  >  バックエンド開発  >  Beego でのサービス ガバナンスに Thrift を使用する

Beego でのサービス ガバナンスに Thrift を使用する

WBOY
WBOYオリジナル
2023-06-22 22:09:48800ブラウズ

サービス指向アーキテクチャとマイクロサービス アーキテクチャが徐々に成熟し、普及するにつれて、サービス ガバナンスがますます重要な問題になってきています。 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 を使用すると、次のような利点があります。

  1. クロス言語 - Thrift は、異なるプログラム (異なる言語であっても) 間の通信を処理できるように設計されています
  2. 保守が簡単 -コードを自動的に生成できるため、多くのネットワーク伝送層コードを手動で記述する必要はありません
  3. 高性能 - Thrift はネットワーク伝送にバイナリ形式を使用するため、帯域幅が節約され、圧縮も可能です テクノロジーにより効率がさらに向上します
  4. 多様な実装方法 - Thrift は他の RPC フレームワークと同様に、C、Java、Python などの対応するクライアント実装とサーバー実装があり、Java などの分野に限定されず、高い拡張性を備えています
#Thrift は次のシナリオに適しています:

    分散アプリケーション - Thrift は言語を超えたサービス呼び出しを容易にし、分散アプリケーション開発に適しています
  1. リアルタイム サービス - Thrift は TCP/IP プロトコルに基づいており、リクエストと応答の処理がより効率的であり、リアルタイム サービスに関連するシナリオに適しています。送信コストが比較的低く、帯域幅の使用量を効果的に削減できます
  2. 4. 概要
Beego でのサービス管理に Thrift を使用すると、開発が大幅に容易になります。この作業により、言語を超えたサービス呼び出しが実現され、システム全体の保守コスト。同時に、真に分散されたアプリケーションやリアルタイム サービスを実装する場合、言語を超えたデータ送信フレームワークとしての Thrift が一般的になるため、サービス開発のために Thrift を習得し、スキル ツリーを拡張することができます。

以上がBeego でのサービス ガバナンスに Thrift を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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