Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan gRPC untuk melaksanakan pelayan dan klien asas di Golang

Cara menggunakan gRPC untuk melaksanakan pelayan dan klien asas di Golang

PHPz
PHPzasal
2023-03-31 10:26:141956semak imbas

gRPC ialah rangka kerja panggilan prosedur jauh berprestasi tinggi, sumber terbuka dan universal yang sesuai untuk panggilan RPC merentas bahasa dan platform. Ia menggunakan protokol protobuf yang dibangunkan oleh Google untuk penghantaran data, boleh merealisasikan komunikasi antara pelayan dan pelanggan dengan cepat, serta menyediakan fungsi dan kebolehskalaan yang kaya. Artikel ini akan memperkenalkan cara menggunakan gRPC untuk melaksanakan pelayan dan pelanggan asas di Golang.

1. Pasang gRPC

Sebelum kita mula, kita perlu memasang gRPC dan protobuf dahulu Anda boleh menggunakan arahan berikut:

$ go get -u google.golang.org/grpc
$ go get -u github.com/golang/protobuf/protoc-gen-go

2

Seterusnya kita perlu mencipta fail .proto, yang mentakrifkan data yang akan kami pindahkan dan kaedah yang akan kami panggil. Dalam contoh ini, kami mencipta fail yang dipanggil greet.proto.

syntax = "proto3";

package greet;

service GreetService {
  rpc SayHello (HelloRequest) returns (HelloResponse) {}
}

message HelloRequest {
  string name = 1;
}

message HelloResponse {
  string message = 1;
}

3. Jana kod

Jana kod berkaitan gRPC melalui fail protobuf. Jalankan arahan berikut:

$ protoc -I greet/ greet/greet.proto --go_out=plugins=grpc:greet

Kod yang dijana akan disimpan dalam direktori salam.

4. Laksanakan pelayan

Dalam pelaksanaan pelayan, kita perlu melaksanakan antara muka perkhidmatan yang ditakrifkan dalam fail proto. Kami boleh melengkapkan pelaksanaan kod sebelah pelayan melalui langkah berikut:

  • Buat pelayan gRPC
  • Daftar perkhidmatan
  • Jalankan pelayan

Berikut ialah pelaksanaan kod:

package main

import (
    "context"
    "log"
    "net"

    "google.golang.org/grpc"
    pb "path/to/greet"
)

type server struct {}

func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloResponse, error) {
    return &pb.HelloResponse{Message: "Hello " + in.Name}, nil
}

func main() {
    lis, err := net.Listen("tcp", ":50051")
    if err != nil {
        log.Fatalf("failed to listen: %v", err)
    }
    s := grpc.NewServer()
    pb.RegisterGreetServiceServer(s, &server{})
    if err := s.Serve(lis); err != nil {
        log.Fatalf("failed to serve: %v", err)
    }
}

5 Melaksanakan klien

Pelaksanaan klien agak mudah. Kami hanya perlu menyambung ke pelayan yang sepadan dan membuat instantiate pelanggan, dan kemudian kami boleh memanggil kaedah yang disediakan oleh pelayan. Dalam pelaksanaan kod klien, anda perlu membuat sambungan untuk komunikasi gRPC dahulu, kemudian menggunakan sambungan untuk mencipta klien dan memanggil kaedah antara muka.

Berikut ialah pelaksanaan kod klien:

package main

import (
    "log"
    "os"
    "context"
    "google.golang.org/grpc"
    pb "path/to/greet"
)

func main() {
    address := "localhost:50051"
    if len(os.Args) > 1 {
        address = os.Args[1]
    }
    conn, err := grpc.Dial(address, grpc.WithInsecure())
    if err != nil {
        log.Fatalf("couldn't connect: %v", err)
    }
    defer conn.Close()

    c := pb.NewGreetServiceClient(conn)

    name := "world"
    if len(os.Args) > 2 {
        name = os.Args[2]
    }
    r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name})
    if err != nil {
        log.Fatalf("error: %v", err)
    }
    log.Printf("Greeting: %s", r.Message)
}

6 Pengujian

Kami telah melaksanakan kod pelayan dan klien, kini jalankan pelayan dan kemudian mulakan. klien untuk diuji.

$ go run greet_server.go

Selepas menjalankan pelayan, buka terminal dan jalankan klien untuk menguji:

$ go run greet_client.go
Greeting: Hello world

7 Ringkasan

Artikel ini memperkenalkan cara menggunakan gRPC dalam Laksanakan pelayan dan klien asas di Golang. gRPC menyediakan keupayaan pengekodan dan penyahkodan yang berkuasa sambil menyokong berbilang format pengangkutan, termasuk JSON dan data penimbal protokol, menjadikannya sesuai untuk pelbagai jenis aplikasi. Contohnya, sistem teragih, aplikasi web dan permainan berskala besar, dsb. Jika anda ingin mengetahui lebih lanjut tentang gRPC, lihat dokumentasi rasmi.

Atas ialah kandungan terperinci Cara menggunakan gRPC untuk melaksanakan pelayan dan klien asas di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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