C++ सेवाओं के लिए API गेटवे: जब प्रदर्शन सब कुछ तय करता है
\n\nकल्पना करें: आपके पास C++ पर दस माइक्रोसर्विसेज हैं, प्रत्येक प्रदर्शन का एक वास्तविक दिग्गज है। क्लाइंट प्रति सेकंड हजारों अनुरोध भेजते हैं, और सिस्टम... गेटवे के कारण धीमा होने लगता है। यह दर्द परिचित है? अक्सर डेवलपर्स C++ इकोसिस्टम में Lua के साथ Nginx या भारी Kong को खींच लेते हैं, जबकि वे अपना खुद का C++ पर API गेटवे लिख सकते थे - तेज़, हल्का और पूर्वानुमानित।
\n\nइस लेख में, मैं दिखाऊंगा कि शुरुआत से अपना C++ पर API गेटवे कैसे बनाया जाए। हम आर्किटेक्चर को समझेंगे, शुद्ध C++ में कार्यशील कोड लिखेंगे और इसकी लोकप्रिय समाधानों से तुलना करेंगे। आप जानेंगे कि कब आपका अपना API गेटवे एक उचित विकल्प है, और कब तैयार समाधान लेना बेहतर है।
\n\nC++ पर API गेटवे क्यों लिखें?
\n\nआइए ईमानदार रहें: अधिकांश प्रोजेक्ट्स को कस्टम गेटवे की आवश्यकता नहीं होती है। Nginx, Envoy या Kong 90% कार्यों को हल करते हैं। लेकिन कुछ परिदृश्य हैं जहाँ C++ अपरिहार्य है:
\n\n- \n
- 1 ms से कम विलंबता — वित्तीय प्रणालियाँ, गेम सर्वर, रियल-टाइम ट्रेडिंग \n
- लाखों RPS — उच्च-लोड API, CDN, IoT प्लेटफ़ॉर्म \n
- मेमोरी के लिए सख्त आवश्यकताएँ — एम्बेडेड सिस्टम, एज डिवाइस \n
- C++ कोड के साथ गहन एकीकरण — बिना ओवरहेड के नेटिव लाइब्रेरी कॉल \n
इसके अलावा, API Gateway C++ प्रत्येक बाइट पर पूर्ण नियंत्रण देता है। आप स्वयं तय करते हैं कि हेडर को कैसे संसाधित करना है, कैसे कैश करना है, लोड को कैसे संतुलित करना है। कोई जादू नहीं - केवल पूर्वानुमानित प्रदर्शन।
\n\nC++ पर API गेटवे की आर्किटेक्चर
\n\nएक विशिष्ट C++ पर API गेटवे में कई परतें होती हैं:
\n\n- \n
- ट्रांसपोर्ट परत — HTTP अनुरोधों का स्वागत और भेजना (boost::beast, libcurl, कस्टम सॉकेट) \n
- राउटर — URL का बैकएंड सेवाओं से मिलान \n
- मिडलवेयर — प्रमाणीकरण, दर सीमित करना, लॉगिंग, CORS \n
- बैलेंसर — राउंड-रॉबिन, लीस्ट-कनेक्शन, भारित \n
- कैश — इन-मेमोरी प्रतिक्रिया कैश (LRU, LFU) \n
यह योजनाबद्ध रूप से कैसा दिखता है:
\n\nClient → [API Gateway C++] → Middleware → Router → Balancer → Backend A\n ↓\n [Cache]\n\nप्रत्येक परत एक अलग मॉड्यूल है। उन्हें बिल्डिंग ब्लॉक्स की तरह जोड़ा जा सकता है। JWT सत्यापन जोड़ना चाहते हैं? मिडलवेयर लिखें। एक नए बैलेंसिंग एल्गोरिदम की आवश्यकता है? एक क्लास जोड़ें।
\n\nC++ पर API गेटवे लिखना: एक व्यावहारिक उदाहरण
\n\nआइए आधुनिक C++20 और HTTP के लिए boost::beast लाइब्रेरी लें। हमारा गेटवे होगा:
- \n
- पोर्ट 8080 पर अनुरोध स्वीकार करना \n
- URL उपसर्ग द्वारा रूट करना \n
- API कुंजी की जाँच करना \n
- प्रति IP प्रति मिनट 100 अनुरोध सीमित करना \n
- दो बैकएंड के बीच लोड संतुलन करना \n
चरण 1: मूल संरचना
\n\n#include <boost/beast/core.hpp>\n#include <boost/beast/http.hpp>\n#include <boost/beast/version.hpp>\n#include <boost/asio/ip/tcp.hpp>\n#include <unordered_map>\n#include <memory>\n#include <string>\n\nnamespace beast = boost::beast;\nnamespace http = beast::http;\nnamespace net = boost::asio;\nusing tcp = net::ip::tcp;\n\n// बैकएंड जानकारी संग्रहीत करने के लिए संरचना\nstruct Backend {\n std::string host;\n std::string port;\n int weight;\n};\n\n// राउटर वर्ग\nclass Router {\n std::unordered_map<std::string, std::vector<Backend>> routes_;\n std::unordered_map<std::string, size_t> counters_; // round-robin\n\npublic:\n void add_route(const std::string& prefix, std::vector<Backend> backends) {\n routes_[prefix] = std::move(backends);\n counters_[prefix] = 0;\n }\n\n Backend get_backend(const std::string& path) {\n