gRPC ialah rangka kerja panggilan prosedur jauh (RPC) yang popular untuk membina sistem teragih. Apabila mengakses berbilang perkhidmatan gRPC, tergoda untuk mewujudkan sambungan soket untuk setiap perkhidmatan. Walau bagaimanapun, pendekatan ini boleh membawa kepada penggunaan sumber yang tidak cekap.
Untuk menangani perkara ini, gRPC membenarkan anda memultiplekskan berbilang perkhidmatan melalui satu sambungan. Ini不仅 boleh meningkatkan kecekapan, tetapi turut memudahkan kod anda.
Mendail Soket Tunggal
Untuk mewujudkan sambungan dengan berbilang perkhidmatan, cipta satu objek gRPC.ClientConn dan serahkannya kepada fungsi New*Client() untuk setiap perkhidmatan. Fungsi ini akan berkongsi sambungan yang sama, membolehkan anda mengakses semua perkhidmatan melalui soket tunggal.
<code class="go">// ... grpc service server implementation ... func main() { cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure()) if err != nil { log.Fatal(err) } c1 := pb.NewSubscriberServiceClient(cc) c2 := pb.NewDropperServiceClient(cc) // ... }</code>
Mengelakkan Penduaan Kod
Daripada mencipta struct berasingan untuk setiap perkhidmatan, anda boleh menggunakan satu struct yang melaksanakan antara muka klien untuk kedua-dua perkhidmatan. Teknik ini mengurangkan pertindihan kod dan memudahkan kod anda.
<code class="go">// ... grpc service server implementation ... type SubscriberDropper struct { pb.SubscriberServiceClient pb.DropperServiceClient } func main() { // ... as above ... sd := &SubscriberDropper{c1, c2} // ... }</code>
Dengan memanfaatkan keupayaan untuk memultiplekskan perkhidmatan melalui satu sambungan, anda boleh memudahkan kod anda, meningkatkan kecekapan dan mengurangkan overhed sumber.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Berbilang Perkhidmatan gRPC Melalui Sambungan Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!