Heim  >  Artikel  >  Backend-Entwicklung  >  Go: Repository-Layout für Microservices mit gemeinsam genutztem Code

Go: Repository-Layout für Microservices mit gemeinsam genutztem Code

王林
王林nach vorne
2024-02-09 09:33:28792Durchsuche

Go: Repository-Layout für Microservices mit gemeinsam genutztem Code

Go ist eine leistungsstarke Programmiersprache, die in den letzten Jahren in der Microservice-Architektur immer beliebter geworden ist. Aufgrund seiner Einfachheit, Effizienz und Parallelität eignet es sich ideal für die Erstellung leistungsstarker Anwendungen. Beim Erstellen von Microservices mit Go ist das Layout des Repositorys ein wichtiger Gesichtspunkt. In diesem Artikel stellt der PHP-Editor Banana ein Microservice-Repository-Layout mit gemeinsam genutztem Code vor, um Ihnen bei der besseren Organisation und Verwaltung Ihres Codes zu helfen.

Frageninhalt

Wir haben vor kurzem damit begonnen, Go für die Entwicklung neuer Microservices zu verwenden. Jeder Microservice ist ein Go-Modul und wir verwalten sie als ein einziges Repository:

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

Das funktioniert gut, aber jetzt müssen wir etwas Code zwischen s1s2 teilen – einige Strukturen, die von beiden Diensten verwendet werden, auf s3 hochgeladene Funktionen usw.

Wie geht man mit dieser Situation richtig um? Idealerweise hätte ich ein common-Verzeichnis (ein Geschwisterverzeichnis von services) im Repository-Stammverzeichnis und würde dort den gemeinsamen Code ablegen – aber beim Kompilieren common 目录(services 的同级目录)并将公共代码放在那里 - 但是在编译 s1s2 Wie bekomme ich den Code her? Dort?

Problemumgehung

Ich denke, was Sie fragen, ist eigentlich nur „Wie erstellt man eine Go-Anwendung, um mehrere Binärdateien zu generieren? “.

Sie können go.mod in das Verzeichnis der obersten Ebene verschieben und umbenennen, sodass Sie das folgende Layout haben:

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

Es gibt auch ein go.mod, das wie folgt beginnt:

module mymodule

Wenn common/common.go so aussieht:

package common

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

Dann im services/s1/main.go中,可以导入common-Modul:

package main

import (
        "mymodule/common"
        "fmt"
)

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

Sie werden den s1-Dienst wie folgt aufbauen:

go build ./services/s1

Build s2 Ähnlich wie:

go build ./services/s2

Normalerweise verfügen Sie über eine oberste Ebene makefile, um automatisch mehrere Dienste zu erstellen.

Das obige ist der detaillierte Inhalt vonGo: Repository-Layout für Microservices mit gemeinsam genutztem Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen