Rust के लिए gRPC: लाइब्रेरी और उपयोग के उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Rust के लिए gRPC: लाइब्रेरी और उदाहरण



gRPC एक उच्च-प्रदर्शन वाला रिमोट प्रोसीजर कॉल (RPC) फ्रेमवर्क है, जिसे Google द्वारा विकसित किया गया है। यह डेटा सीरियलाइजेशन के लिए Protocol Buffers (protobuf) और ट्रांसपोर्ट के लिए HTTP/2 का उपयोग करता है। Rust इकोसिस्टम में gRPC के साथ काम करने के लिए मुख्य लाइब्रेरी tonic और grpc-rs हैं। इस लेख में हम दोनों लाइब्रेरी, उनकी क्षमताओं का विस्तार से अध्ययन करेंगे और व्यावहारिक कोड उदाहरण देंगे।



Rust में gRPC क्यों?

Rust एक सिस्टम प्रोग्रामिंग भाषा है जो मेमोरी सुरक्षा और प्रदर्शन पर ध्यान केंद्रित करती है। Rust पर gRPC आपको निम्नलिखित बनाने की अनुमति देता है:

  • उच्च-लोड वाले माइक्रोसर्विसेज
  • रियल-टाइम स्ट्रीमिंग सेवाएं
  • क्रॉस-प्लेटफॉर्म क्लाइंट-सर्वर एप्लिकेशन
  • मौजूदा gRPC इंफ्रास्ट्रक्चर के साथ एकीकरण


मुख्य लाइब्रेरी



1. Tonic — आधुनिक और अनुशंसित विकल्प

Tonic एक एसिंक्रोनस gRPC लाइब्रेरी है, जो tokio और hyper पर आधारित है। इसे समुदाय द्वारा सक्रिय रूप से समर्थित किया जाता है और इसे Rust में gRPC के लिए मानक माना जाता है।

tonic के लाभ:

  • gRPC का पूर्ण समर्थन (यूनरी, सर्वर, क्लाइंट और द्विदिश स्ट्रीम)
  • .proto फ़ाइलों के आधार पर tonic-build के माध्यम से कोड जनरेशन
  • tokio (एसिंक्रोनस रनटाइम) के साथ एकीकरण
  • TLS, लोड बैलेंसिंग और इंटरसेप्टर का समर्थन
  • सक्रिय समुदाय और अच्छा दस्तावेज़ीकरण


2. grpc-rs — PingCAP का विकल्प

grpc-rs C gRPC Core लाइब्रेरी के ऊपर एक Rust रैपर है। इसका उपयोग TiKV प्रोजेक्ट में किया जाता है। यह उन मामलों के लिए उपयुक्त है जहां मूल gRPC C स्टैक के साथ अधिकतम संगतता की आवश्यकता होती है।

grpc-rs की विशेषताएं:

  • gRPC Core (C लाइब्रेरी) के ऊपर रैपर
  • सभी प्रकार के gRPC कॉल का समर्थन
  • कम "मैजिक" — अधिक नियंत्रण
  • protoc और cmake की स्थापना की आवश्यकता
  • tonic की तुलना में कम लोकप्रियता

सिफारिश: अधिकांश नए प्रोजेक्ट के लिए tonic चुनें। grpc-rs का उपयोग करें यदि आपको मौजूदा gRPC C कोड के साथ एकीकरण की आवश्यकता है।



tonic के साथ प्रोजेक्ट सेटअप

एक नया प्रोजेक्ट बनाएं:

cargo new grpc-examplecd grpc-example


Cargo.toml में निर्भरताएं जोड़ें:

[dependencies]tonic = "0.11"prost = "0.12"tokio = { version = "1", features = ["full"] }

[build-dependencies]tonic-build = "0.11"


proto/hello.proto फ़ाइल बनाएं:

syntax = "proto3";

package hello;

service Greeter { rpc SayHello (HelloRequest) returns (HelloReply);}

message HelloRequest { string name = 1;}

message HelloReply { string message = 1;}


बिल्ड कॉन्फ़िगर करें — build.rs बनाएं:

fn main() -> Result<(), Box<dyn std::error::Error>> {    tonic_build::compile_protos("proto/hello.proto")?;    Ok(())}


tonic पर सर्वर का उदाहरण

src/server.rs बनाएं:

use tonic::{transport::Server, Request, Response, Status};use hello::greeter_server::{Greeter, GreeterServer};use hello::{HelloRequest, HelloReply};

pub mod hello { tonic::include_proto!("hello");}

#[derive(Default)]pub struct MyGreeter;

#[tonic::async_trait]impl Greeter for MyGreeter { async fn say_hello( &self, request: Request<HelloRequest>, ) -> Result<Response<HelloReply>, Status> { let name = request.into_inner().name; let reply = HelloReply {

अनुशंसाएँ