Maison développement back-end Golang De l'entrée à la compétence : maîtriser le cadre go-zero

De l'entrée à la compétence : maîtriser le cadre go-zero

Jun 23, 2023 am 11:37 AM
入门 框架 go-zero

Go-zero est un excellent framework de langage Go qui fournit un ensemble complet de solutions, notamment RPC, mise en cache, tâches planifiées et autres fonctions. En fait, il est très simple de créer un service performant en utilisant go-zero, et vous pouvez même passer de débutant à compétent en quelques heures.

Cet article vise à présenter le processus de création de services hautes performances à l'aide du framework go-zero et à aider les lecteurs à comprendre rapidement les concepts de base du framework.

1. Installation et configuration

Avant de commencer à utiliser go-zero, nous devons l'installer et configurer certains environnements nécessaires.

1. Installation

L'installation de go-zero est très simple, exécutez simplement la commande suivante :

$ go get -u github.com/tal-tech/go-zero
Copier après la connexion

Cela téléchargera automatiquement la dernière version de go-zero depuis GitHub. Cependant, il convient de noter qu'il est recommandé d'utiliser Go 1.13 et supérieur.

2. Configuration

Avant d'utiliser go-zero, nous devons configurer certains environnements nécessaires pour celui-ci. Plus précisément, nous devons installer l'outil de ligne de commande goctl afin d'utiliser go-zero pour créer des services.

$ GO111MODULE=on go get -u github.com/tal-tech/go-zero/tools/goctl
Copier après la connexion

3. Créer un projet

Ensuite, nous devons utiliser goctl pour créer un nouveau projet. Nous supposons que le projet s'appelle blog et peut être créé avec la commande suivante :

$ mkdir blog
$ cd blog
$ go mod init blog
$ goctl api new blog
Copier après la connexion

La commande ci-dessus créera un nouveau projet API et générera certains fichiers et répertoires nécessaires.

2. Créer un service

Ensuite, nous pouvons utiliser go-zero pour créer un nouveau service. Nous supposons que le nom du service est user-service, qui peut être créé en suivant les étapes suivantes :

1. Générer le service

Utilisez goctl pour générer le code de service du user-service :

$ goctl api go -api user.api -dir .
Copier après la connexion

La commande ci-dessus générera un utilisateur. répertoire dans le répertoire courant, qui contient Un fichier nommé user.go, qui contient le code de service de user-service.

2. Implémenter le gestionnaire

Nous devons également implémenter une logique métier spécifique, qui est le gestionnaire.

Tout d'abord, nous devons créer un nouveau répertoire nommé handler sous le répertoire utilisateur et y créer un fichier nommé userhandler.go. Ce fichier contiendra notre code de gestionnaire.

Le code userhandler.go est le suivant :

package handler

import (
    "net/http"

    "github.com/tal-tech/go-zero/rest/httpx"
    "blog/service/user/api/internal/logic"
    "blog/service/user/api/internal/svc"
)

func userHandler(ctx *svc.ServiceContext) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        req, err := httpx.NewRequest(r)
        if err != nil {
            httpx.WriteError(w, err)
            return
        }

        l := logic.NewUserLogic(r.Context(), ctx)
        resp, err := l.GetUser(req)
        if err != nil {
            httpx.WriteError(w, err)
            return
        }

        httpx.WriteJson(w, resp)
    }
}
Copier après la connexion

Le code ci-dessus utilise le package rest/httpx fourni par go-zero, qui fournit des fonctions pratiques, telles que NewRequest, WriteError et WriteJSON, etc., ce qui simplifie le service HTTP. processus d'écriture.

3. Enregistrer le gestionnaire

Nous devons maintenant enregistrer le programme de gestion ci-dessus dans le service.

Dans la méthode init du fichier user.go, ajoutez le code suivant :

func (s *Service) InitHandlers() {
    s.UserHandler = http.HandlerFunc(handler.UserHandler(s.Context))
}
Copier après la connexion

Le code ci-dessus enregistre la fonction userHandler en tant que service HTTP, et nous pouvons accéder à ce service en définissant une route dans le fichier API.

3. Créer un modèle

Nous pouvons générer une nouvelle API go-zero via goctl create api, qui créera automatiquement un dossier contenant certaines configurations d'initialisation. Nous pouvons y ajouter notre propre contrôleur et service selon les exigences de goctl.

Ici, nous créons un modèle d'application pour mieux apprendre à lire le code source de go-zero. L'application contiendra un exemple CRUD montrant comment utiliser les fonctionnalités communes de go-zero.

1. Générer un modèle

Nous pouvons utiliser goctl pour générer une application modèle afin de mieux apprendre le code source de go-zero.

$ goctl api template -o app.go
Copier après la connexion

La commande ci-dessus créera un fichier appelé app.go qui contient tout le code source de l'application modèle.

2. Implémenter l'accès aux données

Nous supposons que MySQL est utilisé pour le stockage des données. Avant de démarrer, MySQL doit être installé et configuré. Sur cette base, nous pouvons utiliser go-sql fourni par go-zero pour construire la couche d'accès à la base de données.

Plus précisément, nous pouvons utiliser goctl pour générer le code de la couche d'accès aux données :

$ goctl model mysql datasource "root:123456@tcp(127.0.0.1:3306)/test" -table user -dir .
Copier après la connexion

La commande ci-dessus générera un fichier userModel.go qui contient le modèle de données utilisateur pour l'accès aux données.

3. Implémenter la logique métier

Ensuite, nous devons implémenter la logique métier et l'utiliser en conjonction avec la couche d'accès aux données. Plus précisément, nous pouvons créer un fichier appelé userLogic.go qui contient la logique métier pour la gestion des utilisateurs. Le code

userLogic.go est le suivant :

package logic

import (
    "context"
    "github.com/tal-tech/go-zero/core/logx"
    "github.com/tal-tech/go-zero/core/stores/sqlx"
    "blog/service/user/model"
    "blog/service/user/api/internal/svc"
    "blog/service/user/api/internal/types"
)

type UserLogic struct {
    ctx context.Context
    svcCtx *svc.ServiceContext
    logx.Logger
}

func NewUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) UserLogic {
    return UserLogic{
        ctx: ctx,
        svcCtx: svcCtx,
        Logger: logx.WithContext(ctx),
    }
}

func (l *UserLogic) GetUser(req types.GetUserRequest) (*types.GetUserResponse, error) {
    //Todo
}
Copier après la connexion

Dans le code ci-dessus, nous avons introduit les packages sqlx, stores et logx, où sqlx fait partie du framework go-zero et est spécifiquement utilisé pour les opérations de base de données. stores est la couche de stockage de données du framework go-zero. Le package logx est une bibliothèque de journalisation fournie par le framework go-zero, qui peut nous aider à enregistrer des événements importants.

4. Intégrer ETCD, etc.

En utilisant le framework go-zero, nous pouvons facilement intégrer certains outils et services couramment utilisés, tels que ETCD, Redis, ZooKeeper, etc. Plus précisément, nous pouvons importer les bibliothèques pertinentes fournies par go-zero dans le code et configurer les informations pertinentes dans le fichier de configuration.

Voici quelques méthodes d'intégration couramment utilisées :

1. Intégrez ETCD

Tout d'abord, ajoutez les informations suivantes dans le fichier de configuration :

[etcd]
host = "localhost:2379"
Copier après la connexion

Ensuite, dans le code où vous souhaitez utiliser ETCD, utilisez la fonction clientv3.New. pour en créer un nouveau client etcd.

import (
    "go.etcd.io/etcd/clientv3"
)

client, err := clientv3.New(clientv3.Config{
    Endpoints:   []string{"localhost:2379"},
    DialTimeout: 5 * time.Second,
})
if err != nil {
    panic(err)
}
Copier après la connexion

Le code ci-dessus créera un client ETCD nommé client, qui utilisera localhost:2379 comme adresse du serveur ETCD.

2. Intégrer Redis

Pour utiliser Redis, nous devons ajouter les informations suivantes au fichier de configuration :

[redis]
host = "localhost:6379"
password = ""
db = 0
Copier après la connexion

Ensuite, dans le code où vous souhaitez utiliser Redis, utilisez la fonction redis.NewClient pour créer un nouveau Redis. client.

import (
    "github.com/go-redis/redis"
)

client := redis.NewClient(&redis.Options{
    Addr:     "localhost:6379",
    Password: "", // no password set
    DB:       0,  // use default DB
})
Copier après la connexion

Le code ci-dessus créera un nouveau client Redis, qui utilisera localhost:6379 comme adresse du serveur Redis, pas de mot de passe et utilisera la base de données par défaut.

3. Intégrez ZooKeeper

要使用ZooKeeper,我们需要在配置文件中添加以下信息:

[zookeeper]
host = "localhost:2181"
Copier après la connexion

然后,在要使用ZooKeeper的代码中,使用zk.Connect函数创建一个新的ZooKeeper客户端。

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

conn, _, err := zk.Connect([]string{"localhost:2181"}, time.Second*5)
if err != nil {
    panic(err)
}
Copier après la connexion

上述代码将创建一个名为conn的ZooKeeper客户端,它将使用localhost:2181作为ZooKeeper服务器的地址。

五、总结

到目前为止,我们已经深入了解了go-zero框架,并学到了如何使用它来构建高性能服务。

总结一下,要使用go-zero,请先安装和配置相关环境,然后创建一个新的项目,通过goctl命令行工具自动生成模板代码和配置文件。

接着,可以使用go-zero提供的各种功能和服务来逐步完善和扩展我们的应用程序,如集成数据库、ETCD、Redis等。

将go-zero框架用于您的下一个项目吧,它将使您能够构建出更加灵活、高效和可靠的服务!

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)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

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)

Générez du PPT en un seul clic ! Kimi : Que les « travailleurs migrants PPT » deviennent d'abord populaires Générez du PPT en un seul clic ! Kimi : Que les « travailleurs migrants PPT » deviennent d'abord populaires Aug 01, 2024 pm 03:28 PM

Kimi : En une seule phrase, un PPT est prêt en seulement dix secondes. PPT est tellement ennuyeux ! Pour tenir une réunion, vous devez avoir un PPT ; pour rédiger un rapport hebdomadaire, vous devez avoir un PPT ; pour solliciter des investissements, vous devez présenter un PPT ; même pour accuser quelqu'un de tricherie, vous devez envoyer un PPT ; L'université ressemble plus à une spécialisation PPT. Vous regardez le PPT en classe et faites le PPT après les cours. Peut-être que lorsque Dennis Austin a inventé le PPT il y a 37 ans, il ne s'attendait pas à ce qu'un jour le PPT devienne aussi répandu. Parler de notre dure expérience de création de PPT nous fait monter les larmes aux yeux. "Il m'a fallu trois mois pour réaliser un PPT de plus de 20 pages, et je l'ai révisé des dizaines de fois. J'avais envie de vomir quand j'ai vu le PPT." "À mon apogée, je faisais cinq PPT par jour, et même ma respiration." était PPT." Si vous avez une réunion impromptue, vous devriez le faire

Tous les prix CVPR 2024 annoncés ! Près de 10 000 personnes ont assisté à la conférence hors ligne et un chercheur chinois de Google a remporté le prix du meilleur article. Tous les prix CVPR 2024 annoncés ! Près de 10 000 personnes ont assisté à la conférence hors ligne et un chercheur chinois de Google a remporté le prix du meilleur article. Jun 20, 2024 pm 05:43 PM

Tôt le matin du 20 juin, heure de Pékin, CVPR2024, la plus grande conférence internationale sur la vision par ordinateur qui s'est tenue à Seattle, a officiellement annoncé le meilleur article et d'autres récompenses. Cette année, un total de 10 articles ont remporté des prix, dont 2 meilleurs articles et 2 meilleurs articles étudiants. De plus, il y a eu 2 nominations pour les meilleurs articles et 4 nominations pour les meilleurs articles étudiants. La conférence la plus importante dans le domaine de la vision par ordinateur (CV) est la CVPR, qui attire chaque année un grand nombre d'instituts de recherche et d'universités. Selon les statistiques, un total de 11 532 articles ont été soumis cette année, dont 2 719 ont été acceptés, avec un taux d'acceptation de 23,6 %. Selon l'analyse statistique des données CVPR2024 du Georgia Institute of Technology, du point de vue des sujets de recherche, le plus grand nombre d'articles est la synthèse et la génération d'images et de vidéos (Imageandvideosyn

Du bare metal au grand modèle avec 70 milliards de paramètres, voici un tutoriel et des scripts prêts à l'emploi Du bare metal au grand modèle avec 70 milliards de paramètres, voici un tutoriel et des scripts prêts à l'emploi Jul 24, 2024 pm 08:13 PM

Nous savons que le LLM est formé sur des clusters informatiques à grande échelle utilisant des données massives. Ce site a présenté de nombreuses méthodes et technologies utilisées pour aider et améliorer le processus de formation LLM. Aujourd'hui, ce que nous souhaitons partager est un article qui approfondit la technologie sous-jacente et présente comment transformer un ensemble de « bare metals » sans même un système d'exploitation en un cluster informatique pour la formation LLM. Cet article provient d'Imbue, une startup d'IA qui s'efforce d'atteindre une intelligence générale en comprenant comment les machines pensent. Bien sûr, transformer un tas de « bare metal » sans système d'exploitation en un cluster informatique pour la formation LLM n'est pas un processus facile, plein d'exploration et d'essais et d'erreurs, mais Imbue a finalement réussi à former un LLM avec 70 milliards de paramètres et dans. le processus s'accumule

L'IA utilisée | L'IA a créé un vlog sur la vie d'une fille vivant seule, qui a reçu des dizaines de milliers de likes en 3 jours L'IA utilisée | L'IA a créé un vlog sur la vie d'une fille vivant seule, qui a reçu des dizaines de milliers de likes en 3 jours Aug 07, 2024 pm 10:53 PM

Rédacteur du Machine Power Report : Yang Wen La vague d’intelligence artificielle représentée par les grands modèles et l’AIGC a discrètement changé notre façon de vivre et de travailler, mais la plupart des gens ne savent toujours pas comment l’utiliser. C'est pourquoi nous avons lancé la rubrique « AI in Use » pour présenter en détail comment utiliser l'IA à travers des cas d'utilisation de l'intelligence artificielle intuitifs, intéressants et concis et stimuler la réflexion de chacun. Nous invitons également les lecteurs à soumettre des cas d'utilisation innovants et pratiques. Lien vidéo : https://mp.weixin.qq.com/s/2hX_i7li3RqdE4u016yGhQ Récemment, le vlog de la vie d'une fille vivant seule est devenu populaire sur Xiaohongshu. Une animation de style illustration, associée à quelques mots de guérison, peut être facilement récupérée en quelques jours seulement.

Compte à rebours des 12 points faibles de RAG, l'architecte senior de NVIDIA enseigne les solutions Compte à rebours des 12 points faibles de RAG, l'architecte senior de NVIDIA enseigne les solutions Jul 11, 2024 pm 01:53 PM

La génération augmentée par récupération (RAG) est une technique qui utilise la récupération pour améliorer les modèles de langage. Plus précisément, avant qu'un modèle de langage ne génère une réponse, il récupère les informations pertinentes à partir d'une vaste base de données de documents, puis utilise ces informations pour guider le processus de génération. Cette technologie peut considérablement améliorer l'exactitude et la pertinence du contenu, atténuer efficacement le problème des hallucinations, augmenter la vitesse de mise à jour des connaissances et améliorer la traçabilité de la génération de contenu. RAG est sans aucun doute l’un des domaines de recherche les plus passionnants en matière d’intelligence artificielle. Pour plus de détails sur RAG, veuillez vous référer à l'article de la rubrique de ce site "Quelles sont les nouveautés de RAG, spécialisée dans le rattrapage des défauts des grands modèles ?" Cette revue l'explique clairement. Mais RAG n'est pas parfait et les utilisateurs rencontrent souvent des « problèmes » lorsqu'ils l'utilisent. Récemment, la solution avancée d'IA générative de NVIDIA

Comment évaluer la rentabilité du support commercial des frameworks Java Comment évaluer la rentabilité du support commercial des frameworks Java Jun 05, 2024 pm 05:25 PM

L'évaluation du rapport coût/performance du support commercial pour un framework Java implique les étapes suivantes : Déterminer le niveau d'assurance requis et les garanties de l'accord de niveau de service (SLA). L’expérience et l’expertise de l’équipe d’appui à la recherche. Envisagez des services supplémentaires tels que les mises à niveau, le dépannage et l'optimisation des performances. Évaluez les coûts de support commercial par rapport à l’atténuation des risques et à une efficacité accrue.

Kuaishou Keling AI est entièrement ouvert aux tests internes à l'échelle mondiale et l'effet du modèle a de nouveau été mis à niveau. Kuaishou Keling AI est entièrement ouvert aux tests internes à l'échelle mondiale et l'effet du modèle a de nouveau été mis à niveau. Jul 24, 2024 pm 08:34 PM

Le 24 juillet, Keling AI, grand modèle de génération vidéo Kuaishou, a annoncé que le modèle de base avait de nouveau été mis à niveau et était entièrement ouvert aux tests internes. Kuaishou a déclaré que afin de permettre à davantage d'utilisateurs d'utiliser Keling AI et de mieux répondre aux différents niveaux d'utilisation des créateurs, il lancera désormais également officiellement un système d'adhésion pour différentes catégories de créateurs, sur la base de tests internes entièrement ouverts. membres. Fournir des services fonctionnels exclusifs correspondants. Dans le même temps, le modèle de base de Keling AI a également été à nouveau mis à niveau pour améliorer encore l'expérience utilisateur. L'effet de modèle de base a été mis à niveau pour améliorer encore l'expérience utilisateur. Depuis sa sortie il y a plus d'un mois, Keling AI a été mis à niveau et itéré à plusieurs reprises. Avec le lancement de ce système d'adhésion, l'effet de modèle de base de Keling AI a été amélioré. à nouveau subi une transformation. La première est que la qualité de l'image a été considérablement améliorée et les effets visuels générés grâce au modèle de base amélioré.

Comment les options légères des frameworks PHP affectent-elles les performances des applications ? Comment les options légères des frameworks PHP affectent-elles les performances des applications ? Jun 06, 2024 am 10:53 AM

Le framework PHP léger améliore les performances des applications grâce à une petite taille et une faible consommation de ressources. Ses fonctionnalités incluent : une petite taille, un démarrage rapide, une faible utilisation de la mémoire, une vitesse de réponse et un débit améliorés et une consommation de ressources réduite. Cas pratique : SlimFramework crée une API REST, seulement 500 Ko, une réactivité élevée et un débit élevé.

See all articles