Table des matières
Qu'est-ce qu'une passerelle API
Cadre go-zero
go-zero construit une passerelle API
Étape 1 : Définir l'interface
Étape 2 : Écrire des microservices
第三步:配置API网关
Maison développement back-end Golang Créez une passerelle API de microservices efficace basée sur le go-zero

Créez une passerelle API de microservices efficace basée sur le go-zero

Jun 23, 2023 am 10:13 AM
微服务 api网关 go-zero

Ces dernières années, l'application de l'architecture de microservices est devenue de plus en plus répandue. Elle est centrée sur les services et divise les applications en modules fonctionnels indépendants en découplant les services, améliorant ainsi la fiabilité et l'évolutivité des applications. Cependant, dans une architecture de microservices, en raison du grand nombre de services, la communication entre les services augmente inévitablement la complexité. À ce stade, la passerelle API devient un composant essentiel. Dans cet article, nous présenterons la méthode go-zero pour créer une passerelle API de microservice efficace.

Qu'est-ce qu'une passerelle API

Une passerelle API est un serveur qui gère le trafic entrant, transmet les requêtes et les réponses. C'est la couche intermédiaire entre le client et le serveur. Dans l'architecture des microservices, la passerelle API joue principalement les deux rôles suivants :

  • Fournir une interface unifiée avec le monde extérieur
  • Fournir le routage des requêtes et le proxy d'interface en interne

En tant que modèle architectural, la passerelle API présente également les caractéristiques suivantes :

  • Responsable de l'acheminement des demandes externes entrantes vers les services internes
  • Routage, filtrage et transformation des demandes selon différentes conditions
  • Fournir des services tels que l'authentification, la sécurité et la limitation de courant

Cadre go-zero

go-zero est un framework web et rpc pour l'architecture de microservices, dédié à fournir des capacités de traitement hautement simultanées et des interfaces de programmation simples et faciles à utiliser. Il est construit sur la bibliothèque standard Golang et peut réaliser un traitement efficace des requêtes réseau basé sur les capacités de concurrence et les avantages de gestion de la mémoire du langage Go.

Le framework go-zero fournit un framework Web, un framework RPC, un framework de microservices et une série d'outils périphériques. Le composant le plus important est le framework de microservices go-zero. Ce framework est très flexible et peut être personnalisé en fonction des besoins spécifiques de l'entreprise. Il présente également les avantages suivants :

  • Hautes performances : basé sur les fonctionnalités de haute concurrence et de faible consommation de mémoire de Golang, go-zero implémente un traitement et des ressources réseau hautes performances. utiliser.
  • Évolutivité : go-zero prend en charge le développement en couches et peut isoler les services à forte charge en couches indépendantes pour garantir la stabilité et l'évolutivité.
  • Haute fiabilité : go-zero utilise des méthodes de test complètes pour garantir l'exactitude des fonctions du système et intègre des conceptions à haute disponibilité telles que les nouvelles tentatives, les fusibles et la limitation de courant pour améliorer la fiabilité du système.
  • Chaîne d'outils riche : go-zero fournit de nombreux outils pour nous aider à développer et déployer rapidement des services.

go-zero construit une passerelle API

Ensuite, nous présenterons les étapes permettant à go-zero de créer une passerelle API :

Étape 1 : Définir l'interface

Nous devons d'abord définir certaines interfaces API, en supposant que nous avons défini trois interfaces :

GET /api/user/{id}
POST /api/user
DELETE /api/user/{id}
Copier après la connexion

Étape 2 : Écrire des microservices

Ensuite, nous devons écrire des microservices qui gèrent ces interfaces. En go-zero, les microservices peuvent être implémentés en définissant des Handlers. Ces Handlers peuvent être automatiquement générés par le framework et intégrés au service pour être appelés par la passerelle API. Handlers来实现,这些Handlers可以被框架自动生成,并集成到服务中提供给API网关调用。

示例代码如下:

package service

import "github.com/tal-tech/go-zero/rest"

type Request struct {
    Id int `json:"id"`
}
type Response struct {
    Data string `json:"data"`
}

type Service interface {
    GetUser(*Request) (*Response, error)
    AddUser(*Request) (*Response, error)
    DeleteUser(*Request) (*Response, error)
}

type UserService struct {
}

func NewUserService() *UserService {
    return &UserService{}
}

func (s *UserService) GetUser(req *Request) (*Response, error) {
    return &Response{
        Data: "get user success",
    }, nil
}

func (s *UserService) AddUser(req *Request) (*Response, error) {
    return &Response{
        Data: "add user success",
    }, nil
}

func (s *UserService) DeleteUser(req *Request) (*Response, error) {
    return &Response{
        Data: "delete user success",
    }, nil
}

func (s *UserService) HttpHandlers() []rest.Handler {
    return []rest.Handler{
        rest.Get("/api/user/:id", s.GetUser),
        rest.Post("/api/user", s.AddUser),
        rest.Delete("/api/user/:id", s.DeleteUser),
    }
}
Copier après la connexion

在上述代码中,我们定义了一个Service接口,其中包含三个方法,分别对应前面定义的三个接口。同时,我们需要实现HttpHandlers接口,该接口可以通过实现rest.Handler接口,直接将请求路由到对应的处理函数中。

第三步:配置API网关

接下来,我们需要在API网关中配置相关信息,如路由、限流策略、服务发现等。go-zero提供了一个名为goctl的工具,可以帮助我们快速创建和管理微服务和API网关。

  1. 安装goctl工具:

    goctl工具的安装非常简单,只需要通过以下命名进行安装即可:

    $ curl -sSL https://git.io/godev | bash
    Copier après la connexion
  2. 创建API网关:

    可以使用以下命令创建API网关:

    $ goctl api new gateway
    Copier après la connexion

    执行该命令后,goctl会自动生成一个API网关的代码框架。

  3. 配置路由:

    我们需要在定义api接口后,添加相关的路由配置。在go-zero中,可以使用GroupProxy进行路由配置,同时也可以使用WithJwtAuthWithCircuitBreaker等方法,进行路由过滤和控制。

    示例代码如下:

    package api
    
    import (
       "github.com/tal-tech/go-zero/rest"
       "github.com/tal-tech/go-zero/zrpc"
       "gateway/internal/service"
    )
    
    type Api struct {
       rest.RestHandler
    }
    
    func NewApi() (*Api, error) {
       userService := service.NewUserService()
       cli := zrpc.MustNewClient(zrpc.RpcClientConf{
          ServiceConf: zrpc.ServiceConf{
             Name: "gateway",
             Etcd: zrpc.EtcdConf{
                Endpoints: []string{"localhost:2379"},
                Key:       "rpc",
                Timeout:   5000,
             },
             Middleware: []zrpc.Middleware{
                zrpc.NewClientMiddleware(),
             },
          },
       })
       handler := rest.NewGroupRouter("/api").
          GET("/user/:id", rest.WithNoti(func(ctx *rest.RestContext) error {
                response, err := userService.GetUser(&service.Request{Id: ctx.Request.Params["id"]})
                if err != nil {
                   return nil
                }
                ctx.SendJson(response)
                return nil
             })).
          POST("/user", rest.WithNoti(func(ctx *rest.RestContext) error {
                response, err := userService.AddUser(&service.Request{})
                if err != nil {
                   return nil
                }
                ctx.SendJson(response)
                return nil
             })).
          DELETE("/user/:id", rest.WithNoti(func(ctx *rest.RestContext) error {
                response, err := userService.DeleteUser(&service.Request{Id: ctx.Request.Params["id"]})
                if err != nil {
                   return nil
                }
                ctx.SendJson(response)
                return nil
             })).
          Proxy(func(ctx *rest.RestContext) error {
                err := zrpc.Invoke(ctx, cli, "gateway", ctx.Request.Method, ctx.Request.URL.Path, ctx.Request.Params, &ctx.Output.Body)
                if err != nil {
                   return err
                }
                return nil
             })
       return &Api{
          RestHandler: handler,
       }, nil
    }
    Copier après la connexion

我们可以看到,在上述代码中,将api的请求路由到了userService定义的处理函数中,并使用Proxy

L'exemple de code est le suivant :

$ go run main.go -f etc/gateway-api.yaml 
Copier après la connexion
Dans le code ci-dessus, nous définissons une interface Service, qui contient trois méthodes, correspondant aux trois interfaces définies précédemment. Dans le même temps, nous devons implémenter l'interface HttpHandlers, qui peut directement acheminer les requêtes vers la fonction de traitement correspondante en implémentant l'interface rest.Handler.

Étape 3 : Configurer API Gateway

Ensuite, nous devons configurer les informations pertinentes dans API Gateway, telles que le routage, la politique de limitation actuelle, la découverte de services, etc. go-zero fournit un outil appelé goctl qui peut nous aider à créer et gérer rapidement des microservices et des passerelles API.

      Installer l'outil goctl :
    • L'installation de l'outil goctl est très simple, il suffit de l'installer en le nommant :
    • rrreee
    • Créer une passerelle API :
    • Vous pouvez utiliser la commande suivante pour créer une Passerelle API :
    rrreee

    Après avoir exécuté cette commande, goctl générera automatiquement un framework de code de passerelle API.

    🎜Configurer le routage : 🎜🎜Nous devons ajouter une configuration de routage pertinente après avoir défini l'interface api. En go-zero, vous pouvez utiliser Group et Proxy pour la configuration du routage, et vous pouvez également utiliser WithJwtAuth et WithCircuitBreaker et d'autres méthodes pour effectuer le filtrage et le contrôle des itinéraires. 🎜🎜L'exemple de code est le suivant : 🎜rrreee🎜🎜Nous pouvons voir que dans le code ci-dessus, la requête de api est acheminée vers la fonction de traitement définie par userService et utilisez <code>Proxy pour transmettre d'autres requêtes non définies au service spécifié. 🎜🎜Après avoir défini l'API, vous pouvez démarrer le service API gateway : 🎜rrreee🎜Après un démarrage réussi, vous pouvez accéder à l'interface fournie par la passerelle API. 🎜🎜Résumé🎜🎜Les étapes pour créer une passerelle API de microservices efficace basée sur le go-zero sont les suivantes : 🎜🎜🎜Définir l'interface API 🎜🎜Écrire des microservices 🎜🎜Configurer la passerelle API 🎜🎜Démarrer le service de passerelle API 🎜🎜🎜go-zero est un framework de microservices très flexible, hautes performances et évolutif. Il fournit non seulement un framework Web, un framework RPC et un framework de microservices, mais fournit également une série d'outils périphériques qui peuvent nous aider à créer rapidement des applications de microservices efficaces. 🎜🎜Grâce aux étapes ci-dessus, nous pouvons facilement créer une passerelle API de microservices efficace et puissante, fournissant ainsi une base architecturale hautement évolutive et hautes performances pour nos applications. 🎜

    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)

    Frameworks et microservices PHP : déploiement et conteneurisation cloud natifs Frameworks et microservices PHP : déploiement et conteneurisation cloud natifs Jun 04, 2024 pm 12:48 PM

    Avantages de la combinaison du framework PHP avec des microservices : Évolutivité : étendez facilement l'application, ajoutez de nouvelles fonctionnalités ou gérez plus de charge. Flexibilité : les microservices sont déployés et maintenus de manière indépendante, ce qui facilite les modifications et les mises à jour. Haute disponibilité : la défaillance d'un microservice n'affecte pas les autres parties, garantissant une disponibilité plus élevée. Cas pratique : Déployer des microservices à l'aide de Laravel et Kubernetes Étapes : Créer un projet Laravel. Définissez le contrôleur de microservice. Créez un fichier Docker. Créez un manifeste Kubernetes. Déployez des microservices. Testez les microservices.

    Comment le framework Java prend-il en charge la mise à l'échelle horizontale des microservices ? Comment le framework Java prend-il en charge la mise à l'échelle horizontale des microservices ? Jun 04, 2024 pm 04:34 PM

    Le framework Java prend en charge l'expansion horizontale des microservices. Les méthodes spécifiques incluent : Spring Cloud fournit Ribbon et Feign pour l'équilibrage de charge côté serveur et côté client. NetflixOSS fournit Eureka et Zuul pour mettre en œuvre la découverte de services, l'équilibrage de charge et le basculement. Kubernetes simplifie la mise à l'échelle horizontale avec la mise à l'échelle automatique, les vérifications de l'état et les redémarrages automatiques.

    Créez des systèmes distribués à l'aide du framework de microservices Golang Créez des systèmes distribués à l'aide du framework de microservices Golang Jun 05, 2024 pm 06:36 PM

    Créez un système distribué à l'aide du framework de microservices Golang : installez Golang, sélectionnez un framework de microservices (tel que Gin), créez un microservice Gin, ajoutez des points de terminaison pour déployer le microservice, créez et exécutez l'application, créez un microservice de commande et d'inventaire, utilisez le point final pour traiter les commandes et l'inventaire Utiliser des systèmes de messagerie tels que Kafka pour connecter des microservices Utiliser la bibliothèque sarama pour produire et consommer des informations sur les commandes

    Quel rôle Spring Boot joue-t-il dans l'architecture des microservices ? Quel rôle Spring Boot joue-t-il dans l'architecture des microservices ? Jun 04, 2024 pm 02:34 PM

    SpringBoot joue un rôle crucial dans la simplification du développement et du déploiement dans l'architecture des microservices : en fournissant une configuration automatique basée sur des annotations et en gérant les tâches de configuration courantes, telles que les connexions à la base de données. Prend en charge la vérification des contrats API via des tests de contrat, réduisant ainsi les changements destructeurs entre les services. Possède des fonctionnalités prêtes pour la production telles que la collecte de métriques, la surveillance et les contrôles de santé pour faciliter la gestion des microservices dans les environnements de production.

    Garantie de cohérence des données de l'architecture des microservices du framework Java Garantie de cohérence des données de l'architecture des microservices du framework Java Jun 02, 2024 am 10:00 AM

    La garantie de cohérence des données dans l'architecture de microservices est confrontée aux défis des transactions distribuées, de la cohérence éventuelle et des mises à jour perdues. Les stratégies comprennent : 1. Gestion distribuée des transactions, coordination des transactions interservices ; 2. Cohérence éventuelle, permettant des mises à jour indépendantes et une synchronisation via des files d'attente de messages ; 3. Contrôle de version des données, utilisant le verrouillage optimiste pour vérifier les mises à jour simultanées.

    Surveillance et alarme de l'architecture des microservices dans le framework Java Surveillance et alarme de l'architecture des microservices dans le framework Java Jun 02, 2024 pm 12:39 PM

    Surveillance et alerte de l'architecture de microservices dans le framework Java Dans une architecture de microservices, la surveillance et les alertes sont essentielles pour garantir la santé et la fiabilité du système. Cet article explique comment utiliser le framework Java pour implémenter la surveillance et l'alarme de l'architecture des microservices. Cas pratique : Utiliser SpringBoot+Prometheus+Alertmanager1 Intégrer Prometheus@ConfigurationpublicclassPrometheusConfig{@BeanpublicSpringBootMetricsCollectorspringBootMetric.

    Quels sont les défis liés à la création d'une architecture de microservices à l'aide de frameworks Java ? Quels sont les défis liés à la création d'une architecture de microservices à l'aide de frameworks Java ? Jun 02, 2024 pm 03:22 PM

    Construire une architecture de microservices à l'aide d'un framework Java implique les défis suivants : Communication interservices : choisissez un mécanisme de communication approprié tel que l'API REST, HTTP, gRPC ou une file d'attente de messages. Gestion des données distribuées : maintenez la cohérence des données et évitez les transactions distribuées. Découverte et enregistrement de services : intégrez des mécanismes tels que SpringCloudEureka ou HashiCorpConsul. Gestion de la configuration : utilisez SpringCloudConfigServer ou HashiCorpVault pour gérer les configurations de manière centralisée. Surveillance et observabilité : intégrez Prometheus et Grafana pour la surveillance des indicateurs et utilisez SpringBootActuator pour fournir des indicateurs opérationnels.

    Framework PHP et microservices : cohérence des données et gestion des transactions Framework PHP et microservices : cohérence des données et gestion des transactions Jun 02, 2024 pm 04:59 PM

    Dans l'architecture de microservices PHP, la cohérence des données et la gestion des transactions sont cruciales. Le framework PHP fournit des mécanismes pour implémenter ces exigences : utilisez des classes de transaction, telles que DB::transaction dans Laravel, pour définir les limites des transactions. Utilisez un framework ORM, tel que Doctrine, pour fournir des opérations atomiques telles que la méthode lock() afin d'éviter les erreurs de concurrence. Pour les transactions distribuées, pensez à utiliser un gestionnaire de transactions distribuées tel que Saga ou 2PC. Par exemple, les transactions sont utilisées dans des scénarios de boutique en ligne pour garantir la cohérence des données lors de l'ajout à un panier. Grâce à ces mécanismes, le framework PHP gère efficacement les transactions et la cohérence des données, améliorant ainsi la robustesse des applications.

    See all articles