I-Cage Remote File Access System

Inhloso yesistimu

Usekelo lokufinyelela kude kumafayela akukhompuyutha kunethiwekhi. Uhlelo "cishe" lusekela yonke imisebenzi yefayela eyisisekelo (ukudala, ukususwa, ukufunda, ukubhala, njll.) ngokushintshanisa imisebenzi (imiyalezo) kusetshenziswa iphrothokholi ye-TCP.

Izicelo

Ukusebenza kwesistimu kusebenza kahle kulezi zimo ezilandelayo:

  • ezinhlelweni zomdabu zamadivaysi eselula nashumekiwe (ama-smartphone, amasistimu okulawula ebhodini, njll.) adinga ukufinyelela okusheshayo kumafayela akuziphakeli ezikude lapho kubhekene nokuphazamiseka okungaba khona kwesikhashana ekuxhumaneni (ngokuphuma ungaxhunyiwe ku-inthanethi);
  • kuma-DBMS alayishiwe, uma ukucutshungulwa kwemibuzo kwenziwa kwamanye amaseva, futhi ukugcinwa kwedatha kwenziwa kwamanye;
  • kumanethiwekhi ezinkampani asabalalisiwe ukuze kuqoqwe futhi kucutshungulwe imininingwane, edinga ukushintshaniswa kwedatha ngesivinini esikhulu, ukungasasebenzi kanye nokwethembeka;
  • ezinhlelweni eziyinkimbinkimbi nge-microservice architecture, lapho ukubambezeleka ekushintshisaneni kolwazi phakathi kwamamojula kubalulekile.

isakhiwo

Uhlelo lwe-Cage (kukhona ukuqaliswa - inguqulo ye-beta ku-Python 3.7 ku-Windows) ihlanganisa izingxenye ezimbili eziyinhloko:

  1. I-Cageserver — uhlelo lweseva yefayela (iphakheji lemisebenzi) olusebenza kumakhompyutha akunethiwekhi amafayela awo adinga ukufinyelela ukude;
  2. class ikheji ngomtapo wezincwadi wezindlela zesoftware yeklayenti, okwenza kube lula ukubhalwa kwekhodi kokusebenzelana namaseva.

Ukusebenzisa uhlelo ohlangothini lweklayenti

Izindlela zekilasi le-Cage zithatha indawo evamile, ukusebenza kwesistimu yefayela "ejwayelekile": ukudala, ukuvula, ukuvala, ukususa amafayela, kanye ukufunda/ukubhala idatha ngefomethi kanambambili (ekhombisa indawo kanye nosayizi wedatha). Ngokomqondo, lezi zindlela ziseduze nemisebenzi yefayela yolimi C, lapho ukuvulwa/ukuvala amafayela kwenziwa “eziteshini” zokufakwayo/okuphumayo.

Ngamanye amazwi, umhleli akasebenzi ngezindlela zezinto "zefayela" (class _io ngePython), kodwa ngezindlela zekilasi leCage.

Uma kwenzeka into ye-Cage, isungula ukuxhumana kokuqala neseva (noma amaseva amaningana), igunyazwe I-Id Yeklayenti, futhi ithola isiqinisekiso ngenombolo yembobo ezinikele yakho konke ukusebenza kwefayela. Lapho into ye-Cage isusiwe, iyala iseva ukuthi imise ukuxhumana futhi ivale amafayela. Ukunqanyulwa kokuxhumana nakho kungaqalwa yiziphakeli ngokwazo.

Uhlelo lukhulisa ukusebenza kokufunda/ukubhala ngokufaka kubhafa izingcezu zefayela ezisetshenziswa njalo zezinhlelo zeklayenti kunqolobane ye-RAM (buffer).
Isofthiwe yeklayenti ingasebenzisa noma iyiphi inombolo yezinto ze-Cage enezilungiselelo ezihlukene (usayizi wememori ye-buffer, usayizi webhulokhi lapho ushintshisana neseva, njll.).

Into ye-Cage eyodwa ingaxhumana namafayela amaningi kumaseva amaningi. Imingcele yokuxhumana (ikheli le-IP noma iseva ye-DNS, imbobo enkulu yokugunyazwa, indlela kanye negama lefayela) icaciswa lapho udala into.

Njengoba into ngayinye ye-Cage ingasebenza ngamafayela amaningi ngesikhathi esisodwa, isikhala senkumbulo esabelwe sisetshenziselwa ukugcina kumthamo. Usayizi wenqolobane – inombolo yamakhasi nosayizi wawo, isethwe ngendlela eguquguqukayo lapho kwakhiwa into yekheji. Isibonelo, inqolobane engu-1 GB ingamakhasi ayi-1000 ka-1 MB lilinye, noma amakhasi ayizinkulungwane eziyi-10 ka-100 KB lilinye, noma amakhasi ayisigidi esingu-1 ka-1 KB ngalinye. Ukukhetha usayizi nenombolo yamakhasi kuwumsebenzi othize wecala ngalinye lohlelo lokusebenza.

Ungasebenzisa izinto ze-Cage eziningi ngesikhathi esisodwa ukuze uchaze izilungiselelo ezihlukene zememori ye-buffer kuye ngokuthi ulwazi lufinyelelwa kanjani kumafayela ahlukene. Njengesisekelo, kusetshenziswa i-algorithm elula yokubhafa: ngemva kokuba inani elithile lenkumbulo seliphelile, amakhasi amasha asusa amadala ngokomgomo wokuthatha umhlalaphansi ngenani elincane lokufinyelela. Ukugcina kumthamo kusebenza kahle kakhulu esimweni sokungalingani (ngomqondo wezibalo) ukufinyelela okwabiwe, okokuqala, kumafayela ahlukene, futhi, okwesibili, nezingcezu zefayela ngalinye.

Ikilasi le-Cage alisekeli i-I/O hhayi ngamakheli edatha kuphela (ekhombisa indawo nobude bamalungu afanayo, "ukushintsha" imisebenzi yesistimu yefayela), kodwa futhi nasezingeni eliphansi, "elingokomzimba" - ngezinombolo zekhasi kwimemori yebhafa.

Umsebenzi wasekuqaleni usekelwa izinto zekheji "ukuphumula" (“ubuthongo”) - “angabhidlika” (ngokwesibonelo, uma kwenzeka kulahleka uxhumano neziphakeli, noma lapho isicelo kumiswa, njll.) zibe ifayela lokulahla lendawo ohlangothini lweklayenti futhi abuyiselwe ngokushesha kusukela leli fayela (ngemuva kokuthi ukuxhumana kuqaliswe kabusha, lapho uqala kabusha uhlelo). Lokhu kwenza kube nokwenzeka ukunciphisa kakhulu ithrafikhi lapho usebenzisa uhlelo lweklayenti ngemva kokuya "okungaxhunyiwe ku-inthanethi" okwesikhashana, njengoba izingcezwana zefayela ezisetshenziswa njalo zizobe zikhona kakade kunqolobane.

Ikheji cishe imigqa yekhodi engama-3600.

Izimiso zokwakha iseva

Amaseva wefayela le-Cageserver angaqhutshwa ngenombolo engafanele yamachweba, elinye lawo (“eliyinhloko”) lisetshenziselwa ukugunyazwa kwawo wonke amaklayenti kuphela, amanye asetshenziselwa ukushintshaniswa kwedatha. Uhlelo lweseva ye-Cage ludinga iPython kuphela. Ngokuhambisanayo, ikhompuyutha enesiphakeli sefayela ingenza noma yimuphi omunye umsebenzi.

Iseva iqala ekuqaleni njengeqoqo lezinqubo ezimbili eziyinhloko:

  1. "Izixhumanisi" - inqubo yokwenza imisebenzi yokusungula ukuxhumana namakhasimende nokukuqeda ngokusuka kweseva;
  2. "Imisebenzi" - inqubo yokwenza imisebenzi (imisebenzi) yamaklayenti ukuze asebenze ngamafayela, kanye nokuvala izikhathi zokuxhumana ngokusekelwe emiyalweni yamakhasimende.

Zombili lezi zinqubo azivumelanisiwe futhi zihlelwa njengezihibe ezingapheli zokwamukela nokuthumela imilayezo ngokusekelwe kolayini bezinqubo eziningi, izinto zommeleli, izingidi namasokhethi.
Inqubo yokuxhuma inikezela ngembobo ukuze iklayenti ngalinye lamukele futhi lidlulise idatha. Inombolo yezimbobo isethwe lapho iseva iqala. Imephu ephakathi kwezimbobo namaklayenti igcinwa kumemori yommeleli eyabiwe ngokuhlanganyela.

Inqubo Yokusebenza isekela ukwabelana ngezinsiza zefayela ukuze amaklayenti amaningi ahlukene akwazi ukwabelana (i-quasi-parallel, njengoba ukufinyelela kulawulwa izingidi) funda idatha efayeleni elilodwa uma lokhu bekuvunyelwe ngenkathi livulwa iklayenti "lokuqala".

Ukucutshungulwa kwemiyalo yokwakha/ukususa/ukuvula/ukuvala amafayela kuseva kwenziwa kunqubo “Yokusebenza” ngokwayo ngokulandelana ngokuqinile kusetshenziswa isistimu engaphansi yefayela leseva OS.

Ukuze ngokuvamile kusheshiswe ukufunda/ukubhala, le misebenzi yenziwa ngemicu edalwe yinqubo "Yokusebenza". Inani lemicu ngokuvamile lilingana nenani lamafayela avuliwe. Imisebenzi yokufunda/yokubhala evela kumakhasimende ihanjiswa kulayini ojwayelekile futhi uchungechunge lwamahhala lokuqala luthatha umsebenzi ekhanda lawo. I-logic ekhethekile ikuvumela ukuthi ukhiphe imisebenzi yokubhala kabusha idatha ku-RAM yeseva.

Inqubo Yokusebenza iqapha umsebenzi weklayenti futhi iyeke ukuwahlinzeka ngemiyalo yawo noma uma isikhathi sokuvala sokungasebenzi sidluliwe.

Ukuqinisekisa ukwethembeka, i-Cageserver igcina amalogi akho konke ukuthengiselana. Ilogi eyodwa evamile iqukethe amakhophi emilayezo evela kumakhasimende anemisebenzi yokwakha/ukuvula/ukuqamba kabusha/ukususa amafayela. Kwenziwa ilogi ehlukile yefayela ngalinye elisebenzayo, lapho amakhophi emiyalezo enemisebenzi yokufunda nokubhala idatha kuleli fayela elisebenzayo arekhodwa, kanye nezinhlu zedatha ebhaliwe (entsha) kanye nenqwaba yedatha ecekelwe phansi ngesikhathi kubhalwa ngaphezulu (ukubhala). idatha entsha “phezulu” kwakudala). ).

Lawa malogi anikeza ikhono kokubili ukubuyisela izinguquko ezintsha kuzipele futhi ubuyisele okuqukethwe kwamanje endaweni ethile esikhathini esidlule.

I-Cageserver imayelana nemigqa yekhodi engama-3100.

I-Cage Remote File Access System

Kwethulwa uhlelo lweseva yefayela le-Cageserver

Uma uqala, udinga ukuchaza kungxoxo:
- ichweba elikhulu lokugunyazwa;
- inombolo yezimbobo zokushintshana namakhasimende agunyaziwe (kusuka ku-1 noma ngaphezulu, iqoqo lezinombolo liqala ukusuka kwelinye eliseduze nenombolo yembobo enkulu).

Ukusebenzisa i-Cage Class

class yezinyoni.ikheji( cage_name="", pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, vuka=Amanga, inqolobane_file="" )

Izinto zidalwa kusuka kuleli klasi ezisebenzisana neziphakeli zefayela futhi ziqukethe imemori ye-buffer.

Amapharamitha

  • igama_lekheji(str) - igama elinemibandela lento, elisetshenziselwa ukukhomba amaklayenti ohlangothini lweseva
  • usayizi wekhasi(Int) - usayizi wekhasi elilodwa lememori ye-buffer (ngamabhayithi)
  • izinombolo(Int) — inombolo yamakhasi ememori yesigcinalwazi
  • maxstrlen(Int) - ubude obukhulu beyunithi yezinhlamvu zebhayithi emisebenzini yokubhala nokufunda
  • iseva_ip(ukubizela) - isichazamazwi esinamakheli eziphakeli ezisetshenzisiwe, lapho ukhiye kuyigama elinemibandela leseva (i-id yeseva ngaphakathi kohlelo lokusebenza), futhi inani liwuchungechunge olunekheli: “ikheli le-ip:port” noma “DNS: port” (ukuqhathaniswa kwamagama namakheli angempela kungokwesikhashana, kungashintsha)
  • linda(Int) — isikhathi sokulinda impendulo evela kuseva lapho ithola izimbobo (ngemizuzwana)
  • vuka(i-boolean) - ifulegi lokuthi into idalwe kanjani (Amanga - uma into entsha idaliwe, Yiqiniso - uma into idalwe kokuthi "egoqiwe" ngaphambilini - kusetshenziswa "i-hibernation", Amanga ngokuzenzakalelayo)
  • i-cache_file(str) - igama lefayela le-hibernation

Izindlela

Ikheji.file_create( iseva, indlela ) - dala ifayela elisha

Ikheji.file_rename( iseva, indlela, igama_elisha ) - qamba kabusha ifayela

Ikheji.file_remove( iseva, indlela) - susa ifayela

Ikheji.evulekile( iseva, indlela, mod ) - vula ifayela

Iyabuya isiteshi inombolo yesiteshi. Ipharamitha Mod - lena imodi yokuvula ifayela: "wm" - okukhethekile (funda/ukubhala), "rs" - funda kuphela, futhi kwabelwana ngayo kuphela ukuze ifundwe ngamanye amakhasimende, "ws" - funda/bhala, futhi kwabelwane ngayo kuphela ukuze ifundwe amanye amaklayenti.

Ikheji.vala (isiteshi) – vala ifayela

Ikheji.bhala (fchannel, qala, idatha ) – bhala iyunithi yezinhlamvu ye-byte efayeleni

Ikheji.funda (fchannel, qala, len_data ) - funda iyunithi yezinhlamvu zebhayithi efayeleni

Ikheji.beka_amakhasi ( isiteshi ) - "ukuphusha" kusuka kusigcinalwazi kuya kuseva wonke amakhasi wesiteshi esishiwo ashintshiwe. Isetshenziswa kulawo maphuzu ku-algorithm lapho udinga ukuqiniseka ukuthi yonke imisebenzi esiteshini igcinwa ngokoqobo kufayela elikuseva.

Ikheji.phusha_konke () - "iphusha" kusuka kusigcinalwazi kuya kuseva wonke amakhasi azo zonke iziteshi isibonelo sekilasi le-Cage ashintshiwe. Isetshenziswa uma udinga ukuqiniseka ukuthi yonke imisebenzi kuwo wonke amashaneli igcinwa kwiseva.

Source: www.habr.com

Engeza amazwana