ڪيج ريموٽ فائل رسائي سسٽم

سسٽم جو مقصد

نيٽ ورڪ تي ڪمپيوٽرن تي فائلن تائين ريموٽ رسائي لاء سپورٽ. سسٽم "عملي طور تي" TCP پروٽوڪول استعمال ڪندي ٽرانزيڪشن (پيغام) جي تبادلي ذريعي سڀني بنيادي فائل آپريشنز (تخليق، حذف ڪرڻ، پڙهڻ، لکڻ، وغيره) کي سپورٽ ڪري ٿو.

درخواستون

سسٽم جي ڪارڪردگي هيٺين صورتن ۾ اثرائتو آهي:

  • موبائيل ۽ ايمبيڊڊ ڊيوائسز (اسمارٽ فونز، آن بورڊ ڪنٽرول سسٽم وغيره) جي مقامي ايپليڪيشنن ۾ جيڪي ڪميونيڪيشن ۾ ممڪن عارضي رڪاوٽن جي صورت ۾ ريموٽ سرورز تي فائلن تائين جلدي رسائي جي ضرورت هونديون آهن (آف لائن وڃڻ سان)؛
  • لوڊ ٿيل ڊي بي ايم ايس ۾، جيڪڏهن سوال پروسيسنگ ڪجهه سرورن تي ڪيو ويندو آهي، ۽ ڊيٽا اسٽوريج ٻين تي ڪيو ويندو آهي؛
  • ورهايل ڪارپوريٽ نيٽ ورڪن ۾ معلومات گڏ ڪرڻ ۽ پروسيسنگ ڪرڻ لاءِ، تيز رفتار ڊيٽا جي مٽاسٽا جي ضرورت، بيڪارگي ۽ اعتبار؛
  • microservice فن تعمير سان پيچيده سسٽم ۾، جتي ماڊلز جي وچ ۾ معلومات جي تبادلي ۾ دير نازڪ آهي.

ساخت

ڪيج سسٽم (هڪ عمل درآمد آهي - ونڊوز تي پٿون 3.7 ۾ بيٽا ورزن) ۾ ٻه مکيه حصا شامل آهن:

  1. ڪيجسرور - هڪ فائيل سرور پروگرام (فنڪشن جو هڪ پيڪيج) جيڪو نيٽ ورڪ تي ڪمپيوٽرن تي هلندو آهي جن جي فائلن کي ريموٽ رسائي جي ضرورت هوندي آهي؛
  2. класс پڃري ڪلائنٽ سافٽ ويئر جي طريقن جي لائبريري سان، سرور سان رابطي جي ڪوڊنگ کي آسان ڪرڻ.

ڪلائنٽ جي پاسي تي سسٽم استعمال ڪندي

ڪيج ڪلاس جا طريقا معمولي، "معمولي" فائل سسٽم جي عملن کي تبديل ڪن ٿا: ٺاھڻ ، کولڻ ، بند ڪرڻ ، ختم ڪرڻ فائلون، گڏوگڏ بائنري فارميٽ ۾ ڊيٽا پڙهڻ/لکڻ (ڊيٽا جي پوزيشن ۽ سائيز کي اشارو ڪندي). تصوراتي طور تي، اهي طريقا سي ٻولي جي فائلن جي ڪم جي ويجهو آهن، جتي کولڻ / بند ڪرڻ واري فائلن کي "چينل تي" ان پٽ / آئوٽ پٽ تي ڪيو ويندو آهي.

ٻين لفظن ۾، پروگرامر "فائل" شين جي طريقن سان ڪم نٿو ڪري (ڪلاس _io پٿون ۾)، پر ڪيج ڪلاس جي طريقن سان.

جڏهن ڪيج اعتراض جو هڪ مثال ٺاهيو ويندو آهي، اهو هڪ سرور (يا ڪيترن ئي سرورز) سان هڪ ابتدائي ڪنيڪشن قائم ڪري ٿو، ڪلائنٽ جي سڃاڻپ طرفان مجاز آهي، ۽ سڀني فائل جي عملن لاء وقف پورٽ نمبر سان تصديق حاصل ڪري ٿي. جڏهن هڪ ڪيج اعتراض ختم ڪيو ويندو آهي، اهو سرور کي هدايت ڪري ٿو ته رابطي کي روڪڻ ۽ فائلن کي بند ڪرڻ. رابطي جو خاتمو پڻ سرور پاران شروع ڪري سگهجي ٿو.

سسٽم ريم ڪيش (بفر) ۾ ڪلائنٽ پروگرامن جي اڪثر استعمال ٿيل فائلن جي بفرنگ ذريعي پڙهڻ/لکڻ جي ڪارڪردگي کي بهتر بڻائي ٿو.
ڪلائنٽ سافٽ ويئر مختلف سيٽنگن سان ڪيج شيون استعمال ڪري سگھن ٿا (بفر ميموري سائيز، بلاڪ سائيز جڏهن سرور سان مٽائي، وغيره).

هڪ واحد ڪيج اعتراض ڪيترن ئي سرورن تي گهڻن فائلن سان رابطو ڪري سگهي ٿو. ڪميونيڪيشن پيٽرولر (IP پتو يا DNS سرور، اختيار لاء مکيه بندرگاهه، رستو ۽ فائل جو نالو) بيان ٿيل آهن جڏهن اعتراض ٺاهي رهيا آهن.

جيئن ته هر ڪيج اعتراض هڪ ئي وقت ۾ ڪيترن ئي فائلن سان ڪم ڪري سگهي ٿو، گڏيل ميموري اسپيس بفرنگ لاءِ استعمال ٿئي ٿي. ڪيش سائيز - صفحن جو تعداد ۽ انهن جي سائيز، متحرڪ طور تي مقرر ڪئي وئي آهي جڏهن ڪيج اعتراض ٺاهي. مثال طور، هڪ 1 GB ڪيش 1000 صفحا 1 MB هر هڪ، يا 10 هزار صفحا 100 KB هر هڪ، يا 1 ملين صفحا 1 KB هر هڪ. صفحن جي سائيز ۽ تعداد کي چونڊڻ هر ايپليڪيشن ڪيس لاءِ هڪ مخصوص ڪم آهي.

توهان مختلف بفر ميموري سيٽنگن جي وضاحت ڪرڻ لاءِ هڪ ئي وقت ۾ ڪيترن ئي ڪيج شيون استعمال ڪري سگهو ٿا ان تي منحصر آهي ته معلومات مختلف فائلن ۾ ڪيئن پهچندي آهي. بنيادي طور تي، آسان ترين بفرنگ الورورٿم استعمال ڪيو ويندو آهي: يادگيري جي ڏنل رقم ختم ٿيڻ کان پوء، نوان صفحا پراڻن کي مٽائي ڇڏيندا آهن پراڻن کي ريٽائرمينٽ جي اصول مطابق گهٽ ۾ گهٽ رسائي سان. بفرنگ خاص طور تي اثرائتو آهي غير برابر جي صورت ۾ (شمارياتي لحاظ کان) حصيداري رسائي، پهرين، مختلف فائلن ڏانهن، ۽ ٻيو، هر فائل جي ٽڪرن تائين.

ڪيج ڪلاس I/O کي سپورٽ ڪري ٿو نه رڳو ڊيٽا پتي جي ذريعي (اشاريءَ جي پوزيشن ۽ ڊگھائي، صفن جي "بدلڻ" فائل سسٽم جي عملن جي)، پر پڻ هيٺين، "فزيڪل" سطح تي - بفر ميموري ۾ صفحي نمبرن جي ذريعي.

اصل فنڪشن ڪيج جي شين لاء سپورٽ ڪئي وئي آهي "Hibernation" ("ننڊ") - اهي ٿي سگهن ٿا "ختم" (مثال طور، سرور سان ڪنيڪشن جي نقصان جي صورت ۾، يا جڏهن ايپليڪيشن بند ٿي وئي، وغيره) ڪلائنٽ جي پاسي تي مقامي ڊمپ فائل ۾ ۽ جلدي بحال ڪيو ويو هي فائل (ڪميونيڪيشن ٻيهر شروع ٿيڻ کان پوء، جڏهن توهان اپليڪيشن کي ٻيهر شروع ڪيو). اهو ممڪن طور تي ٽرئفڪ کي گهٽائڻ ممڪن بڻائي ٿو جڏهن عارضي طور تي "آف لائن" وڃڻ کان پوء ڪلائنٽ پروگرام کي چالو ڪيو وڃي، ڇاڪاڻ ته اڪثر استعمال ٿيل فائل جا ٽڪرا اڳ ۾ ئي ڪيش ۾ هوندا.

ڪيج اٽڪل 3600 لائنن جو ڪوڊ آھي.

سرور جي تعمير جا اصول

Cageserver فائل سرورز کي بندرگاهن جي خودمختياري نمبر سان هلائي سگھجي ٿو، جن مان هڪ ("مکيه") صرف سڀني مراجعين جي اختيار لاء استعمال ڪيو ويندو آهي، باقي ڊيٽا جي بدلي لاء استعمال ٿيندا آهن. ڪيج سرور پروگرام صرف پٿون جي ضرورت آهي. متوازي طور تي، ڪمپيوٽر کي فائل سرور سان گڏ ڪو ٻيو ڪم ڪري سگھي ٿو.

سرور شروعاتي طور تي ٻن مکيه عملن جي مجموعي طور شروع ٿئي ٿو:

  1. "رابطا" - ڪلائنٽ سان رابطي کي قائم ڪرڻ جي عملن کي انجام ڏيڻ ۽ سرور جي شروعات تي ان کي ختم ڪرڻ جو عمل؛
  2. "آپريشنز" - فائلن سان ڪم ڪرڻ لاءِ ڪلائنٽ جي ڪمن (آپريشن) کي انجام ڏيڻ لاءِ هڪ عمل، ۽ انهي سان گڏ ڪلائنٽ ڪمانڊ جي بنياد تي ڪميونيڪيشن سيشن کي بند ڪرڻ لاءِ.

ٻئي عمل هم وقت سازي نه ڪيا ويا آهن ۽ منظم ٿيل آهن پيغام وصول ڪرڻ ۽ موڪلڻ جي لاتعداد لوپ جي بنياد تي ملٽي پروسيس قطار، پراکسي شيون، لاڪ ۽ ساکٽس.
ڪنيڪشن جو عمل هر ڪلائنٽ لاءِ هڪ بندرگاهه مختص ڪري ٿو ڊيٽا حاصل ڪرڻ ۽ منتقل ڪرڻ لاءِ. بندرگاهن جو تعداد مقرر ڪيو ويو آهي جڏهن سرور شروع ٿئي ٿو. بندرگاهن ۽ ڪلائنٽ جي وچ ۾ ميپنگ interprocess-shared proxy ميموري ۾ محفوظ ٿيل آهي.

آپريشن جو عمل فائل وسيلن جي حصيداري کي سپورٽ ڪري ٿو ته جيئن ڪيترائي مختلف ڪلائنٽ شيئر ڪري سگھن (اڌ متوازي, ڇاڪاڻ ته رسائي locks ذريعي ڪنٽرول ڪئي ويندي آهي) هڪ فائل مان ڊيٽا پڙهو جيڪڏهن اها اجازت ڏني وئي هئي جڏهن اهو "پهرين" ڪلائنٽ پاران کوليو ويو هو.

سرور تي فائلون ٺاهڻ/ ڊليٽ ڪرڻ/ کولڻ/ بند ڪرڻ لاءِ ڪمانڊز جي پروسيسنگ ”آپريشنز“ جي عمل ۾ ڪئي ويندي آهي سختي سان ترتيب وار سرور او ايس جي فائل سب سسٽم کي استعمال ڪندي.

عام طور تي پڙهڻ/لکڻ جي رفتار کي تيز ڪرڻ لاءِ، اهي عمل ”آپريشن“ جي عمل جي ذريعي پيدا ڪيل سلسلي ۾ ڪيا ويندا آهن. موضوعن جو تعداد عام طور تي کليل فائلن جي تعداد جي برابر آهي. ڪلائنٽ کان پڙهو/لکڻ جا ڪم عام قطار ۾ جمع ڪيا ويندا آهن ۽ پهريون مفت موضوع ڪم کي پنهنجي سر کان وٺي ٿو. خاص منطق توهان کي سرور جي رام ۾ ڊيٽا ٻيهر لکڻ جي عملن کي ختم ڪرڻ جي اجازت ڏئي ٿي.

آپريشن جو عمل ڪلائنٽ جي سرگرمي کي مانيٽر ڪري ٿو ۽ انهن کي خدمت ڪرڻ بند ڪري ٿو يا ته انهن جي حڪمن تي يا جڏهن غير فعال ٿيڻ جو وقت ختم ٿي ويو آهي.

اعتبار کي يقيني بڻائڻ لاءِ، ڪيجسرور سڀني ٽرانزيڪشن جا لاگ رکي ٿو. ھڪڙي عام لاگ ۾ ڪلائنٽ جي پيغامن جون ڪاپيون شامل آھن جيڪي ڪم سان گڏ فائلون ٺاھيو / کولڻ / تبديل ڪرڻ / حذف ڪرڻ لاءِ. هر ڪم ڪندڙ فائل لاءِ هڪ الڳ لاگ ٺاهيو ويندو آهي، جنهن ۾ هن ڪم ڪندڙ فائل ۾ ڊيٽا پڙهڻ ۽ لکڻ جي ڪمن سان گڏ پيغامن جون ڪاپيون رڪارڊ ڪيون وينديون آهن، انهي سان گڏ لکيل (نئين) ڊيٽا جي صفن ۽ ڊيٽا جون صفون جيڪي اوور رائٽنگ (لکڻ) دوران تباهه ٿي ويون هيون. نئين ڊيٽا "مٿي تي" پراڻين جي).

اهي لاگز ٻنهي کي بيڪ اپ ۾ نئين تبديلين کي بحال ڪرڻ جي صلاحيت فراهم ڪن ٿا ۽ موجوده مواد کي ماضي ۾ هڪ نقطي ڏانهن واپس آڻين.

ڪيجسرور ڪوڊ جي 3100 لائنن بابت آهي.

ڪيج ريموٽ فائل رسائي سسٽم

Cageserver فائل سرور پروگرام شروع ڪرڻ

شروع ڪرڻ وقت، ڊائلاگ ۾ توھان کي وضاحت ڪرڻ گھرجي:
- اختيار لاء مکيه بندرگاهه؛
- بااختيار گراهڪن سان ٽرانزيڪشن جي تبادلي لاء بندرگاهن جو تعداد (1 يا وڌيڪ کان، انگن جو پول مکيه بندرگاهن نمبر جي اڳيان هڪ کان شروع ٿئي ٿو).

ڪيج ڪلاس استعمال ڪندي

ڪلاس پنجج.پڃري( cage_name="", pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, awake=False, cache_file="" )

شيون هن طبقي مان ٺهيل آهن جيڪي فائل سرور سان لهه وچڙ ۾ آهن ۽ بفر ياداشت تي مشتمل آهن.

حراست ۾

  • cage_name(آهي) - شئي جو مشروط نالو، جيڪو استعمال ڪيو ويندو آهي ڪلائنٽ جي سڃاڻپ ڪرڻ لاءِ سرور پاسي
  • صفحو سائيز(int) - بفر ميموري جي ھڪڙي صفحي جو سائز (بائيٽ ۾)
  • numpages(int) - بفر ميموري صفحن جو تعداد
  • maxstrlen(int) - لکڻ ۽ پڙهڻ جي عملن ۾ بائيٽ اسٽرنگ جي وڌ ۾ وڌ ڊگھائي
  • server_ip(حڪم) - استعمال ٿيل سرورن جي ايڊريس سان گڏ هڪ ڊڪشنري، جتي ڪنجي سرور جو مشروط نالو آهي (ايپليڪيشن جي اندر سرور id)، ۽ قدر پتي سان گڏ هڪ اسٽرنگ آهي: “ip address:port” يا “DNS: پورٽ" (نالن ۽ حقيقي پتي جو مقابلو عارضي آهي، اهو تبديل ٿي سگهي ٿو)
  • انتظار ڪريو(int) - سرور کان جواب جي انتظار جو وقت جڏهن بندرگاهن حاصل ڪري رهيو آهي (سيڪنڊن ۾)
  • ستل(بوليان) - پرچم ڪيئن ٺهيل آهي اعتراض (ڪوڙي - جيڪڏهن هڪ نئين شئي ٺاهي وئي آهي، سچ پچ ته - جيڪڏهن ڪا شئي ٺاهي وئي آهي اڳئين ”ڪلاپ ٿيل“ مان - استعمال ڪندي ”هائبرنيشن“ آپريشن، غلط طور تي ڊفالٽ)
  • cache_file(آهي) - hibernation لاءِ فائل جو نالو

طريقو

پنجرو.file_create( سرور ، رستو ) - هڪ نئين فائل ٺاهيو

پنجرو.file_name( سرور، رستو، نئون نالو ) - فائل جو نالو تبديل ڪريو

پنجرو.file_remove( سرور ، رستو) - هڪ فائل حذف ڪريو

پنجرو.کليل( سرور، رستو، موڊ ) - فائل کوليو

واپس اچي ٿي fchannel چينل نمبر. پيرا ميٽر Mod - ھي آھي فائل اوپننگ موڊ: "wm" - خاص (پڙھڻ/لکڻ)، "rs" - صرف پڙھڻ لاءِ، ۽ شيئر ڪيو ويو صرف ٻين ڪلائنٽ جي پڙھڻ لاءِ، "ws" - پڙھو/لکيو، ۽ شيئر ڪيو ويو صرف پڙھڻ لاءِ. ٻيا گراهڪ.

پنجرو.بند (fchannel) - فائل بند ڪريو

پنجرو.لکڻ (fchannel، شروعات، ڊيٽا ) - هڪ فائل ڏانهن بائيٽ اسٽرنگ لکو

پنجرو.پڙهڻ (fchannel، start، len_data ) - فائل مان بائيٽ اسٽرنگ پڙهو

پنجرو.put_pages ( fchannel ) - "Pushes" بفر کان سرور ڏانهن مخصوص چينل جا سڀئي صفحا جيڪي تبديل ڪيا ويا آهن. اهو الورورٿم ۾ انهن نقطن تي استعمال ڪيو ويندو آهي جڏهن توهان کي پڪ ڪرڻ جي ضرورت آهي ته چينل تي سڀئي عمل جسماني طور تي سرور تي فائل ۾ محفوظ ٿيل آهن.

پنجرو.push_all () - "Pushes" بفر کان سرور تائين سڀني چينلن جي سڀني صفحن کي مثال طور ڪيج ڪلاس جي مثال لاءِ جيڪو تبديل ڪيو ويو آهي. استعمال ڪيو ويو جڏهن توهان کي پڪ ڪرڻ جي ضرورت آهي ته سڀني چينلن تي سڀئي آپريشن سرور تي محفوظ ٿيل آهن.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو