C++ में माइक्रोसर्विसेज़: आर्किटेक्चर और प्रैक्टिस A से Z तक

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

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

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

C++ में माइक्रोसर्विसेज़: आर्किटेक्चर और प्रैक्टिस A से Z तक

\n\n

आधुनिक डेवलपमेंट की दुनिया तेजी से माइक्रोसर्विस आर्किटेक्चर की ओर रुख कर रही है। पहले जहाँ C++ केवल उच्च-प्रदर्शन प्रणालियों, गेम्स या एम्बेडेड डेवलपमेंट से जुड़ा था, आज यह भाषा विश्वसनीय और तेज़ बैकएंड सर्विसेज़ बनाने में अपनी जगह पक्की कर रही है। इस लेख में, हम देखेंगे कि C++ में माइक्रोसर्विसेज़ को स्क्रैच से कैसे डिज़ाइन और कार्यान्वित किया जाए, किन टूल्स का उपयोग किया जाए और सामान्य गलतियों से कैसे बचा जाए।

\n\n

1. C++ पर माइक्रोसर्विस आर्किटेक्चर की मूल बातें

\n\n

माइक्रोसर्विसेज़ एक दृष्टिकोण है जिसमें एप्लिकेशन को छोटी, स्वतंत्र रूप से तैनात की जाने वाली सर्विसेज़ में विभाजित किया जाता है। प्रत्येक सर्विस अपने व्यावसायिक तर्क के लिए जिम्मेदार होती है और नेटवर्क के माध्यम से दूसरों के साथ संवाद करती है। C++ इस कार्य के लिए क्यों अच्छा है?

\n\n
    \n
  • प्रदर्शन: C++ कोड निष्पादन पर न्यूनतम ओवरहेड सुनिश्चित करता है, जो उच्च-लोड सिस्टम के लिए महत्वपूर्ण है।
  • \n
  • मेमोरी पर नियंत्रण: संसाधन प्रबंधन के बारीक समायोजन की क्षमता।
  • \n
  • समृद्ध पारिस्थितिकी तंत्र: नेटवर्किंग (Boost.Asio, Poco), सीरियलाइज़ेशन (Protocol Buffers, FlatBuffers) और HTTP (cpp-httplib, Crow) के लिए लाइब्रेरीज़।
  • \n
\n\n

C++ में एक सामान्य माइक्रोसर्विस में निम्नलिखित घटक होते हैं:

\n
    \n
  • अनुरोध प्राप्त करने के लिए HTTP-सर्वर (या gRPC-सर्वर)।
  • \n
  • क्लासेज़ और फंक्शन्स के रूप में कार्यान्वित व्यावसायिक तर्क।
  • \n
  • अन्य सर्विसेज़ (डेटाबेस, मैसेज क्यू) के साथ बातचीत के लिए क्लाइंट।
  • \n
  • मॉनिटरिंग और लॉगिंग।
  • \n
\n\n

2. डिज़ाइन और टूल्स का चयन

\n\n

2.1 HTTP के लिए फ्रेमवर्क का चयन

\n\n

C++ पर REST API बनाने के लिए कई लोकप्रिय लाइब्रेरीज़ हैं। आइए उनमें से दो पर नज़र डालें:

\n\n

Crow — एक हल्का, उपयोग में आसान फ्रेमवर्क जो Python Flask जैसा दिखता है। छोटी सर्विसेज़ के लिए बढ़िया है।

\n\n
#include <crow.h>\n\nint main() {\n    crow::SimpleApp app;\n\n    CROW_ROUTE(app, "/hello")\n    ([](){\n        return "Hello, World!";\n    });\n\n    app.port(8080).multithreaded().run();\n}\n
\n\n

cpp-httplib — अधिक निम्न-स्तरीय लेकिन बहुत तेज़ लाइब्रेरी। उन मामलों के लिए उपयुक्त है जहाँ पूर्ण नियंत्रण की आवश्यकता होती है।

\n\n
#include <httplib.h>\n\nint main() {\n    httplib::Server svr;\n\n    svr.Get("/hello", [](const httplib::Request& req, httplib::Response& res) {\n        res.set_content("Hello, World!", "text/plain");\n    });\n\n    svr.listen("0.0.0.0", 8080);\n}\n
\n\n

2.2 सर्विसेज़ के बीच संचार

\n\n

अंतर-सर्विस संचार के लिए सबसे लोकप्रिय प्रोटोकॉल gRPC है। यह डेटा सीरियलाइज़ेशन के लिए Protocol Buffers और ट्रांसमिशन के लिए HTTP/2 का उपयोग करता है। gRPC सख्त टाइपिंग, स्ट्रीमिंग और उच्च प्रदर्शन सुनिश्चित करता है।

\n\n

.proto फ़ाइल का उदाहरण:

\n\n
syntax = "proto3";\n\npackage userservice;\n\nservice UserService {\n    rpc GetUser (UserRequest) returns (UserResponse);\n}\n\nmessage UserRequest {\n    int32 user_id = 1;\n}\n\nmessage UserResponse {\n    string name = 1;\n    string email = 2;\n}\n
\n\n

C++ कोड जनरेट होने के बाद, आप जनरेटेड क्लासेज़ का उपयोग करके सर्वर और क्लाइंट को कार्यान्वित कर सकते हैं।

\n\n

2.3 कंटेनरीकरण और तैनाती

\n\n

C++ माइक्रोसर्विसेज़ के लिए कंटेनरीकरण महत्वपूर्ण है। Docker आपको सभी निर्भरताओं के साथ सर्विस को पैकेज करने और किसी भी वातावरण में समान व्यवहार सुनिश्चित करने की अनुमति देता है। C++ सर्विस के लिए Dockerfile का उदाहरण:

\n\n
FROM gcc:latest AS build\nWORKDIR /app\nCOPY . .\nRUN g++ -std=c++17 -o my_service main.cpp -lpthread -lcpprest\n\nFROM ubuntu:22.04\nWORKDIR /app\nCOPY --from=build /app/my_service .\nEXPOSE 8080\nCMD ["./my_service"]\n
\n\n

अंतिम इमेज को न्यूनतम रखने के लिए मल्टी-स्टेज बिल्ड का उपयोग करें।

\n\n

3

ब्लॉग

पुस्तक अनुशंसाएँ