Go 関数をマイクロサービス アーキテクチャに統合するには、次の手順を実行します。 独立した Go 関数を作成します。関数をバイナリにパッケージ化します。マイクロサービスの Exec یا GRPC を介してコンパイルされた関数を呼び出します。実際の場合、マイクロサービスは ProcessData 関数を使用して整数リスト内の各数値を 2 倍します。これは、myfunction バイナリ ファイルを呼び出すことで実装されます。
#Go 関数をマイクロサービス アーキテクチャに統合する
マイクロサービス アーキテクチャでは、独立した関数をサービスにシームレスに統合することが非常に重要です。 Go 言語は、関数を統合するための強力なメカニズムを提供します。この記事では、実際の例を使用してこれを行う方法を説明します。1. Golang 関数を作成する
func を使用して、入力を受け取って出力を生成するスタンドアロンの Go 関数を作成します。例:
package mypkg func ProcessData(data []int) []int { // 处理数据的函数 result := []int{} for _, v := range data { result = append(result, v*2) } return result }
2. 関数をバイナリ ファイルにパッケージ化する
go build を使用して関数をスタンドアロン バイナリ ファイルにコンパイルします。コマンド :
go build -o myfunction mypkg/myfunction.go
3. マイクロサービスでの関数の呼び出し
マイクロサービスは、次の方法でコンパイルされた関数を呼び出すことができます:a :
これには、マイクロサービス コード内で関数バイナリを直接実行することが含まれます。たとえば、Go の場合:import ( "bytes" "fmt" "os/exec" ) func main() { cmd := exec.Command("./myfunction", "1", "2", "3") var out bytes.Buffer cmd.Stdout = &out cmd.Run() fmt.Print(out.String()) }
b. GRPC の使用:
これは、gRPC 経由でリモート関数呼び出しを作成するためのより強力で効率的な方法です。net/rpc パッケージを使用して、次のように RPC サーバーとクライアントをセットアップします。
// 服务端 package main import ( "fmt" "net/rpc" ) type Args struct { A, B int } func main() { rpc.Register(new(Calc)) rpc.HandleHTTP() fmt.Print("Server listening...") err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println(err) } } // 客户端 package main import ( "net/rpc" "net/http" "log" "fmt" ) type Args struct { A, B int } func main() { client, err := rpc.DialHTTP("tcp", "localhost:8080") if err != nil { log.Fatal(err) } args := &Args{7, 8} var sum int err = client.Call("Calc.Add", args, &sum) if err != nil { log.Fatal(err) } fmt.Printf("Sum: %d", sum) }
実際のケース:
マイクロサービスがあると仮定します。 、クライアントからの整数のリストを処理し、その中の各数値を 2 で乗算するために使用されます。これを実現するには、上記のProcessData 関数を使用します。
package main import ( "fmt" "os/exec" "bytes" "strconv" ) func main() { numbers := []int{1, 2, 3} var inputStr string for _, v := range numbers { inputStr += strconv.Itoa(v) + " " } cmd := exec.Command("./myfunction", inputStr) var out bytes.Buffer cmd.Stdout = &out cmd.Run() result := out.String() fmt.Print(result) }
myfunction バイナリを呼び出します。ファイルを作成し、入力リストを 2 で乗算し、結果を返します。
以上がマイクロサービス アーキテクチャへの Golang 機能の統合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。