Rust Async بلاکنگ، Rayon اور جدید ایپلی کیشنز
async Rust میں "بلاکنگ" کا کیا مطلب ہے، جب Rayon CPU سے منسلک کام کو فٹ کرتا ہے، اور Rust APIs، کنارے، ایجنٹس، اور CI/CD پلیٹ فارمز کے لیے کیوں مضبوط رہتا ہے؟
Workstationاس بارے میں کہ Rust جدید ایپلیکیشنز کے لیے فرسٹ کلاس انتخاب کیوں رہتا ہے — اور جب آپ Tokio کو CPU- بھاری کام کے ساتھ ملاتے ہیں تو "بلاک کرنے" کا اصل مطلب کیا ہے۔ Alice Ryhl کےAsync سے متاثر: مسدود کیا ہے؟(Rayon سیکشن)۔ گہرا غوطہ:طویل مضمون۔
.awaitسے اتنا دور رکھنا کہ دوسرے کام بھوکے رہ جائیں۔ Tokio کے پول سے مہنگے CPU کام کو منتقل کریں — اکثرRayonکے علاوہ ایک oneshot چینل کے ساتھ — اور APIs، ایج پراکسیز، ایجنٹس، اور CI/CD کنٹرول طیاروں کے لیے async پاتھ کو ریسپانسیو رکھیں۔کیوں Rust جدید ایپلیکیشن سلاٹس
جیتتا رہتا ہے۔ٹیمیں اس وقت Rust چنتی ہیں جب انہیں GC توقف ٹیکس کے بغیر میموری کی حفاظت کی ضرورت ہوتی ہے، بوجھ کے تحت متوقع تاخیر، اور ہم آہنگی کہ ٹائپ سسٹم آپ کو درست ہونے میں مدد کرتا ہے۔ یہ مجموعہ ہر جگہ ظاہر ہوتا ہے جہاں Workstation بنتا ہے: ہائی تھرو پٹ APIs، ایج گیٹ ویز، ایجنٹ رن ٹائمز، اور پروموشن کنٹرول طیارے جو CPU کے کام کی بڑھتی ہوئی تعداد کے آنے پر جم نہیں سکتے۔
یہ "ہر چیز کے لیے Rust" نہیں ہے۔ ہماریPolyglot Benchmarksڈیش بورڈ اور ساتھی پوسٹس —بلاگ/مضمون— Rust کا موازنہ Go, Bun, JVM سٹیکس، اور اسکرپٹنگ کناروں کے ساتھ اسی HTTP ورک بوجھ پر کریں۔ Rust اکثر CPU-باؤنڈ اور کنکرنسی سے بھاری قطاروں کی طرف جاتا ہے۔ دوسرے رن ٹائمز رفتار یا ایج ٹرانسفارمز پر جیت جاتے ہیں۔ نقطہ ثبوت ہے، پھر ADRs۔
async Rust
میں "بلاکنگ" کا کیا مطلب ہے۔Async رن ٹائمز (Tokio اور دوست).awaitپوائنٹس پر کاموں کو تبدیل کریں۔ اگر آپ کا ٹاسک CPU کے ملی سیکنڈ جلاتا ہے یا بغیر انتظار کیےstd::thread::sleepکے ساتھ سوتا ہے، تو کارکن اس تھریڈ پر کسی اور کو شیڈول نہیں کر سکتا۔ مقامی طور پر آپ کو محسوس نہیں ہوگا (کچھ کور بگ کو چھپاتے ہیں)؛ پیداوار میں آپ کے پاس کارکن ختم ہو جاتے ہیں اور تاخیر کی دم پھٹ جاتی ہے۔
ایکو سسٹم سے انگوٹھے کا اصول: دیر سے حساس خدمات کے انتظار کے درمیان دسیوں سے سیکڑوں مائیکرو سیکنڈز کے اندر رہیں — اور کسی بھی چیز کو کسی اور کام کے طور پر سمجھیں۔
جب Rayon مدد کرتا ہے (CPU- پابند)
- spawn_blocking— Tokio کا بلاک کرنے والا پول: مطابقت پذیری IO (فائل سسٹم، DB ڈرائیوروں کو مسدود کرنا) کے لیے بہترین؛ بھاری CPU کے لیے سب سے زیادہ بہتر کیونکہ یہ کور کو اوور سبسکرائب کر سکتا ہے۔
- Rayon— ایک چھوٹا، CPU سائز کا تھریڈ پول متوازی تکرار کرنے والوں اور مہنگے کمپیوٹیشنز کے لیے۔
rayon::spawn+tokio::sync::oneshotکے ساتھ پل تاکہ async ٹاسک رن ٹائم تھریڈ کو بلاک کیے بغیر نتیجہ کا انتظار کرے۔ - وقف شدہ دھاگہ— ہمیشہ کے لیے لوپس (کنکشن مینیجر، طویل المدت کارکن) کے لیے جو پول کی صلاحیت کو مستقل طور پر استعمال نہیں کرنا چاہیے۔
وہ Rayon + oneshot پیٹرن بالکل وہی ہے جو Alice RyhlRayon سیکشنمیں گزرتا ہے — Workstation کا طریقہ یہ ہے کہ وہ انتخاب پولی گلوٹ اسٹیٹس شپنگ ایجنٹس اور پلیٹ فارمز میں کیسے آتے ہیں، نہ کہ ٹیوٹوریل کی دوبارہ اشاعت۔
جہاں یہ Workstation مصنوعات
میں ظاہر ہوتا ہے۔- APIs اور کنارے— درخواست کارکنوں کو IO کے لیے مفت رکھیں۔ فین CPU Rayon میں تبدیل ہو جاتا ہے جب کسی گرم راستے کو اس کی ضرورت ہوتی ہے۔
- ایجنٹس— ایمبیڈنگ پریپ، ایول بیچز، اور ٹول سائیڈ کرنچ کو آرکیسٹریشن لوپ کو نہیں روکنا چاہیے۔
- CI/CD پلیٹ فارمز— صحت کی جانچ اور پروموشن انجن (Ring Promoterدیکھیں) جوابدہ رہتے ہیں جب کہ تصدیق کا بھاری کام آف پول سے چلتا ہے۔
- Kubernetes ops—KubePilotجیسے واقعہ کے کوپائلٹس کو اس وقت بھی تیز کنٹرول لوپس کی ضرورت ہوتی ہے جب تجزیہ CPU بھاری ہو۔
اگلا
پڑھیں- طویل مضمون— چیٹ شیٹ، کوڈ کے سائز کے پیٹرن، اور فن تعمیر کے نوٹس۔
- polyglot-benchmarks.fictionally.org— لائیو Rust بمقابلہ ہم عمر ثبوت۔
- Alice Ryhl -Async: مسدود کیا ہے؟
Workstationکے ذریعے شائع کیا گیا۔