首頁  >  文章  >  後端開發  >  Go:具有共享程式碼的微服務的儲存庫佈局

Go:具有共享程式碼的微服務的儲存庫佈局

王林
王林轉載
2024-02-09 09:33:28792瀏覽

Go:具有共享程式碼的微服務的儲存庫佈局

Go是一種強大的程式語言,近年來在微服務架構中越來越受歡迎。它的簡潔性、高效性和並發性使其成為建立高效能應用程式的理想選擇。在使用Go建構微服務時,儲存庫的佈局是一個重要的考慮因素。在本文中,php小編香蕉將介紹一種具有共享程式碼的微服務儲存庫佈局,幫助您更好地組織和管理程式碼。

問題內容

我們最近開始使用 go 來開發新的微服務。每個微服務都是一個 go 模組,我們將它們作為單一儲存庫來管理:

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

這工作正常,但現在我們需要在 s1s2 之間共享一些程式碼 - 兩個服務使用的一些結構、上傳到 s3 的函數等。

處理這種情況的正確方法是什麼?理想情況下,我在儲存庫根目錄中有一個common 目錄(services 的同級目錄)並將公共程式碼放在那裡- 但是在編譯s1s2 時,go 將如何從那裡取得程式碼?

解決方法

我認為你所問的實際上只是「如何建立 go 應用程式以產生多個二進位檔案?」。

您可以將 go.mod 移至頂層目錄重新命名,以便您擁有以下佈局:

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

還有一個 go.mod ,其開頭類似:

module mymodule

如果 common/common.go 看起來像這樣:

package common

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

然後在services/s1/main.go中,可以導入common模組:

package main

import (
        "mymodule/common"
        "fmt"
)

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

您將像這樣建構 s1 服務:

go build ./services/s1

建置 s2 類似:

go build ./services/s2

您通常會有一個頂級 makefile 來自動建置多個服務。

以上是Go:具有共享程式碼的微服務的儲存庫佈局的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除