Heim >Backend-Entwicklung >Golang >Verwendung von Thrift für die Service-Governance in Beego
Mit der zunehmenden Reife und Beliebtheit serviceorientierter Architektur und Microservice-Architektur ist Service Governance zu einem immer wichtigeren Thema geworden. In Golang bietet Beego als beliebtes Web-Framework tatsächlich einige verwendbare Service-Governance-Methoden, einschließlich der Integration mit Thrift. Lassen Sie uns ausführlich besprechen, wie Thrift für die Service-Governance in Beego verwendet wird.
1. Was ist Thrift? Thrift ist ein von Facebook bereitgestelltes sprachübergreifendes Datenübertragungs-Framework. Es kann zum Definieren und Generieren eines Datenkodierungs-, Dekodierungs- und Service-Proxys für Remote-Anrufe verwendet werden. Im Gegensatz zu anderen RPC-Frameworks verwendet Thrift ein anderes Datenformat, eine andere Struktur und eine andere Codegenerierungsmethode als die Sprache selbst und erkennt die Fähigkeit der Dateninteraktion zwischen verschiedenen Plattformen, was bedeutet, dass wir damit Kommunikationsprobleme zwischen verschiedenen Sprachen lösen können.
Die Vorteile von Thrift sind Sprachunabhängigkeit, Plattformübergreifend, große Auswahl an programmierbaren Sprachen, einfache Codegenerierung, gute Leistung usw.
2. Thrift in Beego
Obwohl das Beego-Framework offiziell kein Framework für die Service-Governance bereitstellt, kann Thrift dennoch für die Service-Governance darin verwendet werden. Mit Thrift können wir schnell eine verteilte Servicearchitektur in Beego implementieren.
Konfigurieren Sie die laufende Umgebung
1. Holen Sie sich das Thrift-Codepaket in Beego.
Geben Sie den folgenden Befehl in das Befehlszeilenfenster ein:
go get git.apache.org/thrift.git/lib/go/ thrift
2. Fügen Sie die Thrift-Dienstadresse und die Portnummer in die Projektkonfigurationsdatei eingo get git.apache.org/thrift.git/lib/go/thrift
2.在项目配置文件中添加Thrift服务地址和端口号
在Beego项目中,我们需要在配置文件中增加一项thrift配置。在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), }
在其中定义了一个Calculator的服务,服务中封装了一个calculate方法,用于接收一个Work结构体参数,并返回一个整型结果。
4.将Thrift的IDL文件编译成目标语言文件
我们需要在项目中将thrift接口定义语言文件生成对应语言的代码文件。例如在我们的项目中,我们需要使用thrift工具将calculator.thrift编译为Go语言文件,首先我们需要在命令行中运行如下命令:
thrift --gen go calculator.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() }3. Fügen Sie die Thrift-IDL-Datei zum Projekt hinzu Wir können im Projekt einen neuen Thrift-Ordner erstellen, um die Thrift-Schnittstellendefinitionssprachendatei zu speichern. Beispielsweise erstellen wir im Projekt eine Calculator.thrift-Datei und definieren darin die Calculator-Dienstschnittstelle:
func main() { go thriftServer() beego.Run() }definiert darin einen Calculator-Dienst. Der Dienst kapselt eine Berechnungsmethode zum Empfangen eines Arbeitsstrukturparameters und gibt ein ganzzahliges Ergebnis zurück . 4. Kompilieren Sie die IDL-Datei von Thrift in eine Zielsprachendatei. Wir müssen die Codedatei der entsprechenden Sprache aus der Thrift-Schnittstellendefinitionssprachendatei im Projekt generieren. In unserem Projekt müssen wir beispielsweise das Tool „thrift“ verwenden, um „calculator.thrift“ in eine Go-Sprachdatei zu kompilieren. Zuerst müssen wir den folgenden Befehl in der Befehlszeile ausführen:
thrift --gen go „Calculator“. .thrift
Dieser Befehl generiert einen Gen-Go-Ordner im aktuellen Verzeichnis, der die von der Datei „calculator.thrift“ generierte Go-Sprachdatei enthält. Thrift-Dienst erstellenDas obige ist der detaillierte Inhalt vonVerwendung von Thrift für die Service-Governance in Beego. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!