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) }
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)
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!

Goroutinesarefunctionsormethodsthatrunconcurlyingo, enablingefficientandlightweightconcurrency.1) theareManagedBygo'sruntimeusingmultiplexing, membolehkanThousthyandstorunonfewerthreads.2) goroutinesimproveprovperformancethoaseaseaseasyfaskmismenteFf

Thepurposeoftheinitfunctioningoistoinitializevariables, setupconfigurations, orperformnessarysetupbeforethemainfunctionExecutes.useinitby: 1) Placingitinyourcodetorunautomaticallybeforemain, 2) penyimpanan

Gointerfacesaremethodsignaturesetsthattypesmustimplement,enablingpolymorphismwithoutinheritanceforcleaner,modularcode.Theyareimplicitlysatisfied,usefulforflexibleAPIsanddecoupling,butrequirecarefulusetoavoidruntimeerrorsandmaintaintypesafety.

Gunakan fungsi pulih () dalam GO untuk pulih dari panik. Kaedah khusus adalah: 1) Gunakan pulih () untuk menangkap panik dalam fungsi penangguhan untuk mengelakkan kemalangan program; 2) rekod maklumat ralat terperinci untuk debugging; 3) memutuskan sama ada untuk meneruskan pelaksanaan program berdasarkan keadaan tertentu; 4) Gunakan dengan berhati -hati untuk mengelakkan mempengaruhi prestasi.

Artikel ini membincangkan menggunakan pakej "Strings" Go untuk manipulasi rentetan, memperincikan fungsi umum dan amalan terbaik untuk meningkatkan kecekapan dan mengendalikan Unicode dengan berkesan.

Butiran artikel menggunakan pakej "crypto" Go untuk operasi kriptografi, membincangkan generasi utama, pengurusan, dan amalan terbaik untuk pelaksanaan yang selamat.

Artikel ini memperincikan penggunaan pakej "masa" Go untuk pengendalian tarikh, masa, dan zon masa, termasuk mendapatkan masa semasa, mewujudkan masa tertentu, rentetan parsing, dan mengukur masa berlalu.

Artikel membincangkan menggunakan pakej "mencerminkan" Go untuk pemeriksaan dan pengubahsuaian yang berubah -ubah, menonjolkan kaedah dan pertimbangan prestasi.


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

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Dreamweaver CS6
Alat pembangunan web visual

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa
