Maison  >  Article  >  développement back-end  >  Utiliser Thrift pour la gouvernance des services dans Beego

Utiliser Thrift pour la gouvernance des services dans Beego

WBOY
WBOYoriginal
2023-06-22 22:09:48789parcourir

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

2. Ajoutez l'adresse du service Thrift et le numéro de port dans le fichier de configuration du projet

Dans le projet Beego, nous devons ajouter une configuration thrift au fichier de configuration. Ajoutez la configuration suivante au fichier app.conf :

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 cible

Nous 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.
  1. Créer un service Thrift
  2. Dans Beego, nous pouvons utiliser Thrift pour créer un service et implémenter les méthodes dans le fichier d'interface.
  3. rrreee
  4. Dans le code ci-dessus, nous obtenons d'abord l'adresse correspondant à thrift à partir du fichier de configuration, utilisons NewCalculatorProcessor pour encapsuler le proxy de service dans le code généré par l'outil thrift et le conditionnons dans un serveur via la méthode Thrift.NewTSimpleServer4 Monitor .
  5. Démarrez le service
Nous pouvons créer le serveur Thrift via goroutine dans le main.go de Beego et le surveiller :

rrreee

3 Avantages et scénarios applicables de Thrift
  1. L'utilisation de Thrift pour la gouvernance des services présente les avantages suivants :
  2. . Multilingue - L'intention initiale de la conception Thrift est de gérer la communication entre différents programmes (même dans différentes langues)
  3. Facile à maintenir - Le code peut être généré automatiquement, pas besoin d'écrire manuellement beaucoup de code de couche de transport réseau

Performance É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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn