Bagaimana untuk menggunakan GRPC dalam Go?
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); }
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
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) } }
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) }
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
Seterusnya jalankan arahan protoc untuk menjana kod go:
protoc --go_out=plugins=grpc:. *.proto
Kemudian susun kod perkhidmatan dan klien kami, dan susun mereka masing-masing Mulakan mereka:
go build server.go go build client.go ./server ./client
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



MetaMask (juga dipanggil Little Fox Wallet dalam bahasa Cina) ialah perisian dompet penyulitan percuma dan diterima baik. Pada masa ini, BTCC menyokong pengikatan pada dompet MetaMask Selepas mengikat, anda boleh menggunakan dompet MetaMask untuk log masuk dengan cepat, menyimpan nilai, membeli syiling, dsb., dan anda juga boleh mendapatkan bonus percubaan 20 USDT untuk pengikatan pertama. Dalam tutorial dompet BTCCMetaMask, kami akan memperkenalkan secara terperinci cara mendaftar dan menggunakan MetaMask, dan cara mengikat dan menggunakan dompet Little Fox dalam BTCC. Apakah dompet MetaMask? Dengan lebih 30 juta pengguna, MetaMask Little Fox Wallet ialah salah satu dompet mata wang kripto yang paling popular hari ini. Ia percuma untuk digunakan dan boleh dipasang pada rangkaian sebagai sambungan

Bagaimana untuk melaksanakan muat naik fail menggunakan gRPC? Buat definisi perkhidmatan sokongan, termasuk permintaan dan mesej respons. Pada klien, fail yang hendak dimuat naik dibuka dan dibahagikan kepada beberapa bahagian, kemudian distrim ke pelayan melalui aliran gRPC. Di bahagian pelayan, ketulan fail diterima dan disimpan ke dalam fail. Pelayan menghantar respons selepas muat naik fail selesai untuk menunjukkan sama ada muat naik berjaya.

Dalam Go, mesej WebSocket boleh dihantar menggunakan pakej gorila/soket web. Langkah khusus: Wujudkan sambungan WebSocket. Hantar mesej teks: Panggil WriteMessage(websocket.TextMessage,[]bait("Mesej")). Hantar mesej binari: panggil WriteMessage(websocket.BinaryMessage,[]bait{1,2,3}).

Dalam Go, anda boleh menggunakan ungkapan biasa untuk memadankan cap masa: susun rentetan ungkapan biasa, seperti yang digunakan untuk memadankan cap masa ISO8601: ^\d{4}-\d{2}-\d{2}T \d{ 2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ . Gunakan fungsi regexp.MatchString untuk menyemak sama ada rentetan sepadan dengan ungkapan biasa.

Bahasa Go dan Go adalah entiti yang berbeza dengan ciri yang berbeza. Go (juga dikenali sebagai Golang) terkenal dengan kesesuaiannya, kelajuan penyusunan pantas, pengurusan memori dan kelebihan merentas platform. Kelemahan bahasa Go termasuk ekosistem yang kurang kaya berbanding bahasa lain, sintaks yang lebih ketat dan kekurangan penaipan dinamik.

Kebocoran memori boleh menyebabkan memori program Go terus meningkat dengan: menutup sumber yang tidak lagi digunakan, seperti fail, sambungan rangkaian dan sambungan pangkalan data. Gunakan rujukan yang lemah untuk mengelakkan kebocoran memori dan objek sasaran untuk pengumpulan sampah apabila ia tidak lagi dirujuk dengan kuat. Menggunakan go coroutine, memori tindanan coroutine akan dikeluarkan secara automatik apabila keluar untuk mengelakkan kebocoran memori.

BitgetLaunchpool ialah platform dinamik yang direka untuk semua peminat mata wang kripto. BitgetLaunchpool menonjol dengan produknya yang unik. Di sini, anda boleh mempertaruhkan token anda untuk membuka kunci lebih banyak ganjaran, termasuk airdrop, ganjaran yang tinggi dan kumpulan hadiah yang murah eksklusif untuk peserta awal. Apakah BitgetLaunchpool? BitgetLaunchpool ialah platform mata wang kripto di mana token boleh dipertaruhkan dan diperoleh dengan terma dan syarat yang mesra pengguna. Dengan melabur BGB atau token lain dalam Launchpool, pengguna berpeluang menerima airdrop percuma, pendapatan dan mengambil bahagian dalam kumpulan bonus yang murah hati. Pendapatan daripada aset yang dicagarkan dikira dalam masa T+1 jam dan ganjaran adalah berdasarkan

Unit menguji fungsi serentak adalah penting kerana ini membantu memastikan kelakuan mereka yang betul dalam persekitaran serentak. Prinsip asas seperti pengecualian bersama, penyegerakan dan pengasingan mesti dipertimbangkan semasa menguji fungsi serentak. Fungsi serentak boleh diuji unit dengan mensimulasikan, menguji keadaan perlumbaan dan mengesahkan keputusan.
