Ticketing
دستاویزات

فریم ڈھانچہ

Raft RPCs کو لے جانے والی لمبائی-پریفکس بائنری فریمنگ۔ کلائنٹ پروٹوکول کے \n-ختم شدہ فریمز کے برعکس، پہلے لمبائی بھیجی جاتی ہے اور پھر اتنے ہی بائٹس پڑھے جاتے ہیں۔ ایک کنکشن پر درخواست-جواب کے جوڑے یکے بعد دیگرے آتے جاتے ہیں، اور dial کرنے والا فریق ہمیشہ درخواست گزار ہوتا ہے۔

درخواست (dialer → وصول کنندہ)

ساختrefresh

جواب (وصول کنندہ → dialer)

ساختrefresh
فیلڈسائزمواد
tagu8RPC کی قسم — دیکھیں RPC اقسام (صرف درخواست میں)
lenu32، big-endianآنے والے payload کی بائٹ لمبائی
payloadlen بائٹسpostcard فارمیٹ میں سیریلائز شدہ openraft قسم

کنکشن مینجمنٹ کے اصول

  • len کی حد 64 MiB ہے (وصولی پر جانچی جاتی ہے)۔ حد سے تجاوز کرنے والا فریم، بگڑا ہوا فریم، نامعلوم tag، یا Raft پروسیسنگ کی خرابی — سب کو کنکشن بند کر کے سنبھالا جاتا ہے — dial کرنے والا فریق (openraft) دوبارہ کنکشن بنا کر دوبارہ کوشش کرتا ہے۔
  • dial کرنے والا فریق ہر ہدف نوڈ کے لیے ایک کنکشن دوبارہ استعمال کرتا ہے۔ I/O خرابی پر، یا اگر کوئی round trip درمیان میں منسوخ ہو جائے، تو وہ کنکشن ضائع کر دیا جاتا ہے اور اگلی کال پر ایک نیا کنکشن بنایا جاتا ہے — آدھی پڑھی گئی اسٹریم کبھی غلط ترتیب کی حالت میں دوبارہ استعمال نہیں ہوتی۔

اصطلاحات

  • length-prefix — وہ فریمنگ جو پہلے باڈی کی لمبائی بھیجتی ہے، پھر بالکل اتنے ہی بائٹس پڑھتی ہے۔ \n جیسے کسی علیحدگی کنندہ (delimiter) کی ضرورت نہیں ہوتی، اس لیے کوئی بھی بائنری ڈیٹا جوں کا توں لے جایا جا سکتا ہے۔
  • serialization — میموری میں موجود struct کو ٹرانسپورٹ کے قابل بائٹ سیریز میں بدلنا۔
  • RPC (remote procedure call) — درخواست-جواب کا ایک جوڑا جو نیٹ ورک کے پار کسی دوسرے سرور کے فنکشن کو ایسے کال کرتا ہے جیسے وہ مقامی طور پر کال کیا جا رہا ہو۔