Rumah >pembangunan bahagian belakang >Golang >Bolehkah saya Mengakses Berbilang Perkhidmatan gRPC melalui Sambungan Tunggal?

Bolehkah saya Mengakses Berbilang Perkhidmatan gRPC melalui Sambungan Tunggal?

Patricia Arquette
Patricia Arquetteasal
2024-11-04 03:36:02842semak imbas

Can I Access Multiple gRPC Services over a Single Connection?

Mengakses Berbilang Perkhidmatan gRPC melalui Sambungan Tunggal

Dalam senario di mana berbilang perkhidmatan gRPC berada pada pelayan yang sama mendengar pada alamat yang dikongsi, seperti dalam contoh yang disediakan, ia mungkin kelihatan berlebihan untuk mewujudkan sambungan berasingan kepada setiap perkhidmatan. Artikel ini bertujuan untuk menangani sebab sambungan berbeza biasanya diperlukan dan meneroka cara menggunakan sambungan tunggal untuk mengakses berbilang perkhidmatan gRPC.

Menghapuskan Keperluan untuk Pelbagai Sambungan

Untuk mengakses pelbagai perkhidmatan gRPC yang dihoskan dengan berkesan pada pelayan yang sama, anda boleh memanfaatkan sambungan klien gRPC tunggal. Pendekatan ini melibatkan pemulaan objek grpc.ClientConn dan menyerahkannya kepada kilang pelanggan perkhidmatan individu, membolehkan mereka berkongsi sambungan asas yang sama.

func main() {
    cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure())
    if err != nil {
        log.Fatal(err)
    }
    c1 := pb.NewSubscriberServiceClient(cc)
    c2 := pb.NewDropperServiceClient(cc)
}

Menggunakan Semula Kod Dijana daripada Protobuf

Kod gRPC yang dijana yang disediakan dalam fail pb.go merangkumi semua fungsi yang diperlukan untuk melaksanakan RPC. Oleh itu, tidak ada keperluan untuk pelaksanaan sisi klien tambahan, melainkan logik khusus perlu dilaksanakan secara automatik semasa setiap panggilan.

Menggunakan Antara Muka untuk Kemudahan (Pilihan)

Untuk kes di mana perkhidmatan mempunyai ciri yang berbeza nama kaedah, anda boleh menggabungkannya ke dalam satu struct untuk kemudahan tambahan.

type SubscriberDropper struct {
    pb.SubscriberServiceClient
    pb.DropperServiceClient
}

func main() {
    // ... as above ...
    sd := &SubscriberDropper{c1, c2}
}

Dengan menggunakan pendekatan ini, anda boleh menghapuskan penubuhan sambungan yang berlebihan, menghasilkan pelaksanaan sisi klien yang lebih cekap dan dioptimumkan untuk gRPC anda aplikasi.

Atas ialah kandungan terperinci Bolehkah saya Mengakses Berbilang Perkhidmatan gRPC melalui Sambungan Tunggal?. 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