Saya mencoba memahami protobuf dan gRPC dan bagaimana saya dapat menggunakan keduanya. Bisakah Anda membantu saya memahami yang berikut:
- Mempertimbangkan model OSI dimana, misalnya Protobuf pada layer 4?
- Berpikir melalui transfer pesan bagaimana "aliran", apa yang dilakukan gRPC, apa yang terlewatkan oleh protobuf?
- Jika pengirim menggunakan protobuf, apakah server dapat menggunakan gRPC atau apakah gRPC menambahkan sesuatu yang hanya dapat dikirim oleh klien gRPC?
- Jika gRPC dapat membuat komunikasi sinkron dan asinkron menjadi mungkin, Protobuf hanya untuk marshalling dan oleh karena itu tidak ada hubungannya dengan status - benar atau salah?
- Dapatkah saya menggunakan gRPC di aplikasi frontend yang berkomunikasi sebagai ganti REST atau GraphQL?
Saya sudah tahu - atau menganggap saya tahu - bahwa:
- Protokol biner untuk pertukaran data
- Didesain oleh Google
- Menggunakan "Struct" yang dihasilkan seperti deskripsi di klien dan server untuk menghapus pesan marshall
- Menggunakan protobuf (v3)
- Sekali lagi dari Google
- Kerangka kerja untuk panggilan RPC
- Memanfaatkan HTTP / 2 juga
- Komunikasi sinkron dan asinkron dimungkinkan
Saya sekali lagi menganggap ini pertanyaan yang mudah bagi seseorang yang sudah menggunakan teknologi. Saya tetap berterima kasih karena Anda bersabar dan membantu saya. Saya juga akan sangat berterima kasih atas semua jaringan yang menyelami teknologi.
HTTP/2
), tetapi pasti melakukan tugas lapisan tersebut.Sebenarnya, gRPC dan Protobuf adalah 2 hal yang sangat berbeda. Izinkan saya menyederhanakan:
gRPC memiliki 2 sisi: sisi server, dan sisi klien, yang dapat menghubungi server. Server mengekspos RPC (mis. Fungsi yang dapat Anda panggil dari jarak jauh). Dan Anda memiliki banyak opsi di sana: Anda dapat mengamankan komunikasi (menggunakan TLS), menambahkan lapisan otentikasi (menggunakan interseptor), ...
Anda dapat menggunakan protobuf di dalam program apa pun, yang tidak perlu menjadi klien / server. Jika Anda perlu bertukar data, dan ingin data diketik dengan kuat, protobuf adalah pilihan yang bagus (cepat & andal).
Karena itu, Anda dapat menggabungkan keduanya untuk membangun sistem klien / server yang bagus: gRPC akan menjadi kode klien / server Anda, dan melindungi protokol data Anda.
PS: Saya menulis makalah ini untuk menunjukkan bagaimana seseorang dapat membangun klien / server dengan gRPC dan protobuf menggunakan Go, selangkah demi selangkah.
sumber
grpc adalah kerangka kerja yang dibangun oleh google dan digunakan dalam proyek produksi dari google itu sendiri dan #HyperledgerFabric dibangun dengan grpc ada banyak aplikasi sumber terbuka yang dibangun dengan grpc
protobuff adalah representasi data seperti json ini juga oleh google sebenarnya mereka memiliki beberapa ribu file proto yang dihasilkan dalam proyek produksinya
grpc
protobuff
sumber