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

王林
Freigeben: 2024-02-09 09:33:28
nach vorne
795 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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

module mymodule
Nach dem Login kopieren

Wenn common/common.go so aussieht:

package common

func commonfunction() string {
    return "this is a common function"
}
Nach dem Login kopieren

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

package main

import (
        "mymodule/common"
        "fmt"
)

func main() {
        res := common.commonfunction()
        fmt.println(res)
}
Nach dem Login kopieren

Sie werden den s1-Dienst wie folgt aufbauen:

go build ./services/s1
Nach dem Login kopieren

Build s2 Ähnlich wie:

go build ./services/s2
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!