Maison > Article > développement back-end > Utiliser Thrift pour la gouvernance des services dans Beego
Avec la maturité et la popularité progressives de l'architecture orientée services et de l'architecture microservice, la gouvernance des services est devenue un enjeu de plus en plus important. Dans Golang, Beego, en tant que framework Web populaire, fournit en fait des méthodes de gouvernance de services utilisables, y compris l'intégration avec Thrift. Discutons en détail de la façon d'utiliser Thrift pour la gouvernance de services dans Beego.
1. Qu'est-ce que Thrift
Thrift est un cadre de transmission de données multilingue open source par Facebook. Il peut être utilisé pour définir et générer un proxy de codage, de décodage et de service de données pour les appels à distance. Différent des autres frameworks RPC, Thrift adopte un format de données, une structure et une méthode de génération de code différents du langage lui-même, et réalise la capacité d'interaction des données entre différentes plates-formes, ce qui signifie que nous pouvons l'utiliser pour résoudre des problèmes de communication entre différents langages.
Les avantages de Thrift sont l'indépendance linguistique, la multiplateforme, une large gamme de langages programmables, une génération de code simple, de bonnes performances, etc.
2. Thrift dans Beego
Bien que le framework Beego ne fournisse pas officiellement de cadre pour la gouvernance des services, Thrift peut toujours être utilisé pour la gouvernance des services en son sein. Grâce à Thrift, nous pouvons rapidement implémenter une architecture de services distribués dans Beego.
Configurez l'environnement d'exécution
1. Obtenez le package de code Thrift dans Beego
Entrez la commande suivante dans la fenêtre de ligne de commande :
go get git.apache.org/thrift.git/lib/go/ thrift<code>go 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. Ajoutez le fichier Thrift IDL au projet Nous pouvons créer un nouveau dossier thrift dans le projet pour stocker le fichier de langage de définition de l'interface thrift. Par exemple, nous créons un fichier calculator.thrift dans le projet et y définissons l'interface du service de calculatrice :
func main() { go thriftServer() beego.Run() }y définit un service Calculator. Le service encapsule une méthode de calcul pour recevoir un paramètre de structure de travail et renvoie un résultat entier. . 4. Compilez le fichier IDL de Thrift dans un fichier de langue cibleNous devons générer le fichier de code de la langue correspondante à partir du fichier de langue de définition de l'interface Thrift dans le projet. Par exemple, dans notre projet, nous devons utiliser l'outil thrift pour compiler calculator.thrift dans un fichier en langage Go. Tout d'abord, nous devons exécuter la commande suivante dans la ligne de commande :
thrift --gen go calculator. .thrift
Cette commande générera un dossier gen-go dans le répertoire courant, qui contient le fichier de langue Go généré par le fichier calculator.thrift. rrreee
3 Avantages et scénarios applicables de ThriftPerformance Élevé - Thrift utilise le format binaire pour la transmission réseau, ce qui permet d'économiser de la bande passante et peut encore améliorer l'efficacité grâce à diverses méthodes de mise en œuvre - Thrift est similaire à d'autres frameworks RPC et il existe des clients correspondants tels que C++, Java et Python. . La mise en œuvre côté serveur ne se limite pas à Java et à d'autres domaines et présente une grande évolutivité.
Thrift convient aux scénarios suivants : 🎜🎜🎜Applications distribuées - Thrift peut facilement effectuer des appels de service multilingues et convient aux applications distribuées. Développement d'applications 🎜🎜Services en temps réel - Thrift est basé sur le protocole TCP/IP, plus efficace dans le traitement des requêtes et des réponses, et adapté aux scénarios liés aux services en temps réel 🎜🎜Limitations du coût de transmission élevé - Utilisations de Thrift format binaire pour la transmission, cela rend le coût de transmission relativement faible et peut réduire efficacement l'utilisation de la bande passante. 4. Résumé🎜🎜L'utilisation de Thrift pour la gouvernance des services dans Beego facilite grandement le travail des développeurs, permet des appels de service multilingues et réduit le coût de la transmission. l'ensemble du système. Dans le même temps, Thrift, en tant que cadre de transmission de données multilingue, est plus courant lors de la mise en œuvre d'applications véritablement distribuées et de services en temps réel. Par conséquent, nous pouvons apprendre à maîtriser Thrift pour le développement de services et élargir notre arbre de compétences. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!