बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें · पाठ

GraphQL और gRPC

लचीले डेटा-प्राप्ति के लिए GraphQL और उच्च-प्रदर्शन संचार के लिए gRPC जैसी वैकल्पिक API शैलियों को समझिए।

पाठ 2, कुल 4 में से12 चरण

GraphQL और gRPC, CoddyKit पर बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

REST से आगे: GraphQL और gRPC

RESTful API का व्यापक रूप से उपयोग किया जाता है, लेकिन वे हर परिस्थिति के लिए हमेशा उपयुक्त नहीं होते।

कभी-कभी आपको डेटा प्राप्त करने पर अधिक नियंत्रण चाहिए होता है या सेवाओं के बीच संचार के लिए अत्यधिक उच्च प्रदर्शन की आवश्यकता होती है।

इस पाठ में दो शक्तिशाली विकल्पों का अध्ययन किया गया है: GraphQL और gRPC।

REST में डेटा प्राप्त करने की चुनौतियाँ

पारंपरिक REST API अक्सर दो सामान्य समस्याएँ उत्पन्न करते हैं:

  • अधिक डेटा प्राप्त करना: एक ही अनुरोध में आवश्यकता से अधिक डेटा प्राप्त होना, जिससे बैंडविड्थ व्यर्थ होती है।
  • कम डेटा प्राप्त करना: आवश्यक सारा डेटा एकत्र करने के लिए अलग-अलग एंडपॉइंट पर कई अनुरोध करने पड़ना।

यह विशेष रूप से मोबाइल क्लाइंट या जटिल उपयोगकर्ता इंटरफ़ेस के लिए अप्रभावी हो सकता है।

GraphQL: ठीक उतना ही डेटा प्राप्त करें जितना आवश्यक हो

GraphQL आपकी API के लिए एक क्वेरी भाषा और उन क्वेरी को निष्पादित करने वाला सर्वर-पक्ष रनटाइम है।

यह क्लाइंट को ठीक वही डेटा माँगने की सुविधा देता है जिसकी उसे आवश्यकता है, जिससे अधिक डेटा प्राप्त करने और कम डेटा प्राप्त करने की समस्याएँ समाप्त हो जाती हैं।

इसे इस तरह समझें कि आप अपने डेटा अनुरोध के लिए एक फ़ॉर्म भर रहे हैं, न कि पहले से तैयार कोई पैकेज स्वीकार कर रहे हैं।

GraphQL स्कीमा से डेटा परिभाषित करना

हर GraphQL API एक स्कीमा के इर्द-गिर्द बनाई जाती है। यह स्कीमा उपलब्ध डेटा के सभी प्रकारों और संचालनों (क्वेरी, म्यूटेशन) को परिभाषित करती है।

यह क्लाइंट और सर्वर के बीच अनुबंध की तरह काम करती है और सुनिश्चित करती है कि क्लाइंट को ठीक-ठीक पता हो कि वह क्या माँग सकता है।

यहाँ एक सरल उदाहरण है:

type User {
  id: ID!
  name: String!
  email: String
  posts: [Post]
}

type Post {
  id: ID!
  title: String!
  content: String
  author: User!
}

GraphQL क्वेरी से डेटा प्राप्त करना

क्लाइंट डेटा प्राप्त करने के लिए GraphQL क्वेरी का उपयोग करते हैं। वे स्कीमा में परिभाषित उपलब्ध प्रकारों में से अपने लिए आवश्यक सटीक फ़ील्ड निर्दिष्ट करते हैं।

इसका अर्थ है कि एक ही क्वेरी कई REST अनुरोधों का स्थान ले सकती है।

देखिए, हम केवल name, email, और post के शीर्षक कैसे माँगते हैं:

query GetUserAndPosts {
  user(id: "123") {
    name
    email
    posts {
      title
    }
  }
}

GraphQL म्यूटेशन से डेटा बदलना

जिस प्रकार क्वेरी डेटा प्राप्त करती हैं, उसी प्रकार म्यूटेशन का उपयोग सर्वर पर डेटा में बदलाव करने के लिए किया जाता है। इसमें रिकॉर्ड बनाना, अपडेट करना या हटाना शामिल है।

म्यूटेशन डेटा भी लौटाते हैं, जो अक्सर नया बनाया या अपडेट किया गया ऑब्जेक्ट होता है और बदलाव की पुष्टि करता है।

नया पोस्ट बनाने का उदाहरण देखें:

mutation CreatePost($title: String!, $authorId: ID!) {
  createPost(title: $title, authorId: $authorId) {
    id
    title
  }
}

gRPC: उच्च-प्रदर्शन RPC

gRPC (Google Remote Procedure Call) सेवाओं के बीच उच्च-प्रदर्शन संचार के लिए एक ओपन-सोर्स फ़्रेमवर्क है।

GraphQL के विपरीत, gRPC का उपयोग आम तौर पर आंतरिक माइक्रोसर्विस संचार के लिए किया जाता है, जहाँ गति, दक्षता और सख्त अनुबंध अत्यंत महत्वपूर्ण होते हैं।

यह परिवहन के लिए HTTP/2 और संदेशों के क्रमबद्धीकरण के लिए Protocol Buffers पर आधारित है।

Protocol Buffers: gRPC की IDL

gRPC अपनी इंटरफ़ेस परिभाषा भाषा (IDL) और अंतर्निहित संदेश विनिमय प्रारूप के रूप में Protocol Buffers (Protobuf) का उपयोग करता है।

Protobuf आपके डेटा की संरचना और सेवा इंटरफ़ेस को किसी विशिष्ट प्रोग्रामिंग भाषा पर निर्भर हुए बिना परिभाषित करता है।

इसके बाद इस परिभाषा का उपयोग विभिन्न भाषाओं में क्लाइंट और सर्वर कोड बनाने के लिए किया जाता है।

syntax = "proto3";

package greeter;

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

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

gRPC: बाइनरी, HTTP/2, स्ट्रीमिंग

उच्च प्रदर्शन के लिए gRPC की प्रमुख विशेषताएँ:

  • HTTP/2: एक ही कनेक्शन पर कई अनुरोधों को चलाने और द्विदिश स्ट्रीमिंग की सुविधा देता है।
  • बाइनरी क्रमबद्धीकरण: Protobuf डेटा को एक संक्षिप्त बाइनरी प्रारूप में क्रमबद्ध करता है, जो JSON से तेज़ और छोटा होता है।
  • कोड निर्माण: .proto परिभाषाओं से क्लाइंट और सर्वर स्टब कोड अपने-आप बनाता है, जिससे विकास सरल हो जाता है।

GraphQL और gRPC में से चुनाव

किसे कब उपयोग करना चाहिए?

  • GraphQL: लचीले, क्लाइंट-केंद्रित API के लिए आदर्श, जहाँ क्लाइंट को अपनी डेटा आवश्यकताएँ परिभाषित करनी होती हैं। मोबाइल ऐप और जटिल यूआई के लिए उत्कृष्ट।
  • gRPC: उच्च-प्रदर्शन, कम-विलंबता वाले अंतर-सेवा संचार (जैसे माइक्रोसर्विस) के लिए सबसे अच्छा, या तब जब सख्त अनुबंध और कुशल डेटा स्थानांतरण महत्वपूर्ण हों।

ये अलग-अलग समस्याओं का समाधान करते हैं और किसी बड़ी प्रणाली में एक साथ भी उपयोग किए जा सकते हैं!

त्वरित जाँच: API शैलियाँ

मान लीजिए कि आप एक नया मोबाइल ऐप बना रहे हैं, जिसका यूआई जटिल है और जिसे कम से कम नेटवर्क अनुरोधों के साथ बैकएंड से विभिन्न प्रकार का डेटा प्राप्त करना है। क्लाइंट-सर्वर संचार के लिए कौन-सी API शैली सबसे उपयुक्त होगी?

पुनरावलोकन: लचीले और तेज़ API

इस पाठ में हमने API के दो शक्तिशाली विकल्पों का अध्ययन किया: GraphQL और gRPC।

  • GraphQL एक लचीली क्वेरी भाषा प्रदान करता है, जिससे क्लाइंट ठीक वही डेटा प्राप्त कर सकते हैं जिसकी उन्हें आवश्यकता है और आवश्यकता से अधिक या कम डेटा प्राप्त करने की समस्याओं से बच सकते हैं।
  • gRPC एक उच्च-प्रदर्शन वाला बाइनरी संचार फ़्रेमवर्क प्रदान करता है, जो HTTP/2 और Protocol Buffers का उपयोग करके कुशल अंतर-सेवा संचार के लिए आदर्श है।

इनकी खूबियों को समझने से आपको अलग-अलग सिस्टम डिज़ाइन चुनौतियों के लिए सही उपकरण चुनने में सहायता मिलेगी।

शुरुआत निःशुल्क

एआई शिक्षक के साथ बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “GraphQL और gRPC” पाठ निःशुल्क है?

हाँ—“GraphQL और gRPC” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“GraphQL और gRPC” में मैं क्या सीखूँगा?

लचीले डेटा-प्राप्ति के लिए GraphQL और उच्च-प्रदर्शन संचार के लिए gRPC जैसी वैकल्पिक API शैलियों को समझिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“GraphQL और gRPC” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. RESTful API डिज़ाइन के सिद्धांत
  2. GraphQL और gRPC
  3. संदेश कतारें और घटना-आधारित प्रणालियाँ
  4. API संस्करण निर्धारण और पिछली संगतता
← बैकएंड डेवलपरों के लिए सिस्टम डिज़ाइन की मूल बातें पर वापस जाएँ