Jadual Kandungan
Kandungan soalan
Penyelesaian
Rumah pembangunan bahagian belakang Golang Bagaimanakah API dalam grpc dilaksanakan?

Bagaimanakah API dalam grpc dilaksanakan?

Feb 15, 2024 pm 04:40 PM
overflow

Bagaimanakah API dalam grpc dilaksanakan?

Dengan bantuan editor PHP Yuzai, mari kita terokai cara API dalam grpc dilaksanakan. gRPC ialah rangka kerja panggilan prosedur jauh (RPC) sumber terbuka berprestasi tinggi yang menggunakan Penampan Protokol Google sebagai bahasa penerangan antara muka dan menyokong berbilang bahasa pengaturcaraan. Mekanisme teras gRPC adalah berdasarkan protokol HTTP/2, yang melaksanakan komunikasi antara klien dan pelayan dengan mensiri dan menyahsiri mesej. Dalam artikel ini, kita akan melihat dengan lebih dekat cara gRPC berfungsi, cara mesej dihantar dan cara menggunakannya untuk membina aplikasi teragih yang berkuasa. Mari mulakan!

Kandungan soalan

Saya menggunakan dokumen rasmi https://grpc.io/docs/languages/go/basics/, tetapi selepas pelaksanaan, masalah berlaku. Apabila saya mencipta pelayan tcp saya perlu menentukan hos dan port (dalam kes saya mcrsrv-book:7561). Tetapi bagaimana jika saya mahu melaksanakan api lain untuk grpc? Adakah saya perlu memulakan pelayan lain pada port baharu (cth. mcrsrv-book:7562)? Bagaimanakah penghalaan dan API dilaksanakan dalam grpc?

Kod pelayan saya ialah:

type routeGuideServer struct {
    pb.UnimplementedRouteGuideServer
    savedFeatures []*pb.Response // read-only after initialized
}

// GetFeature returns the feature at the given point.
func (s *routeGuideServer) GetFeature(ctx context.Context, request *pb.Request) (*pb.Response, error) {

    context := localContext.LocalContext{}
    book := bookRepository.FindOrFailBook(context, int(request.BookId))

    return &pb.Response{
        Name:        book.Name,
        BookId:      int32(book.BookId),
        AuthorId:    int32(book.AuthorId),
        Category:    book.Category,
        Description: "Описание",
    }, nil
}

func newServer() *routeGuideServer {
    s := &routeGuideServer{}
    return s
}

func SomeAction() {
    lis, err := net.Listen("tcp", fmt.Sprintf("mcrsrv-book:7561"))
    if err != nil {
        log.Fatalf("failed to listen: %v", err)
    }
    var opts []grpc.ServerOption
    grpcServer := grpc.NewServer(opts...)
    pb.RegisterRouteGuideServer(grpcServer, newServer())
    grpcServer.Serve(lis)
}
Salin selepas log masuk

Saya rasa perlu ada pilihan lain selain membuka port berasingan untuk setiap perkhidmatan grpc.

Bagaimanakah API dalam grpc dilaksanakan?

Penyelesaian

Jika anda ingin menggunakan alamat yang sama untuk perkhidmatan yang berbeza, hanya daftar semula perkhidmatan lain sebelum memulakan pelayan grpc.

grpcServer := grpc.NewServer(opts...)
pb.RegisterRouteGuideServer(grpcServer, newServer())

#register other server here with the same 'grpcServer'

grpcServer.Serve(lis)
Salin selepas log masuk

Benang stackoverflow ini mungkin membantu anda sebagai contoh perkara yang ingin anda capai. Soalan itu menyediakan kod sampel yang saya percaya sepadan dengan keperluan anda.

Akses berbilang perkhidmatan grpc melalui sambungan yang sama

Atas ialah kandungan terperinci Bagaimanakah API dalam grpc dilaksanakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1663
14
Tutorial PHP
1263
29
Tutorial C#
1237
24
Adakah pengeluaran halaman H5 adalah pembangunan front-end? Adakah pengeluaran halaman H5 adalah pembangunan front-end? Apr 05, 2025 pm 11:42 PM

Ya, pengeluaran halaman H5 adalah kaedah pelaksanaan penting untuk pembangunan front-end, yang melibatkan teknologi teras seperti HTML, CSS dan JavaScript. Pemaju membina halaman H5 yang dinamik dan berkuasa dengan bijak menggabungkan teknologi ini, seperti menggunakan & lt; kanvas & gt; Tag untuk menarik grafik atau menggunakan JavaScript untuk mengawal tingkah laku interaksi.

Bagaimana untuk menyesuaikan simbol saiz semula melalui CSS dan menjadikannya seragam dengan warna latar belakang? Bagaimana untuk menyesuaikan simbol saiz semula melalui CSS dan menjadikannya seragam dengan warna latar belakang? Apr 05, 2025 pm 02:30 PM

Kaedah penyesuaian simbol saiz semula dalam CSS bersatu dengan warna latar belakang. Dalam perkembangan harian, kita sering menghadapi situasi di mana kita perlu menyesuaikan butiran antara muka pengguna, seperti menyesuaikan ...

Bagaimana cara menggunakan atribut clip-path CSS untuk mencapai kesan lengkung 45 darjah segmen? Bagaimana cara menggunakan atribut clip-path CSS untuk mencapai kesan lengkung 45 darjah segmen? Apr 04, 2025 pm 11:45 PM

Bagaimana untuk mencapai kesan lengkung 45 darjah segmen? Dalam proses melaksanakan segmen, bagaimana membuat sempadan yang betul berubah menjadi lengkung 45 darjah ketika mengklik butang kiri, dan titik ...

Bagaimana untuk mengawal bahagian atas dan akhir halaman dalam tetapan percetakan penyemak imbas melalui JavaScript atau CSS? Bagaimana untuk mengawal bahagian atas dan akhir halaman dalam tetapan percetakan penyemak imbas melalui JavaScript atau CSS? Apr 05, 2025 pm 10:39 PM

Cara menggunakan JavaScript atau CSS untuk mengawal bahagian atas dan akhir halaman dalam tetapan percetakan penyemak imbas. Dalam tetapan percetakan penyemak imbas, ada pilihan untuk mengawal sama ada paparan ...

Kenapa unsur-unsur blok sebaris tidak disengajakan? Bagaimana menyelesaikan masalah ini? Kenapa unsur-unsur blok sebaris tidak disengajakan? Bagaimana menyelesaikan masalah ini? Apr 04, 2025 pm 10:39 PM

Mengenai sebab-sebab dan penyelesaian untuk memaparkan unsur-unsur blok sebaris. Apabila menulis susun atur laman web, kami sering menghadapi masalah paparan yang kelihatan aneh. Bandingkan ...

Harga terbaru Bitcoin pada 2018-2024 USD Harga terbaru Bitcoin pada 2018-2024 USD Feb 15, 2025 pm 07:12 PM

Harga USD Bitcoin masa nyata Faktor yang menjejaskan harga bitcoin Petunjuk untuk meramalkan harga bitcoin masa depan Berikut adalah beberapa maklumat penting mengenai harga Bitcoin pada 2018-2024:

Bagaimana untuk mencapai kesan segmentasi dengan sempadan lengkung 45 darjah? Bagaimana untuk mencapai kesan segmentasi dengan sempadan lengkung 45 darjah? Apr 04, 2025 pm 11:48 PM

Petua untuk melaksanakan kesan segmen dalam reka bentuk antara muka pengguna, Segmenter adalah elemen navigasi biasa, terutamanya dalam aplikasi mudah alih dan laman web responsif. …

Bagaimana untuk bersesuaian dengan peninggalan limpahan multi-line pada terminal mudah alih? Bagaimana untuk bersesuaian dengan peninggalan limpahan multi-line pada terminal mudah alih? Apr 05, 2025 pm 10:36 PM

Isu keserasian limpahan berbilang baris pada terminal mudah alih yang ditinggalkan pada peranti yang berbeza apabila membangunkan aplikasi mudah alih menggunakan Vue 2.0, anda sering menghadapi keperluan untuk melimpah teks ...

See all articles