Maison développement back-end Golang Utiliser Zookeeper et Dubbo pour implémenter la gouvernance des services distribués dans Beego

Utiliser Zookeeper et Dubbo pour implémenter la gouvernance des services distribués dans Beego

Jun 22, 2023 am 08:43 AM
dubbo zookeeper beego

Avec le développement continu des activités Internet, un seul nœud de service ne peut plus répondre aux besoins de haute concurrence et de haute disponibilité. L’architecture distribuée est donc devenue une méthode de développement moderne et l’une des technologies qu’il faut maîtriser.

Dans une architecture distribuée, la gouvernance des services est une problématique complexe et importante. Afin de garantir la haute disponibilité, la qualité et les performances des services, la gouvernance des services doit mettre en œuvre plusieurs fonctions telles que l'enregistrement des services, la découverte, l'équilibrage de charge, le basculement et la surveillance. Zookeeper et Dubbo sont des leaders en matière de gouvernance de services distribués. Ils peuvent travailler ensemble pour réaliser l'ensemble du processus de gouvernance de services.

Cet article expliquera comment utiliser Zookeeper et Dubbo pour implémenter la gouvernance des services distribués dans le framework Beego.

1. Zookeeper

Zookeeper est un service de coordination distribué open source. Il a été initialement développé par Yahoo et est maintenant devenu un projet de haut niveau d'Apache. Il peut gérer un grand nombre de nœuds et les coordonner, les synchroniser et les surveiller pour obtenir des fonctions de haute disponibilité et de découverte de services.

  1. Installez et démarrez Zookeeper

Tout d'abord, vous devez télécharger la version stable de Zookeeper depuis le site officiel de Zookeeper https://zookeeper.apache.org/. Après décompression, configurez le fichier zoo.cfg. Pour démarrer Zookeeper en mode autonome, il vous suffit d'ajouter une ligne de configuration au fichier zoo.cfg :

server.1=localhost:2888:3888
Copier après la connexion

Parmi eux, 1 représente le numéro dans le cluster Zookeeper, et localhost:2888:3888 représente l'IP, port et port d'élection que le nœud Zookeeper écoute.

Ensuite, exécutez la commande suivante pour démarrer Zookeeper :

./zkServer.sh start
Copier après la connexion

Vous pouvez utiliser la commande suivante pour vérifier si Zookeeper a démarré avec succès :

echo ruok | nc localhost 2181
Copier après la connexion

Si Zookeeper fonctionne normalement et que "imok" est renvoyé, cela signifie que le démarrage a réussi .

  1. Utilisez ZkGo pour les opérations Zookeeper

Il existe plusieurs bibliothèques Zookeeper parmi lesquelles choisir dans le langage Go, parmi lesquelles la plus populaire et la plus stable est ZkGo. En utilisant ZkGo, vous pouvez facilement vous connecter à Zookeeper, créer des nœuds, surveiller les modifications des nœuds, etc.

Pour utiliser ZkGo dans le framework Beego du langage Go, vous devez d'abord installer la dépendance ZkGo :

go get github.com/samuel/go-zookeeper/zk
Copier après la connexion

Ensuite, vous pouvez faire fonctionner le nœud Zookeeper dans le code, par exemple :

package main

import (
    "fmt"
    "time"
    "github.com/samuel/go-zookeeper/zk"
)

func main() {
    // 连接Zookeeper服务器
    conn, _, err := zk.Connect([]string{"localhost:2181"}, time.Second*5)
    if err != nil {
        panic(err)
    }
    defer conn.Close()

    // 创建一个节点
    path, err := conn.Create("/test", []byte("hello world"), 0, zk.WorldACL(zk.PermAll))
    if err != nil {
        panic(err)
    }
    fmt.Println("Created znode:", path)

    // 获取该节点的值
    data, _, err := conn.Get(path)
    if err != nil {
        panic(err)
    }
    fmt.Printf("Get znode %s: %s
", path, data)

    // 删除该节点
    err = conn.Delete(path, -1)
    if err != nil {
        panic(err)
    }
    fmt.Println("Deleted znode:", path)
}
Copier après la connexion

Dans l'exemple ci-dessus, passez d'abord zk. Connect pour vous connecter au serveur Zookeeper, puis utilisez la méthode zk.Create pour créer un nœud nommé "/test" et utilisez la chaîne "hello world" comme données de nœud. Utilisez ensuite la méthode zk.Get pour obtenir les données du nœud "/test", et utilisez la méthode zk.Delete pour supprimer le nœud. zk.Connect方法连接Zookeeper服务器,然后使用zk.Create方法创建名为“/test”的节点,并将“hello world”字符串作为节点数据。接着使用zk.Get方法获取“/test”节点的数据,并使用zk.Delete方法删除该节点。

二、Dubbo

Dubbo是一个高性能的分布式服务框架,是阿里巴巴开源项目之一。Dubbo提供了服务注册、发现、负载均衡、故障转移等多种功能,并支持多种RPC通信协议。

  1. 安装和启动Dubbo

首先,需要下载Dubbo框架,官方网站是https://github.com/apache/dubbo-go,解压后进入dubbo/go-server/demo目录,使用以下命令启动Dubbo:

go run main.go
Copier après la connexion

在启动后,可以通过Dubbo的Web管理控制台查看Dubbo的运行状态。

  1. 使用Dubbo注册和调用服务

Beego框架与Dubbo的集成需要使用DubboGo SDK,可以通过以下命令安装:

go get github.com/apache/dubbo-go
Copier après la connexion

使用DubboGo SDK可以方便地访问Dubbo提供的RPC服务。在Beego框架中,可以通过以下代码注册和调用Dubbo提供的服务:

import (
    "github.com/apache/dubbo-go/config"
    "github.com/apache/dubbo-go/registry"
)

// 注册Dubbo服务
func RegisterDubboService() {
    // 配置Dubbo服务注册中心
    config.GetApplicationConfig().Name = "my-application"
    config.GetProviderConfig().Registry = registry.NewZookeeperRegistry("127.0.0.1:2181")
    // 注册服务
    err := config.RegisterProvider(
        &config.ServiceConfig{
            InterfaceName: "org.apache.dubbo.DemoService",
            Protocol:      "dubbo",
            Ip:            "127.0.0.1",
            Port:          20880,
            MethodConfigs: []*config.MethodConfig{
                &config.MethodConfig{
                    Name: "SayHello",
                },
            },
            Registry: config.GetProviderConfig().Registry,
        },
        new(DemoServiceImpl),
    )
    if err != nil {
        panic(err)
    }
}

// 调用Dubbo服务
func CallDubboService() {
    // 配置Dubbo服务发现中心
    config.GetConsumerConfig().Registry = registry.NewZookeeperRegistry("127.0.0.1:2181")
    // 调用服务
    reference, err := config.NewReference(&config.ReferenceConfig{
        InterfaceName: "org.apache.dubbo.DemoService",
        Urls:          []string{"dubbo://127.0.0.1:20880/org.apache.dubbo.DemoService"},
        Registry:      config.GetConsumerConfig().Registry,
    })
    if err != nil {
        panic(err)
    }
    demoService := reference.(*DemoService)
    res, err := demoService.SayHello("Dubbo")
    if err != nil {
        panic(err)
    }
    fmt.Println(res)
}
Copier après la connexion

在上面的代码中,先使用DubboGo SDK注册服务,然后使用DubboGo SDK调用服务。在注册服务时,需要首先配置Dubbo服务注册中心,然后定义服务的接口名称、协议、IP地址、端口、方法配置等信息。在调用服务时,需要配置Dubbo服务发现中心,并使用Dubbo提供的服务URL和接口名称创建Dubbo服务引用。

三、集成Zookeeper和Dubbo

在Beego框架中集成Zookeeper和Dubbo,需要先注册Dubbo服务,然后使用Dubbo提供的服务URL在Zookeeper注册Dubbo节点。可以以下代码实现:

import (
    "github.com/apache/dubbo-go/config"
    "github.com/apache/dubbo-go/registry"
    "github.com/samuel/go-zookeeper/zk"
)

// 集成Zookeeper和Dubbo
func IntegrateZkDubbo() {
    // 配置Dubbo服务注册中心
    config.GetApplicationConfig().Name = "my-application"
    config.GetProviderConfig().Registry = registry.NewZookeeperRegistry("127.0.0.1:2181")

    // 注册Dubbo服务
    err := config.RegisterProvider(
        &config.ServiceConfig{
            InterfaceName: "org.apache.dubbo.DemoService",
            Protocol:      "dubbo",
            Ip:            "127.0.0.1",
            Port:          20880,
            MethodConfigs: []*config.MethodConfig{
                &config.MethodConfig{
                    Name: "SayHello",
                },
            },
            Registry: config.GetProviderConfig().Registry,
        },
        new(DemoServiceImpl),
    )
    if err != nil {
        panic(err)
    }

    // 将Dubbo服务URL注册到Zookeeper
    conn, _, err := zk.Connect([]string{"localhost:2181"}, time.Second*5)
    if err != nil {
        panic(err)
    }
    defer conn.Close()

    serviceURL := fmt.Sprintf("dubbo://127.0.0.1:20880/org.apache.dubbo.DemoService?anyhost=true&application=my-application&dubbo=2.0.2&generic=false&interface=org.apache.dubbo.DemoService&loadbalance=random&methods=SayHello&pid=1&side=provider&timeout=1000000")
    _, err = conn.Create("/dubbo/org.apache.dubbo.DemoService/providers/"+serviceURL, nil, zk.FlagEphemeral, zk.WorldACL(zk.PermAll))
    if err != nil {
        panic(err)
    }
}
Copier après la connexion

在上面的代码中,先使用DubboGo SDK注册服务,然后获取Dubbo服务URL,并将Dubbo服务URL的信息注册到Zookeeper。首先通过zk.Connect方法连接Zookeeper服务器,然后使用zk.Create方法在Zookeeper创建名为“/dubbo/org.apache.dubbo.DemoService/providers/服务URL”的节点,其中,节点数据为空,节点类型为zk.FlagEphemeral

2. Dubbo

Dubbo est un framework de services distribués hautes performances et l'un des projets open source d'Alibaba. Dubbo fournit plusieurs fonctions telles que l'enregistrement de services, la découverte, l'équilibrage de charge, le basculement, etc., et prend en charge plusieurs protocoles de communication RPC.

Installez et démarrez Dubbo

Tout d'abord, vous devez télécharger le framework Dubbo. Le site officiel est https://github.com/apache/dubbo-go. Après la décompression, entrez dans le fichier dubbo/go-server/demo. répertoire et utilisez la commande suivante pour démarrer Dubbo :

dubbo://127.0.0.1:20880/org.apache.dubbo.DemoService?anyhost=true&application=my-application&dubbo=2.0.2&generic=false&interface=org.apache.dubbo.DemoService&loadbalance=random&methods=SayHello&pid=1&side=provider&timeout=1000000
Copier après la connexion

Après le démarrage, vous pouvez vérifier l'état d'exécution de Dubbo via la console de gestion Web de Dubbo. 🎜🎜🎜Utilisez Dubbo pour vous inscrire et appeler les services🎜🎜🎜L'intégration du framework Beego et Dubbo nécessite l'utilisation du SDK DubboGo, qui peut être installé via la commande suivante : 🎜
{
    "methodName": "SayHello",
    "parameterTypes": [
        "java.lang.String"
    ],
    "arguments": [
        "Dubbo"
    ]
}
Copier après la connexion
🎜L'utilisation du SDK DubboGo peut facilement accéder aux services RPC fournis par Dubo. Dans le framework Beego, vous pouvez vous inscrire et appeler les services fournis par Dubbo via le code suivant : 🎜rrreee🎜 Dans le code ci-dessus, utilisez d'abord le SDK DubboGo pour enregistrer le service, puis utilisez le SDK DubboGo pour appeler le service. Lors de l'enregistrement d'un service, vous devez d'abord configurer le centre d'enregistrement du service Dubbo, puis définir le nom de l'interface, le protocole, l'adresse IP, le port, la configuration de la méthode et d'autres informations du service. Lorsque vous appelez un service, vous devez configurer le centre de découverte du service Dubbo et créer une référence de service Dubbo à l'aide de l'URL du service et du nom de l'interface fournis par Dubbo. 🎜🎜3. Intégrer Zookeeper et Dubbo🎜🎜Pour intégrer Zookeeper et Dubbo dans le framework Beego, vous devez d'abord enregistrer le service Dubbo, puis utiliser l'URL du service fournie par Dubbo pour enregistrer le nœud Dubbo dans Zookeeper. Cela peut être réalisé avec le code suivant : 🎜rrreee🎜Dans le code ci-dessus, utilisez d'abord le SDK DubboGo pour enregistrer le service, puis obtenez l'URL du service Dubbo et enregistrez les informations de l'URL du service Dubbo auprès de Zookeeper. Connectez-vous d'abord au serveur Zookeeper via la méthode zk.Connect, puis utilisez la méthode zk.Create pour créer un service nommé "/dubbo/org.apache.dubbo. DemoService/providers/ in Zookeeper URL", dans lequel les données du nœud sont vides et le type de nœud est zk.FlagEphemeral, indiquant qu'il s'agit d'un nœud temporaire. Une fois le nœud créé avec succès, le service Dubbo sera enregistré sur Zookeeper. 🎜🎜4. Tests🎜🎜Après avoir utilisé le framework Beego pour intégrer Zookeeper et Dubbo, vous pouvez tester le service Dubbo via des requêtes HTTP pour vérifier la mise en œuvre de la fonction de gouvernance du service. Vous pouvez utiliser des outils HTTP tels que Postman pour créer l'en-tête de requête HTTP à l'aide de l'URL du service Dubbo, puis ajouter les paramètres de requête dans le corps du message pour lancer un appel de service Dubbo. Par exemple, supposons que l'URL du service Dubbo soit : 🎜rrreee🎜Lorsque vous utilisez Postman pour simuler un appel de service Dubbo, vous pouvez ajouter les paramètres suivants dans le corps de la requête HTTP (le type de contenu est application/json) : 🎜rrreee🎜Après l'envoi la requête HTTP, vous pouvez obtenir le résultat de l'appel de ce service. 🎜🎜Résumé🎜

La gouvernance des services distribués est une question complexe et importante. L'intégration de Zookeeper et Dubbo dans le framework Beego peut réaliser plusieurs fonctions telles que l'enregistrement des services, la découverte, l'équilibrage de charge, le basculement, etc., et fournir un support solide pour la fiabilité et la haute disponibilité des services distribués. systèmes. Nous pouvons apprendre et utiliser les exemples de code fournis dans cet article, maîtriser la technologie de base de la gouvernance des services distribués et l'appliquer dans des projets réels.

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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

Tutoriel pratique de développement SpringBoot+Dubbo+Nacos Tutoriel pratique de développement SpringBoot+Dubbo+Nacos Aug 15, 2023 pm 04:49 PM

Cet article écrira un exemple détaillé pour parler du développement réel de dubbo+nacos+Spring Boot. Cet article ne couvrira pas trop de connaissances théoriques, mais écrira l'exemple le plus simple pour illustrer comment dubbo peut être intégré à nacos pour créer rapidement un environnement de développement.

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

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

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

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

Go : les essentiels du développement linguistique : 5 recommandations de framework populaires Go : les essentiels du développement linguistique : 5 recommandations de framework populaires Mar 24, 2024 pm 01:15 PM

"Go Language Development Essentials : 5 recommandations de framework populaires" En tant que langage de programmation rapide et efficace, le langage Go est favorisé par de plus en plus de développeurs. Afin d'améliorer l'efficacité du développement et d'optimiser la structure du code, de nombreux développeurs choisissent d'utiliser des frameworks pour créer rapidement des applications. Dans le monde du langage Go, il existe de nombreux excellents frameworks parmi lesquels choisir. Cet article présentera 5 frameworks de langage Go populaires et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et utiliser ces frameworks. 1.GinGin est un framework Web léger avec une rapidité

See all articles