Kajian mendalam tentang Golang dan gRPC: membina sistem penghantaran rangkaian berkelajuan tinggi

王林
Lepaskan: 2023-07-19 20:13:55
asal
1111 orang telah melayarinya

Kajian mendalam tentang Golang dan gRPC: Membina sistem penghantaran rangkaian berkelajuan tinggi

Pengenalan:
Dengan pembangunan berterusan Internet, keperluan untuk sistem penghantaran rangkaian berkelajuan tinggi menjadi semakin mendesak. Untuk memenuhi keperluan ini, Golang dan gRPC telah menjadi pilihan pertama bagi pembangun dalam hal membangunkan aplikasi web berprestasi tinggi dan berskala tinggi. Artikel ini akan menyelidiki cara menggunakan Golang dan gRPC untuk membina sistem penghantaran rangkaian berkelajuan tinggi dan menerangkannya melalui contoh kod.

1. Pengenalan kepada Golang
Golang (biasanya dipanggil Go) ialah bahasa pengaturcaraan yang disusun secara statik yang dibangunkan oleh Google. Ia telah mendapat perhatian dan aplikasi yang meluas kerana kesederhanaan, kecekapan dan ciri keselamatannya. Go menyediakan perpustakaan standard yang kaya dan sangat mahir dalam mengendalikan tugas serentak dan pengaturcaraan rangkaian.

2. Pengenalan kepada gRPC
gRPC ialah rangka kerja panggilan prosedur jauh (RPC) berprestasi tinggi, sumber terbuka merentas bahasa yang dibangunkan dan dipromosikan oleh Google. Berbanding dengan permintaan HTTP tradisional, gRPC menggunakan Penampan Protokol (pendek kata Protobuf) sebagai format siri dan penghantaran data lalai, menyediakan penghantaran rangkaian yang lebih cekap.

3 Bina pelayan gRPC
Pertama, kita perlu memasang sokongan Go untuk gRPC. Pasang gRPC dengan melaksanakan arahan berikut:

go get -u google.golang.org/grpc
Salin selepas log masuk
Salin selepas log masuk

Seterusnya, kami mentakrifkan sampel perkhidmatan gRPC dan melaksanakannya:

package main

import (
    "context"
    "log"
    "net"

    "google.golang.org/grpc"
)

type GreeterServer struct{}

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

func main() {
    lis, err := net.Listen("tcp", ":50051")
    if err != nil {
        log.Fatalf("failed to listen: %v", err)
    }
    grpcServer := grpc.NewServer()
    RegisterGreeterServer(grpcServer, &GreeterServer{})
    if err := grpcServer.Serve(lis); err != nil {
        log.Fatalf("failed to serve: %v", err)
    }
}
Salin selepas log masuk

Dalam contoh di atas, kami mencipta struktur GreeterServer dan Melaksanakan SayHello kaedah. Kaedah ini menerima parameter HelloRequest dan mengembalikan struktur HelloResponse yang mengandungi mesej ucapan. GreeterServer 结构体,并实现了 SayHello 方法。该方法接收一个 HelloRequest 参数,并返回一个包含问候信息的 HelloResponse 结构体。

构建完 gRPC 服务端后,我们可以通过以下命令来启动它:

go run server.go
Salin selepas log masuk

四、构建 gRPC 客户端
接下来,我们需要创建一个 gRPC 客户端来调用服务端的 API。我们同样需要安装 gRPC 的 Go 支持:

go get -u google.golang.org/grpc
Salin selepas log masuk
Salin selepas log masuk

然后,我们可以编写如下的代码来创建一个 gRPC 客户端并调用服务端的接口:

package main

import (
    "context"
    "log"

    "google.golang.org/grpc"
)

func main() {
    conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure()) // 连接 gRPC 服务端
    if err != nil {
        log.Fatalf("did not connect: %v", err)
    }
    defer conn.Close()

    client := NewGreeterClient(conn) // 创建 GreeterClient
    resp, err := client.SayHello(context.Background(), &HelloRequest{Name: "Alice"}) // 调用 SayHello 方法
    if err != nil {
        log.Fatalf("could not greet: %v", err)
    }

    log.Printf("Response: %s", resp.Message)
}
Salin selepas log masuk

在上面的示例中,我们首先通过 grpc.Dial 方法与服务端建立连接,然后利用 NewGreeterClient 创建一个 GreeterClient 对象。最后,我们可以使用 GreeterClient 对象来调用服务端的 SayHello

Selepas membina pelayan gRPC, kita boleh memulakannya dengan arahan berikut:

go run client.go
Salin selepas log masuk
4. Bina klien gRPC

Seterusnya, kita perlu mencipta klien gRPC untuk memanggil API pelayan. Kami juga perlu memasang sokongan Go untuk gRPC:
rrreee

Kemudian, kita boleh menulis kod berikut untuk mencipta klien gRPC dan memanggil antara muka pelayan:

rrreee

Dalam contoh di atas, kami mula-mula menghantar grpc. Dial untuk mewujudkan sambungan dengan pelayan, dan kemudian gunakan <code>NewGreeterClient untuk mencipta objek GreeterClient. Akhir sekali, kita boleh menggunakan objek GreeterClient untuk memanggil kaedah SayHello pelayan.

Mulakan klien gRPC dengan arahan berikut: 🎜rrreee🎜 5. Kesimpulan🎜Artikel ini memperkenalkan cara menggunakan Golang dan gRPC untuk membina sistem penghantaran rangkaian berkelajuan tinggi. Kami mempelajari konsep asas Golang dan gRPC dan menunjukkan cara membina pelayan dan klien gRPC melalui contoh kod. gRPC menyediakan cara yang berkuasa dan mudah untuk membina aplikasi rangkaian berprestasi tinggi, berskala tinggi dan merupakan pilihan ideal untuk melaksanakan sistem penghantaran rangkaian berkelajuan tinggi. 🎜🎜Perlu diambil perhatian bahawa contoh kod yang disediakan dalam artikel ini hanyalah untuk ilustrasi dan tidak mengambil kira pengendalian ralat dan situasi pengecualian. Dalam aplikasi praktikal, pengendalian ralat dan pengendalian pengecualian perlu dijalankan mengikut situasi tertentu untuk memastikan kestabilan dan kebolehpercayaan sistem. 🎜🎜Saya harap artikel ini dapat membantu anda mempelajari Golang dan gRPC secara mendalam dan mengaplikasikannya pada projek sebenar. Mari terokai lebih banyak pengetahuan tentang Golang dan gRPC serta menyumbang kepada membina sistem penghantaran rangkaian berkelajuan tinggi. 🎜

Atas ialah kandungan terperinci Kajian mendalam tentang Golang dan gRPC: membina sistem penghantaran rangkaian berkelajuan tinggi. 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