Cage Remote File Access System

Cholinga cha dongosolo

Kuthandizira kwakutali kwamafayilo pamakompyuta pamaneti. Dongosolo "pafupifupi" limathandizira ntchito zonse zoyambira mafayilo (kulenga, kufufutidwa, kuwerenga, kulemba, ndi zina zambiri) mwa kusinthanitsa zinthu (mauthenga) pogwiritsa ntchito protocol ya TCP.

Mapulogalamu

Kugwira ntchito kwadongosolo kumakhala kothandiza muzochitika zotsatirazi:

  • m'mapulogalamu amtundu wa zida zam'manja ndi zophatikizika (mafoni a m'manja, makina owongolera pa bolodi, ndi zina zambiri) zomwe zimafuna mwayi wofikira mafayilo pamaseva akutali poyang'anizana ndi kusokoneza kwakanthawi kolumikizana (popanda intaneti);
  • mu ma DBMS odzaza, ngati kukonzanso kwamafunso kumachitika pa maseva ena, ndipo kusungidwa kwa data kumachitidwa kwa ena;
  • m'mabungwe omwe amagawidwa kuti asonkhanitse ndi kukonza zidziwitso, zomwe zimafuna kusinthanitsa kwachangu kwa data, kuchotsedwa ntchito komanso kudalirika;
  • mu machitidwe ovuta omwe ali ndi zomangamanga za microservice, kumene kuchedwa kwa kusinthana kwa chidziwitso pakati pa ma modules ndikofunika kwambiri.

kapangidwe

The Cage system (pali kukhazikitsidwa - mtundu wa beta mu Python 3.7 pa Windows) uli ndi magawo awiri akulu:

  1. Cageserver - pulogalamu ya seva ya fayilo (pulogalamu ya ntchito) yomwe imayenda pamakompyuta pamaneti omwe mafayilo amafunikira kutali;
  2. класс khola ndi laibulale ya njira zamapulogalamu amakasitomala, kufewetsa ma codec a kulumikizana ndi ma seva.

Kugwiritsa ntchito dongosolo kumbali ya kasitomala

Njira zamakalasi a Cage zimalowa m'malo mwanthawi zonse, "nthawi zonse" machitidwe amafayilo: kupanga, kutsegula, kutseka, kufufuta mafayilo, komanso kuwerenga / kulemba deta mumtundu wa binary (zosonyeza malo ndi kukula kwa deta). Mwachidziwitso, njirazi zili pafupi ndi ntchito zamafayilo za chilankhulo cha C, pomwe mafayilo otsegula / kutseka amachitidwa "panjira" zolowetsa / zotulutsa.

Mwanjira ina, wopanga mapulogalamu sagwira ntchito ndi njira za "fayilo" zinthu (class _io mu Python), koma ndi njira za Cage class.

Chitsanzo cha chinthu cha Cage chikapangidwa, chimakhazikitsa kulumikizana koyamba ndi seva (kapena ma seva angapo), amavomerezedwa ndi Client Id, ndipo amalandira chitsimikiziro ndi nambala yodzipatulira ya doko pamafayilo onse. Chinthu cha Cage chikachotsedwa, chimalangiza seva kuti asiye kulankhulana ndikutseka mafayilo. Kuthetsa kulumikizana kungayambitsidwenso ndi ma seva okha.

Dongosololi limawongolera magwiridwe antchito owerengera / kulemba mwa kusungitsa zidutswa zamafayilo omwe amagwiritsidwa ntchito pafupipafupi mu cache ya RAM (buffer).
Mapulogalamu a kasitomala amatha kugwiritsa ntchito nambala iliyonse ya Cage zinthu zokhala ndi zosintha zosiyanasiyana (buffer memory size, block size posinthanitsa ndi seva, etc.).

Chinthu chimodzi Cage akhoza kulankhulana ndi owona angapo pa maseva angapo. Magawo olumikizirana (adilesi ya IP kapena seva ya DNS, doko lalikulu lovomerezeka, njira ndi dzina la fayilo) amafotokozedwa popanga chinthucho.

Popeza chinthu chilichonse cha Cage chimatha kugwira ntchito ndi mafayilo angapo nthawi imodzi, malo amakumbukidwe omwe amagawana amagwiritsidwa ntchito posungira. Kukula kwa cache - kuchuluka kwa masamba ndi kukula kwake, kumayikidwa mwamphamvu popanga chinthu cha Cage. Mwachitsanzo, cache ya 1 GB ndi masamba 1000 a 1 MB lililonse, kapena masamba 10 a 100 KB lililonse, kapena masamba 1 miliyoni a 1 KB lililonse. Kusankha kukula ndi chiwerengero cha masamba ndi ntchito yapadera pazochitika zilizonse zogwiritsira ntchito.

Mutha kugwiritsa ntchito zinthu zingapo za Cage nthawi imodzi kuti mufotokozere makonda osiyanasiyana amakumbukiro kutengera momwe chidziwitso chimafikira pamafayilo osiyanasiyana. Monga chofunikira, njira yosavuta kwambiri yogwiritsira ntchito buffering algorithm imagwiritsidwa ntchito: kukumbukira kukumbukira kutatha, masamba atsopano amachotsa akale molingana ndi mfundo yopuma pantchito yokhala ndi chiwerengero chochepa chofikira. Kuyimitsa kumakhala kothandiza makamaka ngati pali kusiyana (mwachiwerengero) kugawana nawo, choyamba, kumafayilo osiyanasiyana, ndipo, kachiwiri, kuzidutswa za fayilo iliyonse.

Gulu la Cage limathandizira I / O osati ndi maadiresi a deta (zosonyeza malo ndi kutalika kwa mndandanda, "kusintha" machitidwe a fayilo), komanso pamunsi, "thupi" - ndi nambala zamasamba mu kukumbukira kwa buffer.

Ntchito yoyambirira imathandizidwa ndi zinthu za Cage "kugona" ("kugona") - amatha "kugwa" (mwachitsanzo, ngati kutayika kwa ma seva, kapena ntchito ikayimitsidwa, ndi zina zotero) mu fayilo yotayira komweko kumbali ya kasitomala ndikubwezeretsedwanso kuchokera fayiloyi (pambuyo kuyankhulana kuyambiranso, mukayambiranso kugwiritsa ntchito). Izi zimapangitsa kuti muchepetse kuchuluka kwa magalimoto mukatsegula pulogalamu yamakasitomala mukangopita "paintaneti," popeza zidutswa zamafayilo zomwe zimagwiritsidwa ntchito pafupipafupi zidzakhala kale mu posungira.

Khola ndi pafupifupi mizere 3600 yamakhodi.

Mfundo zomanga seva

Ma seva a fayilo a Cageserver amatha kuyendetsedwa ndi ma doko angapo osawerengeka, amodzi mwa omwe ("wamkulu") amagwiritsidwa ntchito povomerezeka kwa makasitomala onse, ena onse amagwiritsidwa ntchito posinthanitsa deta. Pulogalamu ya seva ya Cage imafuna Python yokha. Mofananamo, kompyuta yokhala ndi seva yamafayilo imatha kugwira ntchito ina iliyonse.

Seva imayamba poyambira ngati njira ziwiri zazikulu:

  1. "Zogwirizana" - njira yochitira ntchito zokhazikitsa kulumikizana ndi makasitomala ndikuzithetsa mwachangu pa seva;
  2. "Ntchito" - ndondomeko yochitira ntchito (ntchito) za makasitomala kuti azigwira ntchito ndi mafayilo, komanso kutseka magawo olankhulana okhudzana ndi malamulo a kasitomala.

Njira zonsezi sizinalumikizidwe ndipo zimakonzedwa ngati malupu osatha olandila ndi kutumiza mauthenga kutengera mizere yochulukirachulukira, zinthu zofananira, maloko ndi ma soketi.
Njira yolumikizira imagawira doko kuti kasitomala aliyense alandire ndikutumiza deta. Chiwerengero cha madoko chimayikidwa pomwe seva ikuyamba. Mapu apakati pa madoko ndi makasitomala amasungidwa mu memory proxy yogawana nawo.

Njira ya Operations imathandizira kugawana mafayilo amafayilo kuti makasitomala angapo azigawana (quasi-parallel, popeza kupeza kumayendetsedwa ndi maloko) werengani deta kuchokera ku fayilo imodzi ngati izi zidaloledwa pamene zidatsegulidwa poyamba ndi kasitomala "woyamba".

Kukonza malamulo kuti apange / kufufuta / kutsegula / kutseka mafayilo pa seva kumachitika mu "Ntchito" ndondomeko yokhayokha motsatizana pogwiritsa ntchito fayilo ya subsystem ya seva OS.

Kuti mufulumizitse kuwerenga / kulemba, izi zimachitika mu ulusi wopangidwa ndi "Ntchito". Chiwerengero cha ulusi nthawi zambiri chimakhala chofanana ndi chiwerengero cha mafayilo otseguka. Werengani / kulemba ntchito kuchokera kwa makasitomala zimaperekedwa pamzere wamba ndipo ulusi woyamba waulere umatenga ntchitoyi pamutu pake. Malingaliro apadera amakulolani kuti muchotse ntchito zolemberanso deta mu RAM ya seva.

Njira ya Operations imayang'anira zochitika zamakasitomala ndikusiya kuwagwiritsa ntchito potsatira malamulo awo kapena nthawi yopuma ikadutsa.

Kuti muwonetsetse kudalirika, Cageserver imasunga zipika zazochitika zonse. Chipika chimodzi chimakhala ndi mauthenga ochokera kwa makasitomala omwe ali ndi ntchito kuti apange / kutsegula / kutchulanso / kuchotsa mafayilo. Chipika chapadera chimapangidwa pa fayilo iliyonse yogwira ntchito, momwe mauthenga omwe ali ndi ntchito zowerengera ndi kulemba deta mu fayilo yogwira ntchitoyi amalembedwa, komanso mndandanda wa deta yolembedwa (yatsopano) ndi mndandanda wa deta zomwe zinawonongeka panthawi yolemba (kulemba). zatsopano "pamwamba" za zakale). ).

Zolemba izi zimapereka kuthekera kokonzanso zosintha zatsopano pazosunga zosunga zobwezeretsera ndikubweza zomwe zilipo kale.

Cageserver ili pafupi mizere ya 3100 yamakhodi.

Cage Remote File Access System

Kukhazikitsa pulogalamu ya seva ya fayilo ya Cageserver

Mukayamba, muzokambirana muyenera kufotokozera:
- doko lalikulu kwa chilolezo;
- kuchuluka kwa madoko osinthanitsa ndi makasitomala ovomerezeka (kuyambira 1 kapena kupitilira apo, kuchuluka kwa manambala kumayambira pafupi ndi nambala yayikulu yadoko).

Kugwiritsa Ntchito Cage Class

kalasi khola.khola( cage_name="", pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, maso=Zabodza, cache_file="" )

Zinthu zimapangidwa kuchokera m'kalasi ili zomwe zimalumikizana ndi ma seva a fayilo ndipo zimakhala ndi kukumbukira kwa buffer.

magawo

  • khola_dzina(str) - dzina lokhazikika la chinthucho, chomwe chimagwiritsidwa ntchito kuzindikira makasitomala kumbali ya seva
  • kukula kwa tsamba(Int) - kukula kwa tsamba limodzi la buffer memory (mu ma byte)
  • manambala(Int) - chiwerengero cha masamba okumbukira
  • maxstrlen(Int) - kutalika kwakukulu kwa chingwe cha byte polemba ndi kuwerenga ntchito
  • seva_ip(lamulirani) - mtanthauzira mawu wokhala ndi ma adilesi a maseva omwe amagwiritsidwa ntchito, pomwe kiyi ndi dzina lokhazikika la seva (id ya seva mkati mwa pulogalamu), ndipo mtengo wake ndi chingwe chokhala ndi adilesi: "ip adilesi: port" kapena "DNS: port" (kuyerekeza kwa mayina ndi ma adilesi enieni ndi kwakanthawi, zitha kusintha)
  • dikirani(Int) - nthawi yodikira yankho kuchokera kwa seva mukalandira madoko (mumasekondi)
  • Galamukani(boolean) - mbendera ya momwe chinthucho chimapangidwira (chonyenga - ngati chinthu chatsopano chapangidwa, N'zoona - ngati chinthu chapangidwa kuchokera ku "chogwa" kale - pogwiritsa ntchito "hibernation", Zonama mwachisawawa)
  • cache_file(str) - dzina lafayilo la hibernation

Njira

Khola.file_create( seva, njira ) - pangani fayilo yatsopano

Khola.file_rename( seva, njira, new_name ) - sinthaninso fayilo

Khola.file_remove( seva, njira) - Chotsani fayilo

Khola.lotseguka( seva, njira, mod ) - Tsegulani fayilo

Kubwerera njira nambala ya channel. Parameter yamakono - iyi ndi njira yotsegulira mafayilo: "wm" - yekha (werengani / lembani), "rs" - kuwerenga-okha, ndikugawidwa kokha kuti awerengedwe ndi makasitomala ena, "ws" - werengani / lembani, ndikugawidwa kuti muwerenge makasitomala ena.

Khola.pafupi (njira) - Tsekani fayilo

Khola.kulemba (fchannel, chiyambi, data ) - lembani chingwe cha byte ku fayilo

Khola.werengani (fchannel, kuyamba, len_data ) - werengani chingwe cha byte kuchokera pafayilo

Khola.yika_masamba ( njira ) - "amakankhira" kuchokera ku buffer kupita ku seva masamba onse a tchanelo chomwe chasinthidwa. Amagwiritsidwa ntchito pazigawo zomwe zili mu algorithm mukafunika kutsimikiza kuti zonse zomwe zimachitika panjira zimasungidwa mufayilo pa seva.

Khola.kukankha_onse () - "amakankhira" kuchokera ku buffer kupita ku seva masamba onse a mayendedwe onse a chitsanzo cha Cage class yomwe yasinthidwa. Amagwiritsidwa ntchito mukafuna kutsimikizira kuti ntchito zonse pamayendedwe onse zimasungidwa pa seva.

Source: www.habr.com

Kuwonjezera ndemanga