Maison  >  Article  >  développement back-end  >  Go : Disposition du référentiel pour les microservices avec code partagé

Go : Disposition du référentiel pour les microservices avec code partagé

王林
王林avant
2024-02-09 09:33:28795parcourir

Go : Disposition du référentiel pour les microservices avec code partagé

Go est un langage de programmation puissant qui est devenu de plus en plus populaire dans l'architecture des microservices ces dernières années. Sa simplicité, son efficacité et sa simultanéité le rendent idéal pour créer des applications hautes performances. Lors de la création de microservices avec Go, la disposition du référentiel est une considération importante. Dans cet article, PHP Editor Banana présentera une présentation de référentiel de microservices avec du code partagé pour vous aider à mieux organiser et gérer votre code.

Contenu des questions

Nous avons récemment commencé à utiliser go pour développer de nouveaux microservices. Chaque microservice est un module go et nous les gérons comme un référentiel unique :

/
  services/
    s1/
      go.mod
      main.go
    s2/
      go.mod
      main.go

Cela fonctionne bien, mais nous devons maintenant partager du code entre s1s2 - certaines structures utilisées par les deux services, les fonctions téléchargées sur s3, etc.

Quelle est la bonne façon de gérer cette situation ? Idéalement, j'aurais un répertoire common (un frère de services) à la racine du référentiel et j'y mettrais le code commun - mais lors de la compilation common 目录(services 的同级目录)并将公共代码放在那里 - 但是在编译 s1s2, comment vais-je récupérer le code De là?

Solution de contournement

Je pense que ce que vous demandez est en réalité simplement "Comment créer une application Go pour générer plusieurs binaires ? ".

Vous pouvez déplacer go.mod vers le répertoire de niveau supérieur pour renommer afin d'obtenir la disposition suivante :

.
├── common
│   └── common.go
├── go.mod
└── services
    ├── s1
    │   └── main.go
    └── s2
        └── main.go

Il y a aussi un go.mod qui commence comme :

module mymodule

Si common/common.go ressemble à ceci :

package common

func commonfunction() string {
    return "this is a common function"
}

Puis dans le module services/s1/main.go中,可以导入common :

package main

import (
        "mymodule/common"
        "fmt"
)

func main() {
        res := common.commonfunction()
        fmt.println(res)
}

Vous construirez le service s1 comme ceci :

go build ./services/s1

Construire s2 Similaire à :

go build ./services/s2

Vous disposerez généralement d'un niveau supérieur makefile pour créer automatiquement plusieurs services.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer