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

Utiliser Thrift pour la gouvernance des services dans Beego

Jun 22, 2023 pm 10:09 PM
服务治理 beego thrift

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"
Copier après la connexion

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),
}
Copier après la connexion

在其中定义了一个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()
}
Copier après la connexion

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()
}
Copier après la connexion
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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utiliser Prometheus et Grafana pour mettre en œuvre la surveillance et les alarmes dans Beego Utiliser Prometheus et Grafana pour mettre en œuvre la surveillance et les alarmes dans Beego Jun 22, 2023 am 09:06 AM

Avec l’essor du cloud computing et des microservices, la complexité des applications a augmenté. Par conséquent, la surveillance et le diagnostic deviennent l’une des tâches de développement importantes. À cet égard, Prometheus et Grafana sont deux outils open source populaires de surveillance et de visualisation qui peuvent aider les développeurs à mieux surveiller et analyser les applications. Cet article explorera comment utiliser Prometheus et Grafana pour implémenter la surveillance et les alarmes dans le framework Beego. 1. Introduction Beego est une application web open source à développement rapide.

Utilisez Google Analytics pour compter les données du site Web dans Beego Utilisez Google Analytics pour compter les données du site Web dans Beego Jun 22, 2023 am 09:19 AM

Avec le développement rapide d'Internet, l'utilisation d'applications Web devient de plus en plus courante. La manière de surveiller et d'analyser l'utilisation des applications Web est devenue une préoccupation des développeurs et des opérateurs de sites Web. Google Analytics est un puissant outil d'analyse de sites Web qui permet de suivre et d'analyser le comportement des visiteurs d'un site Web. Cet article explique comment utiliser Google Analytics dans Beego pour collecter des données de sites Web. 1. Pour enregistrer un compte Google Analytics, vous devez d'abord

Utilisation de ZooKeeper et Curator pour la coordination et la gestion distribuées dans Beego Utilisation de ZooKeeper et Curator pour la coordination et la gestion distribuées dans Beego Jun 22, 2023 pm 09:27 PM

Avec le développement rapide d'Internet, les systèmes distribués sont devenus l'une des infrastructures de nombreuses entreprises et organisations. Pour qu’un système distribué fonctionne correctement, il doit être coordonné et géré. À cet égard, ZooKeeper et Curator sont deux outils qui valent la peine d'être utilisés. ZooKeeper est un service de coordination distribué très populaire qui peut nous aider à coordonner l'état et les données entre les nœuds d'un cluster. Curator est une encapsulation de ZooKeeper

Gestion des erreurs dans Beego - éviter les plantages d'applications Gestion des erreurs dans Beego - éviter les plantages d'applications Jun 22, 2023 am 11:50 AM

Dans le framework Beego, la gestion des erreurs est un élément très important, car si l'application ne dispose pas d'un mécanisme de gestion des erreurs correct et complet, cela peut provoquer un crash ou un mauvais fonctionnement de l'application, ce qui est à la fois un avantage pour nos projets et pour les utilisateurs. problème très grave. Le framework Beego fournit une série de mécanismes pour nous aider à éviter ces problèmes et à rendre notre code plus robuste et maintenable. Dans cet article, nous présenterons les mécanismes de gestion des erreurs dans le framework Beego et discuterons de la manière dont ils peuvent nous aider à éviter

Utiliser JWT pour implémenter l'authentification dans Beego Utiliser JWT pour implémenter l'authentification dans Beego Jun 22, 2023 pm 12:44 PM

Avec le développement rapide d'Internet et de l'Internet mobile, de plus en plus d'applications nécessitent une authentification et un contrôle des autorisations, et JWT (JSON Web Token), en tant que mécanisme léger d'authentification et d'autorisation, est largement utilisé dans les applications WEB. Beego est un framework MVC basé sur le langage Go, qui présente les avantages d'efficacité, de simplicité et d'évolutivité. Cet article explique comment utiliser JWT pour implémenter l'authentification dans Beego. 1. Introduction à JWT JSONWebToken (JWT) est un

Cinq projets open source sélectionnés en langage Go pour vous emmener explorer le monde de la technologie Cinq projets open source sélectionnés en langage Go pour vous emmener explorer le monde de la technologie Jan 30, 2024 am 09:08 AM

À l'ère actuelle de développement technologique rapide, les langages de programmation poussent comme des champignons après la pluie. L'un des langages qui a beaucoup retenu l'attention est le langage Go, apprécié par de nombreux développeurs pour sa simplicité, son efficacité, sa sécurité de concurrence et d'autres fonctionnalités. Le langage Go est connu pour son écosystème solide avec de nombreux excellents projets open source. Cet article présentera cinq projets open source sélectionnés en langage Go et amènera les lecteurs à explorer le monde des projets open source en langage Go. KubernetesKubernetes est un moteur d'orchestration de conteneurs open source pour l'automatisation

Déploiement et gestion de production à l'aide de Docker et Kubernetes dans Beego Déploiement et gestion de production à l'aide de Docker et Kubernetes dans Beego Jun 23, 2023 am 08:58 AM

Avec le développement rapide d’Internet, de plus en plus d’entreprises ont commencé à migrer leurs applications vers des plateformes cloud. Docker et Kubernetes sont devenus deux outils très populaires et puissants pour le déploiement et la gestion d'applications sur les plateformes cloud. Beego est un framework Web développé à l'aide de Golang. Il fournit des fonctions riches telles que le routage HTTP, la superposition MVC, la journalisation, la gestion de la configuration et la gestion des sessions. Dans cet article, nous expliquerons comment utiliser Docker et Kub

Utilisation de Hadoop et HBase dans Beego pour le stockage et les requêtes Big Data Utilisation de Hadoop et HBase dans Beego pour le stockage et les requêtes Big Data Jun 22, 2023 am 10:21 AM

Avec l'avènement de l'ère du Big Data, le traitement et le stockage des données sont devenus de plus en plus importants, et la gestion et l'analyse efficaces de grandes quantités de données sont devenues un défi pour les entreprises. Hadoop et HBase, deux projets de la Fondation Apache, proposent une solution de stockage et d'analyse du Big Data. Cet article explique comment utiliser Hadoop et HBase dans Beego pour le stockage et les requêtes Big Data. 1. Introduction à Hadoop et HBase Hadoop est un système informatique et de stockage distribué open source qui peut

See all articles