Bagaimana untuk menggunakan GRPC dalam Go?

王林
Lepaskan: 2023-05-10 14:03:06
ke hadapan
2520 orang telah melayarinya

Dengan pembangunan berterusan aplikasi moden, permintaan untuk prestasi tinggi dan skalabiliti juga semakin tinggi dan lebih tinggi Oleh itu, terdapat seni bina yang diedarkan berdasarkan protokol RPC untuk memenuhi keperluan ini. GRPC ialah rangka kerja sumber terbuka berdasarkan StuB dalaman Google. GRPC menyediakan mekanisme yang sangat berskala untuk komunikasi merentas bahasa pengaturcaraan, yang direka untuk mengurus komunikasi piawai antara aplikasi dengan cekap.

Artikel ini akan memperkenalkan cara menggunakan GRPC dalam Go Kami akan merangkumi konsep GRPC, langkah-langkah untuk berkomunikasi menggunakan GRPC dan contoh pelaksanaan perkhidmatan GRPC yang mudah dalam Go.

Konsep GRPC

GRPC ialah rangka kerja RPC berdasarkan HTTP/2, menggunakan protobuf sebagai kaedah siri data lalai. Ini bermakna ia boleh dengan mudah membolehkan komunikasi antara bahasa yang berbeza (memanfaatkan kod yang dijana dan perisian tengah yang disediakan oleh grpc).

Keterluasan: GRPC boleh melaksanakan pengesahan dan logik kebenaran yang ringkas dan kompleks pada aliran kod dan lapisan sambungan, serta boleh bekerjasama dengan platform pengkomputeran moden seperti Kubernetes.

Berkomunikasi menggunakan GRPC

Dalam bahagian ini, kami akan memperkenalkan langkah terperinci untuk berkomunikasi menggunakan GRPC. Dalam artikel ini, kami akan melaksanakan perkhidmatan GRPC mudah menggunakan bahasa Go.

Langkah 1: Tentukan fail protobuf

Mula-mula, kami perlu mentakrifkan fail protobuf kami untuk mengisytiharkan antara muka kami. Dalam contoh ini, kami mentakrifkan perkhidmatan mudah yang menambah dua nombor. Berikut ialah kandungan fail .proto kami:

syntax = "proto3";

option go_package = ".;main";

package calculator;

message AddRequest {
    int32 x = 1;
    int32 y = 2;
}

message AddResponse {
    int32 result = 1;
}

service Calculator {
    rpc Add(AddRequest) returns (AddResponse);
}
Salin selepas log masuk

Dalam fail protobuf ini, kami mentakrifkan dua mesej, AddRequest dan AddResponse dan Kalkulator antara muka perkhidmatan, yang menyediakan kaedah Tambah yang menerima Ambil dua nombor sebagai argumen dan mengembalikan jumlah mereka.

Langkah 2: Jana kod GO

Seterusnya, kita perlu menggunakan alat protok untuk menjana kod GO. Kami boleh menjana kod dengan cara berikut:

protoc --go_out=plugins=grpc:. *.proto
Salin selepas log masuk
Salin selepas log masuk

Perintah ini akan menjana fail calculator.pb.go, yang mengandungi kod GO untuk perkhidmatan dan mesej yang kami tentukan.

Langkah 3: Laksanakan bahagian pelayan

Di bahagian pelayan, kami perlu melaksanakan perkhidmatan untuk antara muka yang kami tetapkan. Dalam kes kami, perkhidmatan kami hanyalah perkhidmatan penambahan mudah yang menambah dua nombor dan mengembalikan jumlahnya. Berikut ialah kod pelayan kami:

package main

import (
    "context"
    "net"
    "google.golang.org/grpc"
    pb "github.com/calculator"
)

type server struct{}

func (s *server) Add(ctx context.Context, req *pb.AddRequest) (*pb.AddResponse, error) {
    result := req.X + req.Y
    return &pb.AddResponse{Result:result}, nil
}

func main() {
    l, err := net.Listen("tcp", ":8080")
    if err != nil {
        panic(err)
    }
    s := grpc.NewServer()

    pb.RegisterCalculatorServer(s, &server{})

    err = s.Serve(l)
    if err != nil {
        panic(err)
    }
}
Salin selepas log masuk

Kami mula-mula mentakrifkan struktur bernama "pelayan" dan menambah kaedah Tambah padanya. Kaedah ini akan menerima dua nombor x dan y, mengira jumlahnya, dan mengembalikan AddResponse sebagai objek tindak balas.

Kami juga mentakrifkan fungsi utama di mana kami mencipta perkhidmatan grpc baharu dan mengikatnya pada alamat setempat port 8080. Kami juga menyuntik perkhidmatan yang kami tentukan ke dalam pelayan grpc dan memulakan pelayan grpc.

Langkah 4: Laksanakan klien

Akhir sekali, kami perlu menulis kod klien yang boleh menghantar permintaan ke pelayan kami dan menerima respons. Sila ambil perhatian bahawa fail .proto dalam kod sisi klien dan pelayan mesti sepadan. Di bawah ialah kod pelanggan kami:

package main

import (
    "context"
    "fmt"
    "google.golang.org/grpc"
    pb "github.com/calculator"
)

func main() {
    conn, err := grpc.Dial(":8080", grpc.WithInsecure())
    if err != nil {
        panic(err)
    }

    client := pb.NewCalculatorClient(conn)

    req := pb.AddRequest{X:2, Y:3}
    resp, err := client.Add(context.Background(), &req)
    if err != nil {
        panic(err)
    }

    fmt.Printf("Result: %d", resp.Result)
}
Salin selepas log masuk

Dalam kod pelanggan ini, kami mula-mula membuat sambungan ke pelayan GRPC dan kemudian menggunakan sambungan ini untuk mencipta pelanggan baharu. Seterusnya, kami membuat AddRequest, menetapkan nilainya kepada 2 dan 3, dan menghantar permintaan ke pelayan. Akhirnya, kami menerima dan mencetak respons pelayan.

Cara menjalankan kod sampel

Untuk menjalankan kod sampel kami, kami perlu menyediakan persekitaran pembangunan Go terlebih dahulu dan memasang kebergantungan yang berkaitan. Katakan pakej kod kami dinamakan utama. Untuk menjalankan kod contoh kami secara tempatan, anda perlu terlebih dahulu melaksanakan arahan berikut:

go get -u google.golang.org/grpc
go get -u github.com/golang/protobuf/protoc-gen-go
Salin selepas log masuk

Seterusnya jalankan arahan protoc untuk menjana kod go:

protoc --go_out=plugins=grpc:. *.proto
Salin selepas log masuk
Salin selepas log masuk

Kemudian susun kod perkhidmatan dan klien kami, dan susun mereka masing-masing Mulakan mereka:

go build server.go
go build client.go
./server
./client
Salin selepas log masuk

Jika semuanya berjalan lancar, pelanggan akan menghantar permintaan tambahan kepada pelayan GRPC dan memaparkan hasilnya sebagai 5.

Kesimpulan

Artikel ini memperkenalkan cara menggunakan GRPC dalam bahasa Go. Kami mula-mula membincangkan konsep GRPC, dan kemudian menunjukkan cara menggunakan protobuf untuk menentukan spesifikasi antara muka, cara menjana kod GO dan cara melaksanakan perkhidmatan GRPC yang mudah. Dengan menggunakan langkah ini, anda boleh mula menggunakan GRPC dalam Go untuk melaksanakan sistem teragih berprestasi tinggi dan berskala.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan GRPC dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!