Rust में माइक्रोसर्विसेज़: कहाँ से शुरू करें और पागल न हों

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

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

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

Rust माइक्रोसर्विसेज़ में आपका अगला कदम क्यों है?

\n\n

माइक्रोसर्विसेज़ की दुनिया लंबे समय से Java (अपने Spring Boot के साथ), Python (FastAPI, Django) और Go के बीच बंटी हुई थी। लेकिन पिछले कुछ वर्षों में Rust की आवाज़ तेज़ी से सुनाई देने लगी है। क्यों? क्योंकि Rust वह देता है जो पहले असंभव लगता था: C++ का प्रदर्शन और मेमोरी सुरक्षा — बिना गार्बेज कलेक्टर के।

\n\n

यदि आप Python में लिखते हैं, तो आप विकास की गति के आदी हैं। लेकिन जब लोड बढ़ता है, Python "धीमा" होने लगता है। Rust इस समस्या को मौलिक रूप से हल करता है: प्रदर्शन के मामले में एक Rust माइक्रोसर्विस 3-4 Python सर्विसेज़ की जगह ले सकता है। और साथ ही, कोड रनटाइम में NullPointerException के साथ "क्रैश" नहीं होता।

\n\n

इस लेख में हम दार्शनिकता नहीं करेंगे। हम शुरू से एक Rust माइक्रोसर्विस लिखेंगे। आप देखेंगे कि यह डरावना नहीं है, बल्कि बहुत रोमांचक है।

\n\n

पर्यावरण तैयार करें: क्या इंस्टॉल करना है

\n\n

कोड लिखने से पहले, सुनिश्चित करें कि आपके पास सब कुछ है। यदि आप Rust में नए हैं — घबराएं नहीं, इंस्टॉलेशन में 2 मिनट लगते हैं।

\n\n

1. Rust इंस्टॉल करना

\n

सबसे आसान तरीका आधिकारिक इंस्टॉलर rustup के माध्यम से है:

\n\n
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
\n\n

इंस्टॉल करने के बाद वर्जन जांचें:

\n\n
rustc --version\ncargo --version
\n\n

2. एडिटर चुनना

\n

मैं rust-analyzer एक्सटेंशन के साथ VS Code की सलाह देता हूं। यह आपको ऑटो-कम्प्लीशन, एरर हाइलाइटिंग और रीफैक्टरिंग "आउट ऑफ द बॉक्स" देगा।

\n\n

3. Docker (कंटेनरीकरण के लिए)

\n

माइक्रोसर्विसेज़ आमतौर पर कंटेनरों में रहती हैं। Docker Desktop या Docker Engine इंस्टॉल करें। हम लेख के अंत में एक इमेज बनाएंगे।

\n\n

फ्रेमवर्क चुनना: Actix-web बनाम Axum बनाम Rocket

\n\n

Rust की दुनिया में HTTP सर्वर के लिए तीन मुख्य फ्रेमवर्क हैं। यहां उनकी संक्षिप्त तुलना है:

\n\n
    \n
  • Actix-web — सबसे तेज़ (1 मिलियन रिक्वेस्ट/सेकंड तक)। परिपक्व, कई उदाहरण। प्रोडक्शन के लिए आदर्श।
  • \n
  • Axum — आधुनिक, Tokio के निर्माताओं द्वारा। async-इकोसिस्टम के साथ सबसे अच्छा एकीकरण।
  • \n
  • Rocket — सबसे "मैत्रीपूर्ण" सिंटैक्स, लेकिन धीमी गति से अपडेट होता है।
  • \n
\n\n

इस लेख में हम Actix-web का उपयोग करेंगे, क्योंकि यह वर्षों से परीक्षित है और इसका सबसे बड़ा समुदाय है। लेकिन यदि आप "ट्रेंडी" स्टैक चाहते हैं — तो बेझिझक Axum लें।

\n\n

पहली माइक्रोसर्विस: URL शॉर्टनर सर्विस

\n\n

अमूर्त न होने के लिए, हम एक वास्तविक माइक्रोसर्विस — url-shortener लिखेंगे। यह एक लंबा URL लेगा और एक छोटा URL लौटाएगा।

\n\n

चरण 1. प्रोजेक्ट बनाएं

\n
cargo new url-shortener\ncd url-shortener
\n\n

चरण 2. डिपेंडेंसी जोड़ें

\n

Cargo.toml खोलें और जोड़ें:

\n\n
[dependencies]\nactix-web = "4"\nserde = { version = "1", features = ["derive"] }\nserde_json = "1"\nuuid = { version = "1", features = ["v4"] }\ntokio = { version = "1", features = ["full"] }
\n\n

चरण 3. कोड लिखें

\n

src/main.rs की सामग्री को निम्नलिखित कोड से बदलें:

\n\n
use actix_web::{web, App, HttpServer, HttpResponse, Responder};\nuse serde::{Deserialize, Serialize};\nuse std::sync::Mutex;\nuse uuid::Uuid;\n\n// मेमोरी में लिंक स्टोर करने के लिए स्ट्रक्चर\nstruct AppState {\n    links: Mutex>,\n}\n\n#[derive(Serialize, Deserialize, Clone)]\nstruct Link {\n    id: String,\n    url: String,\n}\n\n#[derive(Deserialize)]\nstruct CreateLinkRequest {\n    url: String,\n}\n\n// POST /shorten — एक छोटा लिंक बनाता है\nasync fn shorten(data: web::Data<AppState>, body: web::Json<CreateLinkRequest>) -> impl Responder {\n    let new_link = Link {\n        id: Uuid::new_v4().to_string()[..8].to_string(), // UUID के पहले 8 कैरेक्टर लेता है\n        url: body.url.clone(),\n    };\n\n    let mut links = data.lin                

ब्लॉग

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