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"
Nach dem Login kopieren
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),
}
Nach dem Login kopieren
在其中定义了一个Calculator的服务,服务中封装了一个calculate方法,用于接收一个Work结构体参数,并返回一个整型结果。
4.将Thrift的IDL文件编译成目标语言文件
我们需要在项目中将thrift接口定义语言文件生成对应语言的代码文件。例如在我们的项目中,我们需要使用thrift工具将calculator.thrift编译为Go语言文件,首先我们需要在命令行中运行如下命令:
thrift --gen go calculator.thrift
Im Beego-Projekt müssen wir der Konfigurationsdatei eine Thrift-Konfiguration hinzufügen. Fügen Sie die folgende Konfiguration zur app.conf-Datei hinzu:
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()
}
Nach dem Login kopieren
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()
}
Nach dem Login kopieren
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 erstellen
- In Beego können wir Thrift verwenden, um einen Dienst zu erstellen und die Methoden in der Schnittstellendatei zu implementieren.
rrreee- Im obigen Code erhalten wir zunächst die Adresse, die Thrift entspricht, aus der Konfigurationsdatei, verwenden NewCalculatorProcessor, um den Dienst-Proxy in den vom Thrift-Tool generierten Code zu kapseln, und packen ihn über den Thrift.NewTSimpleServer4-Methodenmonitor in einen Server .
- Starten Sie den Dienst. Wir können den Thrift-Server über Goroutine in Beegos main.go erstellen und überwachen: Sprachübergreifend – Die ursprüngliche Absicht des Thrift-Designs besteht darin, die Kommunikation zwischen verschiedenen Programmen (auch in verschiedenen Sprachen) zu handhaben.
- Einfach zu warten – Code kann automatisch generiert werden, es ist nicht erforderlich, viel Code für die Netzwerktransportschicht manuell zu schreiben.
Leistung Hoch – Thrift verwendet ein Binärformat für die Netzwerkübertragung, wodurch Bandbreite gespart wird und die Effizienz durch Komprimierungstechnologie weiter verbessert werden kann – Thrift ähnelt anderen RPC-Frameworks und es gibt entsprechende Clients und Clients wie C++, Java und Python Die serverseitige Implementierung ist nicht auf Java und andere Bereiche beschränkt und weist eine hohe Skalierbarkeit auf. Thrift eignet sich für die folgenden Szenarien:
Verteilte Anwendungen – Thrift kann problemlos sprachübergreifende Serviceaufrufe durchführen und ist für verteilte Anwendungen geeignet Anwendungsentwicklung - Echtzeitdienste – Thrift basiert auf dem TCP/IP-Protokoll, verarbeitet Anfragen und Antworten effizienter und eignet sich für Szenarien im Zusammenhang mit Echtzeitdiensten
- Einschränkungen hoher Übertragungskosten – Thrift verwendet das Binärformat für Übertragung, Dies macht die Übertragungskosten relativ niedrig und kann die Bandbreitennutzung effektiv reduzieren. 4. Zusammenfassung
- Die Verwendung von Thrift für die Service-Governance in Beego erleichtert die Arbeit von Entwicklern erheblich, ermöglicht sprachübergreifende Serviceaufrufe und reduziert die Kosten des gesamten Systems . Wartungskosten. Gleichzeitig wird Thrift als sprachübergreifendes Datenübertragungsframework häufiger bei der Implementierung wirklich verteilter Anwendungen und Echtzeitdienste eingesetzt. Daher können wir lernen, Thrift für die Serviceentwicklung zu beherrschen und unseren Fähigkeitsbaum zu erweitern.
Das 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!