C++ में माइक्रोसर्विसेज़: उच्च-लोड सिस्टम के लिए आर्किटेक्चर और अभ्यास

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

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

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

परिचय: माइक्रोसर्विसेज़ के लिए C++ क्यों?



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



माइक्रोसर्विसेज़ में C++ के मुख्य लाभ:

  • अधिकतम प्रदर्शन (नेटिवली कम्पाइल्ड कोड)
  • न्यूनतम मेमोरी खपत
  • संसाधनों पर पूर्ण नियंत्रण
  • गार्बेज कलेक्टर का अभाव (पूर्वानुमानित विलंबता)


हम व्यावहारिक उदाहरणों के साथ आर्किटेक्चर, REST API का कार्यान्वयन, gRPC, कतारों के साथ काम और कंटेनरीकरण पर विचार करेंगे।



C++ पर माइक्रोसर्विस का आर्किटेक्चर



मूल सिद्धांत

C++ पर माइक्रोसर्विस होना चाहिए:

  • स्वायत्त — प्रत्येक सेवा स्वतंत्र रूप से काम करती है
  • ढीला युग्मित — सेवाओं के बीच न्यूनतम निर्भरताएँ
  • व्यावसायिक कार्यों पर केंद्रित — एक सेवा एक कार्य हल करती है
  • विफलताओं के प्रति लचीला — graceful degradation


विशिष्ट प्रोजेक्ट संरचना

my_microservice/├── CMakeLists.txt├── src/│   ├── main.cpp│   ├── server/│   │   ├── http_server.cpp│   │   └── http_server.h│   ├── service/│   │   ├── order_service.cpp│   │   └── order_service.h│   ├── repository/│   │   ├── order_repository.cpp│   │   └── order_repository.h│   └── config/│       ├── config.cpp│       └── config.h├── include/│   └── (सार्वजनिक हेडर)├── tests/│   └── test_order_service.cpp└── Dockerfile


व्यावहारिक कार्यान्वयन: REST API माइक्रोसर्विस



HTTP-लाइब्रेरी का चयन

C++ के लिए सबसे अच्छे विकल्प cpp-httplib (हल्का, header-only) और Drogon (पूर्ण-विशेषताओं वाला फ्रेमवर्क) हैं। cpp-httplib के साथ एक उदाहरण देखें।



उदाहरण: ऑर्डर प्रबंधन सेवा

// main.cpp#include <httplib.h>#include <nlohmann/json.hpp>#include <iostream>#include <memory>#include "order_service.h"

using json = nlohmann::json;

int main() { httplib::Server svr; auto orderService = std::make_shared<OrderService>();

// POST /orders — ऑर्डर बनाना svr.Post("/orders", [orderService](const httplib::Request& req, httplib::Response& res) { try { auto data = json::parse(req.body); auto order = orderService->createOrder(data); res.set_content(order.dump(), "application/json"); res.status = 201; } catch (const std::exception& e) { res.set_content(json{{"error", e.what()}}.dump(), "application/json"); res.status = 400; } });

// GET /orders/{id} — ऑर्डर प्राप्त करना svr.Get(R"(/orders/(\\d+))", [orderService](const httplib::Request& req, httplib::Response& res) { int orderId = std::stoi(req.matches[1]); auto order = orderService->getOrder(orderId); if (order) { res.set_content(order->dump(), "application/json"); } else { res.status = 404; res.set_content(json{{"error", "Order not found"}}.dump(), "application/json"); } });

std::cout << "Server started on port 8080" << std::endl; svr.listen("0.0.0.0", 8080); return 0;}


// order_service.cpp#include "order_service.h"#include <stdexcept>

using json = nlohmann::json;

json OrderService::createOrder(const json& data) { if (!data.contains("product_id") || !data.contains("quantity")) { throw std::invalid_argument("Missing required fields"); }

Order or ```

ब्लॉग

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