الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

الیکسی نیڈینوف، سی ای او ITooLabsگو (گولانگ) پروگرامنگ زبان میں ٹیلی کام آپریٹرز کے لیے ٹیلی کمیونیکیشن پلیٹ فارم کی ترقی کے بارے میں بات کرتا ہے۔ الیکسی نے پلیٹ فارم کو تعینات کرنے اور چلانے میں اپنا تجربہ ایشیائی ٹیلی کام آپریٹرز میں سے ایک میں بھی شیئر کیا، جس نے پلیٹ فارم کو وائس میل سروسز (وائس میل) اور ورچوئل پی بی ایکس (کلاؤڈ پی بی ایکس) فراہم کرنے کے لیے استعمال کیا۔

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

Alexey Naydenov (اس کے بعد - AN): - سب کو سلام! میرا نام Alexey Naydenov ہے۔ میں ITooLabs کا ڈائریکٹر ہوں۔ سب سے پہلے، میں جواب دینا چاہوں گا کہ میں یہاں کیا کر رہا ہوں اور میں یہاں کیسے آیا۔

اگر آپ Bitrix24 Marketplace (سیکشن "ٹیلیفونی") کو دیکھیں تو 14 ایپلی کیشنز اور 36 جو وہاں موجود ہیں (40%) ہم ہیں:

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

مزید واضح طور پر، یہ ہمارے آپریٹر پارٹنرز ہیں، لیکن اس سب کے پیچھے ہمارا پلیٹ فارم (پلیٹ فارم بطور سروس) ہے - جو ہم ان کو ایک چھوٹے سے پیسے میں بیچتے ہیں۔ دراصل، میں اس پلیٹ فارم کی ترقی کے بارے میں بات کرنا چاہوں گا اور ہم گو میں کیسے آئے۔

اب ہمارے پلیٹ فارم کے نمبر:

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

میگافون سمیت 44 آپریٹر پارٹنرز۔ عام طور پر، ہم واقعی مختلف مہم جوئی پر جانا پسند کرتے ہیں، اور ہمیں یہاں روس میں 100 آپریٹرز کے 44 ملین سبسکرائبرز تک حقیقی رسائی حاصل ہے۔ لہذا، اگر کسی کے پاس کوئی کاروباری خیالات ہیں، تو ہم ہمیشہ ان کو سن کر خوش ہوں گے۔

  • 5000 صارف کمپنیاں۔
  • کل 20 سبسکرائبرز۔ یہ سب b000b ہے - ہم صرف کمپنیوں کے ساتھ کام کرتے ہیں۔
  • دن میں 300 کالز فی منٹ۔
  • پچھلے سال 100 ملین کالنگ منٹ (ہم نے جشن منایا)۔ یہ ہمارے پلیٹ فارم پر دستیاب اندرونی مذاکرات کو مدنظر نہیں رکھتا۔

یہ کیسے شروع ہوا؟

صحیح دوست کیسے اپنا پلیٹ فارم بنانا شروع کر دیتے ہیں؟ ہمیں اس بات کو بھی مدنظر رکھنا چاہیے کہ ہمارے پاس "ہارڈکور انٹرپرائز" کی ترقی کی تاریخ ہے، اور یہاں تک کہ ایک انٹرپرائز کے لیے سال کے انتہائی عین وقت پر! یہ وہ خوشی کا وقت تھا جب آپ گاہک کے پاس آتے ہیں اور کہتے ہیں: "ہمیں کچھ اور سرورز کی ضرورت ہے۔" اور گاہک: "کوئی سوال نہیں! ہمارے پاس ریک میں دس ہیں۔

تو ہم نے اوریکل، جاوا، WebSphere، Db2 اور وہ تمام چیزیں کیں۔ لہذا، ہم نے، یقینا، بہترین وینڈر حل لیا، ان کو مربوط کیا اور اس کے ساتھ اتارنے کی کوشش کی۔ ہم خود چل پڑے۔ یہ اس طرح کا اندرونی آغاز ہوگا۔

یہ سب دراصل 2009 میں شروع ہوا تھا۔ 2006 کے بعد سے، ہم آپریٹر کے حل میں قریب سے شامل رہے ہیں، کسی نہ کسی طرح۔ ہم نے کئی حسب ضرورت ورچوئل PBX بنائے (جیسا کہ ہمارے پاس اب آرڈر پر ہے): ہم نے اسے دیکھا، فیصلہ کیا کہ یہ اچھا ہے، اور ایک اندرونی آغاز شروع کرنے کا فیصلہ کیا۔

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

ہم نے VMWare لیا۔ چونکہ ہم اپنے طور پر تھے، ہمیں فوری طور پر کول وینڈر اسٹوریج کو ترک کرنا پڑا۔ ہم ان کے بارے میں سب کچھ جانتے ہیں: وعدوں کو 3 سے تقسیم کیا جانا چاہیے، اور لاگت کو 10 سے ضرب دینا چاہیے۔ اسی لیے انہوں نے DirDB وغیرہ بنایا۔

پھر یہ بڑھنے لگا۔ اس میں ایک بلنگ سروس شامل کی گئی تھی کیونکہ پلیٹ فارم مزید مقابلہ نہیں کر سکتا تھا۔ پھر MySQL سے بلنگ سرور منگو میں چلا گیا۔ نتیجے کے طور پر، ہمیں ایک کام کرنے والا حل ملا جو وہاں جانے والی تمام کالوں پر کارروائی کرتا ہے:

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

لیکن وہاں کہیں، اندر، وہی وینڈر پروڈکٹ گھوم رہا ہے - اہم، جوہری، جسے ہم نے ایک بار لیا تھا۔ 2011 کے آخر میں، ہم نے محسوس کیا کہ ہمارے لیے بنیادی رکاوٹ، یقیناً، یہ خاص پروڈکٹ ہو گی - ہم اس میں دوڑیں گے۔ ہم نے اپنے سامنے ایک دیوار دیکھی، جس میں ہم پوری سرپٹ دوڑ رہے تھے، کیونکہ مزید کلائنٹ آتے رہے۔
اس کے مطابق ہمیں کچھ کرنے کی ضرورت تھی۔ بلاشبہ، ہم نے مختلف مصنوعات پر کافی تحقیق کی ہے - اوپن سورس اور وینڈر دونوں۔ میں ابھی اس پر غور نہیں کروں گا - یہ وہ نہیں ہے جس کے بارے میں ہم بات کر رہے ہیں۔ آخری فال بیک آپشن جس کے بارے میں ہم نے سوچا وہ تھا اپنا پلیٹ فارم بنانا۔

بالآخر، ہم اس اختیار پر آئے۔ کیوں؟ کیونکہ تمام وینڈر اور اوپن سورس پروڈکٹس 10 سال پرانے مسائل کو حل کرنے کے لیے بنائے گئے تھے۔ ٹھیک ہے، اگر 10 سال کی عمر، اور کچھ اور! انتخاب ہمارے لیے واضح ہو گیا: یا تو ہم ایک مثالی خدمت کے اپنے عظیم خیال کو الوداع کہتے ہیں (شراکت داروں، آپریٹرز اور خود کے لیے)، یا ہم خود کچھ کرتے ہیں۔

ہم نے خود سے کچھ کرنے کا فیصلہ کیا!

پلیٹ فارم کی ضروریات

اگر آپ طویل عرصے سے کچھ کر رہے ہیں (کسی اور کی مصنوعات کا استعمال کرتے ہوئے)، تو آہستہ آہستہ آپ کے دماغ میں یہ خیال پیدا ہوتا ہے: میں یہ خود کیسے کروں گا؟ چونکہ ہم کمپنی میں تمام پروگرامر ہیں (سوائے سیلز پیپل کے، کوئی غیر پروگرامر نہیں ہے)، ہماری ضروریات بہت پہلے تیار ہوئی تھیں، اور وہ واضح تھیں:

  1. اعلی ترقی کی رفتار. وینڈر پروڈکٹ جس نے ہمیں اذیت دی وہ تسلی بخش نہیں تھی، سب سے پہلے، کیونکہ سب کچھ لمبا اور آہستہ آہستہ نکلا۔ ہم اسے جلدی سے چاہتے تھے - ہمارے پاس بہت سارے خیالات تھے! ہمارے پاس اب بھی بہت سارے آئیڈیاز ہیں لیکن تب آئیڈیاز کی فہرست ایسی تھی کہ دس سال پہلے کی طرح لگتا تھا۔ اب صرف ایک سال کے لیے۔
  2. ملٹی کور آئرن کا زیادہ سے زیادہ استعمال۔ یہ ہمارے لیے بھی اہم تھا، کیونکہ ہم نے دیکھا کہ صرف زیادہ سے زیادہ کور ہی ہوں گے۔
  3. اعلی وشوسنییتا. جس کے ساتھ ہم بھی روئے تھے۔
  4. ناکامیوں کے خلاف اعلی مزاحمت۔
  5. ہم روزانہ ریلیز کے عمل کو ختم کرنا چاہتے تھے۔ اس کے لیے ہمیں زبان کے انتخاب کی ضرورت تھی۔

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

اس کے مطابق، اس پروڈکٹ کی ضروریات سے جو ہم نے اپنے لیے مقرر کی ہیں، زبان کے تقاضے واضح طور پر منطقی انداز میں بڑھتے ہیں۔

  1. اگر ہم ملٹی کور سسٹمز کے لیے سپورٹ چاہتے ہیں، تو ہمیں متوازی عمل کے لیے سپورٹ کی ضرورت ہے۔
  2. اگر ہمیں ترقی کی رفتار کی ضرورت ہے تو ہمیں ایک ایسی زبان کی ضرورت ہے جو مسابقتی ترقی، مسابقتی پروگرامنگ کی حمایت کرے۔ اگر کسی نے فرق کا سامنا نہیں کیا ہے، تو یہ بہت آسان ہے:
    • متوازی پروگرامنگ اس بارے میں ہے کہ کس طرح دو مختلف تھریڈز کو مختلف کوروں پر عمل میں لایا جاتا ہے۔
    • کنکرنٹ ایگزیکیوشن، یا زیادہ واضح طور پر، کنکرنسی سپورٹ، اس بارے میں ہے کہ کس طرح ایک زبان (یا رن ٹائم، اس سے کوئی فرق نہیں پڑتا) ان تمام پیچیدگیوں کو چھپانے میں مدد کرتا ہے جو متوازی عمل سے آتی ہے۔
  3. اعلی استحکام. ظاہر ہے، ہمیں ایک کلسٹر کی ضرورت تھی، اور وینڈر کی پروڈکٹ سے بہتر۔

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

اگر آپ کو یاد ہے تو ہمارے پاس واقعی اتنے زیادہ اختیارات نہیں تھے۔ سب سے پہلے، ایرلنگ - ہم اسے پسند کرتے ہیں اور جانتے ہیں، یہ میرا ذاتی، ذاتی پسندیدہ تھا۔ دوسری بات یہ کہ جاوا جاوا بھی نہیں ہے بلکہ خاص طور پر Scala ہے۔ تیسرا، ایک ایسی زبان جو اس وقت ہم بالکل نہیں جانتے تھے۔ یہ ابھی ظاہر ہوا تھا، یا اس کے بجائے، یہ پہلے سے ہی تقریبا دو سال سے موجود تھا، لیکن ابھی تک جاری نہیں کیا گیا تھا.

جیت جاؤ!

گو کی تاریخ

ہم نے اس پر ایک پلیٹ فارم بنایا۔ میں اس کی وجہ بتانے کی کوشش کروں گا۔

گو کی ایک مختصر تاریخ۔ یہ 2007 میں شروع ہوا، 2009 میں کھولا گیا، پہلا ورژن 2012 میں ریلیز ہوا (یعنی ہم نے پہلی ریلیز سے پہلے ہی کام شروع کر دیا)۔ ابتدا کرنے والا گوگل تھا، جو جاوا کو تبدیل کرنا چاہتا تھا، جیسا کہ مجھے شبہ ہے۔

مصنفین بہت مشہور ہیں:

  • کین تھامسن، جو یونکس کے پیچھے تھے، نے UTF-8 ایجاد کیا، پلان 9 سسٹم پر کام کیا۔
  • کین کے ساتھ UTF-8 ایجاد کرنے والے Rob Pike نے Bell Labs میں Plan 9, Inferno, Limbo پر بھی کام کیا۔
  • رابرٹ گیزمر، جسے ہم جاوا ہاٹ اسپاٹ کمپائلر ایجاد کرنے اور V8 (گوگل کا جاوا اسکرپٹ ترجمان) میں جنریٹر پر کام کرنے کے لیے جانتے ہیں اور پسند کرتے ہیں۔
  • اور 700 سے زیادہ معاونین، بشمول ہمارے کچھ پیچ۔

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

جاؤ: پہلی نظر

ہم دیکھتے ہیں کہ زبان کم و بیش سادہ اور قابل فہم ہے۔ ہمارے پاس واضح قسمیں ہیں: کچھ معاملات میں ان کا اعلان کرنے کی ضرورت ہے، دوسروں میں وہ ضروری نہیں ہیں (اس کا مطلب یہ ہے کہ اقسام کا کسی نہ کسی طریقے سے اندازہ لگایا جاتا ہے)۔

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

یہ دیکھا جا سکتا ہے کہ ڈھانچے کو بیان کرنا فیشن ہے۔ یہ دیکھا جا سکتا ہے کہ ہمارے پاس پوائنٹر کا تصور ہے (جہاں ستارہ ہے)۔ یہ دیکھا جا سکتا ہے کہ arrays اور associative arrays کی ابتدا کے اعلان کے لیے خصوصی تعاون موجود ہے۔

یہ تقریبا واضح ہے - آپ زندہ رہ سکتے ہیں۔ آئیے ہیلو، ورلڈ لکھنے کی کوشش کرتے ہیں:

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

ہم کیا دیکھتے ہیں؟ یہ سی کی طرح نحو ہے، سیمی کالون اختیاری ہے۔ یہ دو لائنوں کے لیے الگ کرنے والا ہو سکتا ہے، لیکن صرف اس صورت میں جب یہ دو تعمیرات ایک ہی لائن پر ہوں۔

ہم دیکھتے ہیں کہ کنٹرول ڈھانچے میں بریکٹ (14ویں لائن میں) اختیاری ہیں، لیکن گھوبگھرالی منحنی خطوط وحدانی کی ہمیشہ ضرورت ہوتی ہے۔ ہم دیکھتے ہیں کہ ٹائپنگ جامد ہے۔ زیادہ تر وقت ٹم نکالا جاتا ہے۔ یہ مثال معمول کے Hello, world سے کچھ زیادہ پیچیدہ ہے - صرف یہ ظاہر کرنے کے لیے کہ وہاں ایک لائبریری موجود ہے۔

ہم اور کیا دیکھتے ہیں جو اہم ہے؟ کوڈ کو پیکجوں میں ترتیب دیا گیا ہے۔ اور اپنے کوڈ میں پیکج استعمال کرنے کے لیے، آپ کو درآمدی ہدایت کا استعمال کرتے ہوئے اسے درآمد کرنا ہوگا - یہ بھی ضروری ہے۔ ہم اسے لانچ کرتے ہیں - یہ کام کرتا ہے۔ زبردست!

آئیے آگے کچھ اور پیچیدہ کرنے کی کوشش کریں: ہیلو، دنیا، لیکن صرف اب یہ ایک HTTP سرور ہے۔ ہم یہاں کیا دلچسپ دیکھتے ہیں؟

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

سب سے پہلے، فنکشن ایک پیرامیٹر کے طور پر کام کرتا ہے. اس کا مطلب ہے کہ ہمارا فنکشن "فرسٹ کلاس سٹیزن" ہے اور آپ اس کے ساتھ فنکشنل انداز میں بہت سی دلچسپ چیزیں کر سکتے ہیں۔ اگلا ہم کچھ غیر متوقع طور پر دیکھتے ہیں: درآمدی ہدایت براہ راست GitHub ذخیرہ سے منسلک کرتی ہے۔ یہ ٹھیک ہے، یہ ایسا ہی ہے - اس کے علاوہ، ایسا ہی ہونا چاہیے۔

گو میں، پیکیج کا عالمگیر شناخت کنندہ اس کے ذخیرے کا یو آر ایل ہے۔ ایک خاص Goget یوٹیلیٹی ہے جو تمام انحصارات کو حاصل کرے گی، انہیں ڈاؤن لوڈ کرے گی، انہیں انسٹال کرے گی، انہیں مرتب کرے گی اور اگر ضروری ہو تو استعمال کے لیے تیار کرے گی۔ ایک ہی وقت میں، Goget html-meta کے بارے میں جانتا ہے۔ اس کے مطابق، آپ ایک HTTP ڈائریکٹری رکھ سکتے ہیں جس میں آپ کے مخصوص ذخیرہ کے لنکس ہوں گے (جیسا کہ ہم کرتے ہیں، مثال کے طور پر)۔

ہم اور کیا دیکھتے ہیں؟ معیاری لائبریری میں Http اور Json۔ ظاہر ہے، خود شناسی - عکاسی ہے، جسے انکوڈنگ/json میں استعمال کیا جانا چاہیے، کیونکہ ہم اس کے لیے محض کچھ صوابدیدی شے کو بدل دیتے ہیں۔

ہم اسے چلاتے ہیں اور دیکھتے ہیں کہ ہمارے پاس 20 لائنوں میں کارآمد کوڈ ہے، جو مشین کے موجودہ اوسط بوجھ کو مرتب کرتا، چلاتا اور رپورٹ کرتا ہے (جس مشین پر اسے لانچ کیا گیا ہے)۔
اور کیا ضروری ہے کہ ہم یہاں فوری طور پر دیکھ سکیں؟ اسے ایک جامد بائنری (بائنری) میں مرتب کیا گیا ہے۔ اس بائنری کا کوئی انحصار نہیں ہے، کوئی لائبریری نہیں ہے! آپ اسے کسی بھی سسٹم میں کاپی کر سکتے ہیں، اسے فوراً چلا سکتے ہیں، اور یہ کام کرے گا۔

آئیے آگے بڑھیں۔

جاؤ: طریقے اور انٹرفیس

جاؤ کے طریقے ہیں۔ آپ کسی بھی کسٹم قسم کے لیے طریقہ کا اعلان کر سکتے ہیں۔ مزید یہ کہ یہ ضروری نہیں کہ کوئی ڈھانچہ ہو، بلکہ شاید کسی قسم کا عرف ہو۔ آپ N32 کے لیے ایک عرف کا اعلان کر سکتے ہیں اور اس کے لیے کچھ بھی مفید کام کرنے کے طریقے لکھ سکتے ہیں۔

اور یہاں ہم پہلی بار احمقانہ کیفیت میں پڑ گئے... معلوم ہوا کہ گو کی کلاسیں نہیں ہیں۔ جو لوگ گو کو جانتے ہیں وہ کہہ سکتے ہیں کہ ٹائپ انکلوژن ہے، لیکن یہ مکمل طور پر کچھ اور ہے۔ جتنی جلدی کوئی ڈویلپر اسے وراثت سمجھنا چھوڑ دے، اتنا ہی بہتر ہے۔ گو میں کوئی کلاس نہیں ہے، اور نہ ہی کوئی وراثت ہے۔

سوال! دنیا کی پیچیدگی کی عکاسی کرنے کے لیے گوگل کی قیادت میں مصنفین کی کمپنی نے ہمیں کیا دیا ہے؟ انہوں نے ہمیں انٹرفیس دیا!

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

انٹرفیس ایک خاص قسم ہے جو آپ کو سادہ طریقے، طریقہ کار کے دستخط لکھنے کی اجازت دیتا ہے۔ مزید، کوئی بھی قسم جس کے لیے یہ طریقے موجود ہیں (عمل میں لائے گئے ہیں) اس انٹرفیس کے مطابق ہوں گے۔ اس کا مطلب یہ ہے کہ آپ آسانی سے ایک قسم کے لیے متعلقہ فنکشن کی وضاحت کر سکتے ہیں، دوسری کے لیے (جو اس انٹرفیس کی قسم سے مماثل ہے)۔ اس کے بعد، اس انٹرفیس کی قسم کے متغیر کا اعلان کریں اور ان میں سے کسی بھی چیز کو اسے تفویض کریں۔

کٹر شائقین کے لیے، میں یہ کہہ سکتا ہوں کہ اس متغیر میں درحقیقت دو پوائنٹر ہوں گے: ایک ڈیٹا کی طرف، دوسرا ڈسکرپٹرز کی ایک خاص جدول کی طرف، جو اس مخصوص قسم کے لیے عام ہے، اس قسم کے انٹرفیس کے لیے۔ یعنی کمپائلر لنکنگ کے وقت ایسی ڈسکرپٹر ٹیبل بناتا ہے۔

اور گو میں، ظاہر ہے، باطل کی طرف اشارہ کرتے ہیں۔ لفظ انٹرفیس {} (دو گھوبگھرالی منحنی خطوط وحدانی کے ساتھ) ایک متغیر ہے جو آپ کو اصولی طور پر کسی بھی چیز کی طرف اشارہ کرنے کی اجازت دیتا ہے۔
اب تک سب کچھ ٹھیک ہے، سب کچھ مانوس ہے۔ حیرت کی کوئی بات نہیں۔

جاؤ: goroutines

اب ہم اس طرف آتے ہیں جس میں ہماری دلچسپی ہے: ہلکے وزن کے عمل - گو کی اصطلاح میں گوروٹینز (گوروٹینز)۔

الیکسی نیڈینوف۔ ITooLabs۔ گو (گولانگ) ٹیلی فون پلیٹ فارم پر ترقی کا معاملہ۔ حصہ 1

  1. سب سے پہلے، وہ واقعی ہلکے ہیں (2 KB سے کم)۔
  2. دوم، اس طرح کے گوروٹین بنانے کے اخراجات نہ ہونے کے برابر ہیں: آپ ان میں سے ایک ہزار فی سیکنڈ بنا سکتے ہیں - کچھ نہیں ہوگا۔
  3. انہیں ان کے اپنے شیڈولر کے ذریعہ پیش کیا جاتا ہے، جو آسانی سے کنٹرول کو ایک گوروٹین سے دوسرے میں منتقل کرتا ہے۔
  4. اس صورت میں، کنٹرول مندرجہ ذیل صورتوں میں منتقل کیا جاتا ہے:
    • اگر گو ایکسپریشن کا سامنا ہوتا ہے (اگر گوروٹین اگلی گوروٹین شروع کرتا ہے)؛
    • اگر بلاکنگ ان پٹ/آؤٹ کال فعال ہے؛
    • اگر کچرا اٹھانا شروع ہو جائے؛
    • اگر چینلز کے ساتھ کچھ آپریشن شروع کیا جاتا ہے۔

یعنی جب بھی گو پروگرام کمپیوٹر پر چلتا ہے تو وہ سسٹم میں کور کی تعداد کا تعین کرتا ہے، ضرورت کے مطابق جتنے تھریڈز لانچ کرتا ہے (سسٹم میں کتنے کور ہیں یا آپ نے کتنے بتائے ہیں)۔ اس کے مطابق، شیڈیولر ہر کور میں ان تمام آپریٹنگ سسٹم تھریڈز پر عملدرآمد کے ان ہلکے وزن کے دھاگوں کو چلائے گا۔

واضح رہے کہ یہ لوہے کو استعمال کرنے کا سب سے مؤثر طریقہ ہے۔ جو دکھایا گیا ہے اس کے علاوہ، ہم اور بھی بہت کچھ کرتے ہیں۔ ہم، مثال کے طور پر، DPI سسٹم بناتے ہیں جو ایک یونٹ کو 40 گیگا بٹس کی خدمت کرنے کی اجازت دیتے ہیں (ان لائنوں میں کیا ہوتا ہے اس پر منحصر ہے)۔

وہاں، Go سے پہلے بھی، ہم نے بالکل اسی وجہ سے بالکل وہی اسکیم استعمال کی تھی: کیونکہ یہ ہمیں پروسیسر کیشے کی جگہ کو محفوظ رکھنے اور OS سیاق و سباق کے سوئچز کی تعداد کو نمایاں طور پر کم کرنے کی اجازت دیتا ہے (جس میں کافی وقت بھی لگتا ہے)۔ میں دہراتا ہوں: یہ لوہے کو استعمال کرنے کا سب سے مؤثر طریقہ ہے۔

یہ سادہ 21 لائن مثال ایک مثال ہے جو صرف ایکو سرور کرتی ہے۔ براہ کرم نوٹ کریں کہ سرو فنکشن انتہائی آسان ہے، یہ لکیری ہے۔ کوئی کال بیک نہیں ہے، پریشان ہونے اور سوچنے کی ضرورت نہیں ہے... آپ صرف پڑھتے لکھتے ہیں!

ایک ہی وقت میں، اگر آپ پڑھتے لکھتے ہیں، تو اسے درحقیقت بلاک ہونا چاہیے - اس گوروٹین کو صرف ایک قطار میں لگا دیا جاتا ہے اور جب دوبارہ عمل درآمد ممکن ہو جاتا ہے تو شیڈولر اسے لے جاتا ہے۔ یعنی، یہ سادہ کوڈ ایکو سرور کے طور پر کام کر سکتا ہے جتنے کنکشن کے لیے اس مشین پر OS اجازت دیتا ہے۔

بہت جلد جاری رکھا جائے گا...

کچھ اشتہارات 🙂

ہمارے ساتھ رہنے کے لیے آپ کا شکریہ۔ کیا آپ کو ہمارے مضامین پسند ہیں؟ مزید دلچسپ مواد دیکھنا چاہتے ہیں؟ آرڈر دے کر یا دوستوں کو مشورہ دے کر ہمارا ساتھ دیں، کلاؤڈ VPS برائے ڈویلپرز $4.99 سے, انٹری لیول سرورز کا ایک انوکھا اینالاگ، جو ہم نے آپ کے لیے ایجاد کیا تھا: VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps کے بارے میں پوری حقیقت $19 سے یا سرور کا اشتراک کیسے کریں؟ (RAID1 اور RAID10 کے ساتھ دستیاب، 24 کور تک اور 40GB DDR4 تک)۔

ایمسٹرڈیم میں Equinix Tier IV ڈیٹا سینٹر میں Dell R730xd 2 گنا سستا؟ صرف یہاں 2x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV $199 سے نیدرلینڈ میں! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99 سے! کے بارے میں پڑھا انفراسٹرکچر کارپوریشن کو کیسے بنایا جائے۔ ڈیل R730xd E5-2650 v4 سرورز کے استعمال کے ساتھ کلاس جس کی مالیت 9000 یورو ہے؟

ماخذ: www.habr.com

نیا تبصرہ شامل کریں