فریم ڈھانچہ
Raft RPCs کو لے جانے والی لمبائی-پریفکس بائنری فریمنگ۔ کلائنٹ پروٹوکول کے \n-ختم شدہ فریمز کے برعکس، پہلے لمبائی بھیجی جاتی ہے اور پھر اتنے ہی بائٹس پڑھے جاتے ہیں۔ ایک کنکشن پر درخواست-جواب کے جوڑے یکے بعد دیگرے آتے جاتے ہیں، اور dial کرنے والا فریق ہمیشہ درخواست گزار ہوتا ہے۔
درخواست (dialer → وصول کنندہ)
ساختrefresh
جواب (وصول کنندہ → dialer)
ساختrefresh
| فیلڈ | سائز | مواد |
|---|---|---|
tag | u8 | RPC کی قسم — دیکھیں RPC اقسام (صرف درخواست میں) |
len | u32، big-endian | آنے والے payload کی بائٹ لمبائی |
payload | len بائٹس | postcard فارمیٹ میں سیریلائز شدہ openraft قسم |
کنکشن مینجمنٹ کے اصول
lenکی حد 64 MiB ہے (وصولی پر جانچی جاتی ہے)۔ حد سے تجاوز کرنے والا فریم، بگڑا ہوا فریم، نامعلومtag، یا Raft پروسیسنگ کی خرابی — سب کو کنکشن بند کر کے سنبھالا جاتا ہے — dial کرنے والا فریق (openraft) دوبارہ کنکشن بنا کر دوبارہ کوشش کرتا ہے۔- dial کرنے والا فریق ہر ہدف نوڈ کے لیے ایک کنکشن دوبارہ استعمال کرتا ہے۔ I/O خرابی پر، یا اگر کوئی round trip درمیان میں منسوخ ہو جائے، تو وہ کنکشن ضائع کر دیا جاتا ہے اور اگلی کال پر ایک نیا کنکشن بنایا جاتا ہے — آدھی پڑھی گئی اسٹریم کبھی غلط ترتیب کی حالت میں دوبارہ استعمال نہیں ہوتی۔
اصطلاحات
- length-prefix — وہ فریمنگ جو پہلے باڈی کی لمبائی بھیجتی ہے، پھر بالکل اتنے ہی بائٹس پڑھتی ہے۔
\nجیسے کسی علیحدگی کنندہ (delimiter) کی ضرورت نہیں ہوتی، اس لیے کوئی بھی بائنری ڈیٹا جوں کا توں لے جایا جا سکتا ہے۔ - serialization — میموری میں موجود struct کو ٹرانسپورٹ کے قابل بائٹ سیریز میں بدلنا۔
- RPC (remote procedure call) — درخواست-جواب کا ایک جوڑا جو نیٹ ورک کے پار کسی دوسرے سرور کے فنکشن کو ایسے کال کرتا ہے جیسے وہ مقامی طور پر کال کیا جا رہا ہو۔