Системаи дастрасии дурдасти файли қафас

Ҳадафи система

Дастгирии дастрасии дурдаст ба файлҳо дар компютерҳои шабака. Система «амалиёт» тамоми амалиёти асосии файлро (эҷод кардан, нест кардан, хондан, навиштан ва ғ.) тавассути мубодилаи транзаксияҳо (паёмҳо) бо истифода аз протоколи TCP дастгирӣ мекунад.

Барномаҳо

Функсияи система дар ҳолатҳои зерин самаранок аст:

  • дар замимаҳои ватанӣ барои дастгоҳҳои мобилӣ ва дохилшуда (смартфонҳо, системаҳои идоракунии бортӣ ва ғайра), ки дастрасии зуд ба файлҳои серверҳои дурдастро талаб мекунанд, дар ҳолати қатъи эҳтимолии муваққатии муошират (бо хомӯш кардани офлайн);
  • дар МДМ-ҳои пурбор, агар коркарди дархостҳо дар баъзе серверҳо ва нигоҳдории маълумот дар дигарҳо анҷом дода шавад;
  • дар шабакаҳои тақсимшудаи корпоративӣ барои ҷамъоварӣ ва коркарди иттилоот, ки мубодилаи суръати баланди маълумот, зиёдатӣ ва эътимодро талаб мекунанд;
  • дар системаҳои мураккаб бо меъмории микросервис, ки таъхир дар мубодилаи иттилоот байни модулҳо муҳим аст.

сохтори

Системаи Cage (амалӣ вуҷуд дорад - версияи бета дар Python 3.7 дар Windows) ду қисмати асосиро дар бар мегирад:

  1. Қафас сервер — барномаи сервери файлӣ (маҷмӯи вазифаҳо), ки дар компютерҳои шабака кор мекунад, ки файлҳои онҳо дастрасии дурдастро талаб мекунанд;
  2. класс ҳабсхона бо китобхонаи усулҳои нармафзори муштарӣ, содда кардани рамзгузории ҳамкорӣ бо серверҳо.

Истифодаи система дар тарафи муштарӣ

Усулҳои синфи Cage амалҳои муқаррарии "муқаррарии" системаи файлиро иваз мекунанд: сохтан, кушодан, пӯшидан, нест кардан файлҳо, инчунин хондан/навиштани маълумот дар формати дуӣ (бо нишон додани мавқеъ ва андозаи маълумот). Аз ҷиҳати консептуалӣ, ин усулҳо ба функсияҳои файлии забони Си наздиканд, ки дар он кушодан/пӯшонидани файлҳо “дар каналҳои” вуруд/баромад анҷом дода мешавад.

Ба ибораи дигар, барномасоз бо усулҳои объектҳои "файл" кор намекунад (класс _io дар Python), аммо бо усулҳои синфи Cage.

Вақте ки намунаи объекти Cage сохта мешавад, он пайвасти аввалияро бо сервер (ё якчанд серверҳо) муқаррар мекунад, аз ҷониби Id муштарӣ иҷозат дода мешавад ва бо рақами порти махсус барои ҳама амалиёти файл тасдиқро қабул мекунад. Вақте ки объекти Cage нест карда мешавад, он ба сервер дастур медиҳад, ки муоширатро қатъ кунад ва файлҳоро пӯшад. Қатъи алоқа инчунин метавонад аз ҷониби худи серверҳо оғоз шавад.

Система иҷрои хондан/навиштанро тавассути буфер кардани порчаҳои файли зуд-зуд истифодашавандаи барномаҳои муштарӣ дар кэши RAM (буфер) беҳтар мекунад.
Нармафзори мизоҷ метавонад ҳар як миқдори объектҳои Cage-ро бо танзимоти гуногун истифода барад (андозаи хотираи буфер, андозаи блок ҳангоми мубодила бо сервер ва ғ.).

Як объекти Cage метавонад бо файлҳои сершумор дар серверҳои сершумор муошират кунад. Ҳангоми сохтани объект параметрҳои коммуникатсионӣ (суроғаи IP ё сервери DNS, порти асосӣ барои иҷозат, роҳ ва номи файл) муайян карда мешаванд.

Азбаски ҳар як объекти Cage метавонад дар як вақт бо якчанд файлҳо кор кунад, фазои хотираи муштарак барои буферкунӣ истифода мешавад. Андозаи кэш - шумораи саҳифаҳо ва андозаи онҳо ҳангоми сохтани объекти Cage динамикӣ муқаррар карда мешавад. Масалан, кэши 1 ГБ 1000 саҳифаи ҳар яки 1 МБ ё 10 ҳазор саҳифаи ҳар кадомаш 100 КБ ё 1 миллион саҳифаи ҳар яки 1 КБ мебошад. Интихоби андоза ва шумораи саҳифаҳо вазифаи мушаххас барои ҳар як парванда мебошад.

Шумо метавонед якчанд объектҳои Cage -ро дар як вақт истифода баред, то танзимоти гуногуни хотираи буфериро вобаста ба дастрасии иттилоот дар файлҳои гуногун муайян кунед. Ҳамчун алгоритми асосӣ, соддатарин алгоритми буферӣ истифода мешавад: пас аз тамом шудани миқдори муайяни хотира, саҳифаҳои нав саҳифаҳои кӯҳнаро мувофиқи принсипи қатъшавӣ бо шумораи ҳадди ақали дастрасӣ иваз мекунанд. Буферкунӣ махсусан дар сурати дастрасии муштарак (ба маънои оморӣ) самаранок аст, аввалан, ба файлҳои гуногун ва дуюм, ба порчаҳои ҳар як файл.

Синфи Cage I/O-ро на танҳо аз рӯи суроғаҳои додаҳо (бо нишон додани мавқеъ ва дарозии массив, «иваз» амалиёти системаи файлӣ), балки дар сатҳи поёнии «физикӣ» - аз рӯи рақамҳои саҳифа дар хотираи буферӣ дастгирӣ мекунад.

Функсияи аслӣ барои объектҳои Cage дастгирӣ карда мешавад "хоби хоб" ("хоб") - онҳо метавонанд "фурӯхта шаванд" (масалан, дар ҳолати қатъи пайвастшавӣ бо серверҳо ё ҳангоми қатъ шудани барнома ва ғайра) ба файли партовҳои маҳаллӣ дар тарафи муштарӣ ва зуд барқарор карда шаванд. ин файл (пас аз барқарор шудани алоқа, вақте ки шумо барномаро бозоғоз мекунед). Ин имкон медиҳад, ки трафик ҳангоми фаъолсозии барномаи муштарӣ пас аз муваққатан "офлайн" шудан кам карда шавад, зеро пораҳои файлҳои зуд-зуд истифодашаванда аллакай дар кэш хоҳанд буд.

Қафас тақрибан 3600 сатри код аст.

Принсипҳои сохтани сервер

Серверҳои файлии Cageserver-ро бо миқдори ихтиёрии портҳо иҷро кардан мумкин аст, ки яке аз онҳо («асосӣ») танҳо барои иҷозати ҳамаи муштариён истифода мешавад, боқимонда барои мубодилаи маълумот истифода мешаванд. Барномаи сервери Cage танҳо Python-ро талаб мекунад. Дар баробари ин, компютер дорои сервери файлӣ метавонад ҳама гуна кори дигарро иҷро кунад.

Сервер дар аввал ҳамчун маҷмӯи ду равандҳои асосӣ оғоз меёбад:

  1. "Пайвастҳо" – раванди иҷрои амалиёти барқарор намудани алоқа бо муштариён ва қатъи он бо ташаббуси сервер;
  2. "Амалиёти" – раванди иҷрои вазифаҳои (амалҳои) муштарӣ оид ба кор бо файлҳо, инчунин барои бастани сеансҳои иртиботӣ дар асоси фармонҳои муштарӣ.

Ҳарду раванд ҳамоҳанг карда намешаванд ва ҳамчун ҳалқаҳои беохири қабул ва фиристодани паёмҳо дар асоси навбатҳои бисёрҷанба, объектҳои прокси, қулфҳо ва розеткаҳо ташкил карда мешаванд.
Раванди Пайвастшавӣ барои ҳар як муштарӣ барои қабул ва интиқоли маълумот порт ҷудо мекунад. Шумораи портҳо ҳангоми оғози сервер муқаррар карда мешавад. Харитасозӣ байни портҳо ва мизоҷон дар хотираи прокси муштараки байнипроцессҳо нигоҳ дошта мешавад.

Раванди амалиёт мубодилаи захираҳои файлро дастгирӣ мекунад, то муштариёни гуногун метавонанд мубодила кунанд (квази параллелӣ, азбаски дастрасӣ тавассути қуфлҳо идора карда мешавад) хонед маълумот аз як файл, агар ин ҳангоми кушодани он аз ҷониби муштарии "аввалин" иҷозат дода шуда бошад.

Коркарди фармонҳо оид ба эҷод/тоза кардан/кушодан/пӯшидани файлҳо дар сервер дар худи раванди «Амалиёт» ба таври қатъӣ бо истифода аз зерсистемаи файлии сервери ОС анҷом дода мешавад.

Барои умуман суръат бахшидан ба хондан/навиштан, ин амалҳо дар риштаҳое анҷом дода мешаванд, ки тавассути раванди "Амалиёт" тавлид мешаванд. Шумораи риштаҳо одатан ба шумораи файлҳои кушода баробар аст. Супоришҳои хондан/навиштан аз муштариён ба навбати умумӣ пешниҳод карда мешаванд ва аввалин риштаи ройгон супоришро аз сари худ мегирад. Мантиқи махсус ба шумо имкон медиҳад, ки амалиёти дубора навиштани маълумотро дар RAM-и сервер аз байн баред.

Раванди Амалиёт фаъолияти муштариро назорат мекунад ва хидматрасониро бо фармонҳои онҳо ё ҳангоми гузаштани вақти ғайрифаъолият қатъ мекунад.

Барои таъмини эътимоднокӣ, Cageserver сабтҳои ҳама транзаксияҳоро нигоҳ медорад. Як гузориши умумӣ дорои нусхаҳои паёмҳои муштариён бо вазифаҳои эҷод/кушодан/номи дигар/нест кардани файлҳо мебошад. Барои ҳар як файли корӣ журнали алоҳида эҷод карда мешавад, ки дар он нусхаҳои паёмҳо бо вазифаҳои хондан ва навиштани маълумот дар ин файли корӣ, инчунин массивҳои маълумоти хаттӣ (нав) ва массивҳои маълумоте, ки ҳангоми такрорнависӣ (навиштан) нобуд шудаанд, сабт карда мешаванд. маълумоти нав «боло» аз маълумоти кӯҳна). ).

Ин гузоришҳо имкон медиҳанд, ки ҳам тағироти навро дар нусхабардорӣ барқарор кунанд ва ҳам мундариҷаи ҷориро ба нуқтаи гузашта баргардонанд.

Cageserver тақрибан 3100 сатри код аст.

Системаи дастрасии дурдасти файли қафас

Оғози барномаи сервери файли Cageserver

Ҳангоми оғоз, дар муколама шумо бояд муайян кунед:
— бандари асосӣ барои иҷозат;
— шумораи портҳо барои табодули транзаксия бо мизоҷони ваколатдор (аз 1 ё бештар аз он, ҳавзи рақамҳо аз яке дар паҳлӯи рақами асосии порт оғоз мешавад).

Истифодаи Синфи Cage

синф қафас.ҳабсхона( cage_name="", pagesize=0, numpages=0, maxstrlen=0, server_ip={}, интизорӣ=0, бедор=дурӯғ, cache_file="" )

Аз ин синф объектҳое сохта мешаванд, ки бо серверҳои файлӣ ҳамкорӣ мекунанд ва дорои хотираи буферӣ мебошанд.

параметрҳо

  • номи қафас(кӯча) - номи шартии объект, ки барои муайян кардани мизоҷон дар тарафи сервер истифода мешавад
  • андозаи саҳифа(Int) — андозаи як саҳифаи хотираи буферӣ (бо байт)
  • рақамҳо(Int) — шумораи саҳифаҳои хотираи буферӣ
  • максстрлен(Int) - дарозии максималии сатри байт дар амалиёти навиштан ва хондан
  • server_ip(дикт) - луғат бо суроғаҳои серверҳои истифодашуда, ки дар он калид номи шартии сервер (id-и сервер дар дохили барнома) мебошад ва арзиш сатр бо суроғаи: "ip address:port" ё "DNS: порт" (муқоисаи номҳо ва суроғаҳои воқеӣ муваққатӣ аст, онро тағир додан мумкин аст)
  • интизор шавед(Int) — вақти интизории посух аз сервер ҳангоми қабули портҳо (дар сонияҳо)
  • бедор кардан(булӣ) — парчам дар бораи чӣ гуна сохтани объект (дуруц - агар объекти нав сохта шавад, дуруст - агар объект аз объекти қаблан "фурӯхташуда" сохта шуда бошад - бо истифода аз амалиёти "нигоҳдорӣ", False ба таври пешфарз)
  • кэш_файл(кӯча) - номи файл барои интизорӣ

Усулҳо

Қафас.file_create( сервер, роҳ ) – файли нав эҷод кунед

Қафас.файл_номи( сервер, роҳ, номи нав ) – номи файлро иваз кунед

Қафас.file_remove( сервер, роҳ) - файлро нест кунед

Қафас.кушодан( сервер, роҳ, мод ) - файли кушода

Бармегардад fchannel рақами канал. Параметр MOD - ин ҳолати кушодани файл аст: "wm" - истисноӣ (хондан/навиштан), "rs" - танҳо барои хондан ва танҳо барои хондан аз ҷониби муштариёни дигар, "ws" - хондан/навиштан ва танҳо барои хондан аз ҷониби мизоҷони дигар.

Қафас.наздик (fchannel) – файлро пӯшед

Қафас.навиштан (fchannel, оғоз, маълумот ) – сатри байтро ба файл нависед

Қафас.хондан (fchannel, оғоз, len_data ) – сатри байтро аз файл хонед

Қафас.гузоштан_саҳифаҳо ( fchannel ) – аз буфер ба сервер ҳамаи саҳифаҳои канали муайяншударо, ки тағир дода шудаанд, “тела мекунад”. Он дар он нуқтаҳои алгоритм истифода мешавад, вақте ки шумо бояд боварӣ дошта бошед, ки ҳамаи амалиётҳо дар канал ба таври ҷисмонӣ дар файли сервер захира карда мешаванд.

Қафас.ҳамаро пахш кунед () - "тела" аз буфер ба сервер тамоми саҳифаҳои ҳама каналҳоро барои мисоли синфи Cage, ки тағир дода шудаанд. Он вақте истифода мешавад, ки шумо бояд боварӣ дошта бошед, ки ҳамаи амалиётҳо дар ҳама каналҳо дар сервер захира карда мешаванд.

Манбаъ: will.com

Илова Эзоҳ