gRPC क्या है और इसकी आवश्यकता क्यों है?
gRPC (gRPC Remote Procedure Calls) एक हाई-परफॉर्मेंस, ओपन-सोर्स RPC फ्रेमवर्क है जिसे Google ने विकसित किया है। यह क्लाइंट एप्लिकेशन को सर्वर एप्लिकेशन के मेथड्स को सीधे कॉल करने की अनुमति देता है, जैसे कि वह एक लोकल ऑब्जेक्ट हो। इससे डिस्ट्रीब्यूटेड सिस्टम और माइक्रोसर्विसेज बनाना आसान हो जाता है।
gRPC की नींव Protocol Buffers (protobuf) पर आधारित है - यह स्ट्रक्चर्ड डेटा को सीरियलाइज़ करने का एक शक्तिशाली तंत्र है। आप .proto फ़ाइल में डेटा स्ट्रक्चर और सर्विस को परिभाषित करते हैं, फिर protoc कंपाइलर आपकी पसंद की भाषा (यहाँ C++) में कोड जनरेट करता है।
gRPC के मुख्य लाभ:
- उच्च प्रदर्शन: HTTP/2 का उपयोग करता है जो रिक्वेस्ट को मल्टीप्लेक्स करता है और Protobuf का बाइनरी फॉर्मेट JSON/XML से कहीं तेज़ है।
- सख्त टाइपिंग: सर्विसेज के बीच कॉन्ट्रैक्ट
.protoफ़ाइलों में स्पष्ट रूप से परिभाषित होते हैं। - स्ट्रीमिंग सपोर्ट: server-streaming, client-streaming और bidirectional-streaming को सपोर्ट करता है।
- बहुभाषी समर्थन: C++, Java, Python, Go, C#, Ruby और कई अन्य भाषाओं में क्लाइंट और सर्वर जनरेट करता है।
- बिल्ट-इन ऑथेंटिकेशन और एन्क्रिप्शन: TLS/SSL और इंटरसेप्टर्स का समर्थन।
C++ के लिए gRPC लाइब्रेरी एक नेटिव इम्प्लीमेंटेशन है जो मेमोरी और परफॉर्मेंस पर पूर्ण नियंत्रण देती है। यह हाई-लोड सिस्टम, गेम सर्वर, फाइनेंशियल एप्लिकेशन और IoT के लिए महत्वपूर्ण है।
C++ के लिए gRPC इंस्टॉलेशन
C++ के लिए gRPC इंस्टॉल करना Python की तुलना में थोड़ा जटिल है क्योंकि इसे सोर्स कोड से कंपाइल करना होता है या vcpkg पैकेज मैनेजर का उपयोग करना होता है। हम दो मुख्य तरीके देखेंगे।
तरीका 1: vcpkg के माध्यम से इंस्टॉलेशन (अनुशंसित)
vcpkg Microsoft का C++ के लिए क्रॉस-प्लेटफॉर्म पैकेज मैनेजर है।
# 1. vcpkg को क्लोन करें
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
# 2. vcpkg इंस्टॉल करें (Windows: bootstrap-vcpkg.bat)
./bootstrap-vcpkg.sh
# 3. सिस्टम में इंटीग्रेट करें (Visual Studio या CMake के लिए)
./vcpkg integrate install
# 4. gRPC इंस्टॉल करें (protobuf और डिपेंडेंसी के साथ)
./vcpkg install grpc
इंस्टॉल करने के बाद अपने CMakeLists.txt में पैकेज को कनेक्ट करें:
find_package(gRPC CONFIG REQUIRED)
find_package(Protobuf CONFIG REQUIRED)
target_link_libraries(my_target
gRPC::grpc++
gRPC::grpc++_reflection
protobuf::libprotobuf
)
तरीका 2: सोर्स कोड से बिल्ड करना (Linux/macOS)
यह तरीका अधिक नियंत्रण देता है लेकिन इसमें डिपेंडेंसी (cmake, openssl, zlib, abseil) इंस्टॉल करनी होती है।
# सबमॉड्यूल के साथ रिपॉजिटरी क्लोन करें
git clone --recurse-submodules -b v1.62.0 https://github.com/grpc/grpc
cd grpc
# बिल्ड फोल्डर बनाएं
mkdir -p cmake/build
cd cmake/build
# कॉन्फ़िगर और बिल्ड करें
cmake ../.. -DgRPC_INSTALL=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
त्वरित शुरुआत: "Hello World" उदाहरण
एक सरल एप्लिकेशन बनाते हैं जो उपयोगकर्ता का नाम लेकर अभिवादन लौटाता है।
चरण 1: .proto फ़ाइल में सर्विस परिभाषित करें
hello.proto फ़ाइल बनाएं:
syntax = "proto3";
package helloworld;
// रिक्वेस्ट के लिए मैसेज परिभाषित करें
message HelloRequest {
string name = 1;
}
// रिस्पॉन्स के लिए मैसेज परिभाषित करें
message HelloReply {
string message = 1;
}
// RPC सर्विस परिभाषित करें
service Greeter {
// यूनरी RPC: एक रिक्वेस्ट -> एक रिस्पॉन्स
rpc SayHello (HelloRequest) returns (HelloReply);
}
चरण 2: C++ कोड जनरेट करें
protoc --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` hello.proto
protoc --cpp_out=. hello.proto
इससे निम्न फ़ाइलें बनेंगी: