Nidaamka Galitaanka Faylka Fog ee Cage

Ujeedada nidaamka

Taageerada gelitaanka fog ee faylasha kombiyuutarada shabakada Nidaamku "ku dhawaad" wuxuu taageeraa dhammaan hawlaha faylalka aasaasiga ah (abuurista, tirtirka, akhrinta, qorista, iwm.) iyadoo la isweydaarsanayo macaamil ganacsi (farriimo) iyadoo la adeegsanayo nidaamka TCP.

Meelaha arjiga

Shaqaynta nidaamku waxay wax ku ool u tahay xaaladaha soo socda:

  • Codsiyada asalka ah ee mobilada iyo aaladaha guntanka ah (telefoonada casriga ah, nidaamyada kontoroolka dusha sare, iwm.) kuwaas oo u baahan in si degdeg ah loo galo faylasha server-yada fog iyadoo ay suurtagal tahay carqalad ku meel gaar ah ee isgaadhsiinta (oo khadka tooska ah lagu sii socdo);
  • DBMS-yada raran, haddii habaynta su'aalaha lagu fuliyo server-yada qaarkood, iyo kaydinta xogta kuwa kale;
  • ee shabakadaha shirkadaha ee loo qaybiyey ururinta iyo habaynta macluumaadka, u baahan xog isweydaarsiga xawaaraha sare leh, dib-u-celinta iyo isku halaynta;
  • Nidaamyo adag oo leh qaab-dhismeedka microservice, halkaas oo dib u dhigista macluumaadka u dhexeeya cutubyada ay yihiin kuwo muhiim ah.

Qaab-dhismeedka

Nidaamka Cage (waxaa jira dhaqan-galin - nooca beta ee Python 3.7 ee Windows) waxaa ku jira laba qaybood oo waaweyn:

  1. Cageserver - barnaamijka server-ka faylka (xirmo shaqo ah) oo ku shaqeeya kombiyuutarada shabakada kuwaas oo faylalkoodu u baahan yihiin marin fog;
  2. fasalka Cage oo leh maktabad habab loogu talagalay software-ka macmiilka, oo fududeynaya codeeynta isdhexgalka server-yada.

Isticmaalka nidaamka dhinaca macmiilka

Hababka fasalka Cage waxay beddelaan hawlgallada nidaamka faylka "caadiga ah" ee caadiga ah: abuurid, furid, xidhidh, tirtirid faylasha, iyo sidoo kale akhrinta/qorista xogta ee qaabka laba-geesoodka ah (oo tilmaamaya booska iyo cabbirka xogta). Fikrad ahaan, hababkani waxay ku dhow yihiin hawlaha faylka ee luqadda C, halkaas oo furitaanka / xidhitaanka faylasha lagu sameeyo "kanaalka" soo-gelinta / soo-saarka.

Si kale haddii loo dhigo, barnaamij-sameeyaha kuma shaqeeyo hababka walxaha "faylka" (class _iyo Python), laakiin leh hababka fasalka Cage.

Marka tusaale ahaan shayga Cage la abuuro, waxa ay samaysaa xidhiidh bilow ah oo ay la yeelato serfarka (ama dhawr adeegayaal), waxa oggolaada aqoonsiga macmiilka, oo waxa ay helaysaa xaqiijin leh nambarka dekeddu u go'an tahay ee dhammaan hawlaha faylalka. Marka shayga Cage la tirtiro, waxa ay faraysaa adeegaha in uu joojiyo xidhiidhka oo xidho faylalka. Joojinta isgaarsiinta sidoo kale waxaa bilaabi kara adeegayaasha laftooda.

Nidaamku wuxuu kordhiyaa wax-akhrinta/qorista waxqabadka iyadoo la buunbuuninayo jajabyada faylalka inta badan la isticmaalo ee barnaamijyada macmiilka ee kaydka RAM (buffer).
Software-ka macmiilku wuxuu isticmaali karaa tiro kasta oo walxaha qafiska ah oo leh goobo kala duwan (xajmiga xusuusta kaydinta, cabbirka xannibaadda marka la beddelanayo serverka, iwm.).

Shayga kaliya ee Cage wuxuu la xiriiri karaa faylal badan oo ku yaal servero badan. Xuduudaha isgaarsiinta (Ciwaanka IP-ga ama server-ka DNS, dekedda weyn ee oggolaanshaha, jidka iyo magaca faylka) ayaa la cayimay marka la abuurayo shayga.

Maadaama shay kasta oo Cage uu ku shaqayn karo faylal badan isku mar, meel xusuusta la wadaago ayaa loo isticmaalaa kaydinta Cabbirka kaydka - tirada bogagga iyo cabbirkooda, ayaa loo dejiyay si firfircoon marka la abuurayo shayga qafiska. Tusaale ahaan, kaydka 1 GB waa 1000 bog oo midkiiba 1 MB ah, ama 10 kun oo bog oo midkiiba 100 KB ah, ama 1 milyan bog oo midkiiba 1 KB ah. Doorashada cabbirka iyo tirada bogagga waa hawl gaar ah kiis kasta oo codsi ah.

Waxaad isticmaali kartaa walxo badan oo Cage isku mar ah si aad u qeexdo goobaha xusuusta kaydinta ee kala duwan taas oo ku xidhan sida macluumaadka loo galo faylal kala duwan. Sida aasaasiga ah, algorithm-ka ugu fudud ee buffering ayaa la isticmaalaa: ka dib marka qadarka xusuusta la dhammeeyo, bogag cusub ayaa barakiciya kuwii hore iyadoo loo eegayo mabda'a hawlgabka oo leh tirada ugu yar ee helitaanka. Buffering ayaa si gaar ah waxtar u leh xaaladda sinnaan la'aanta (macnaha tirakoobka) gelitaanka la wadaago, marka hore, faylal kala duwan, iyo, marka labaad, jajabyada fayl kasta.

Fasalka Cage wuxuu taageeraa I / O ma aha oo kaliya cinwaanada xogta (oo muujinaya booska iyo dhererka array, "beddelka" hawlgallada nidaamka faylka), laakiin sidoo kale heer hoose, "jir" - lambarrada bogga ee xusuusta kaydinta.

Shaqada asalka ah waxaa lagu taageeraa walxaha Cage "hibernation" ("hurdo") - waxay noqon karaan "burbur" (tusaale ahaan, haddii ay dhacdo luminta xiriirka server-yada, ama marka codsiga la joojiyo, iwm.) galka qashinka maxaliga ah ee dhinaca macmiilka oo si degdeg ah looga soo celiyo faylkan (ka dib markii isgaadhsiinta dib loo bilaabo, markaad dib u bilowdo codsiga). Tani waxay suurtogal ka dhigaysaa in si weyn loo yareeyo taraafikada marka la hawlgelinayo barnaamijka macmiilka ka dib markaad si ku meel gaar ah u tagto "offline", sababtoo ah jajabyada faylalka inta badan la isticmaalo waxay horeyba ugu jiri doonaan kaydka.

Cage waa qiyaastii 3600 oo khadadka kood.

Mabaadi'da dhismaha server-ka

Adeegayaasha faylka Cageserver waxaa lagu maamuli karaa tiro aan loo meel dayin oo dekedo ah, mid ka mid ah ("main") waxaa loo isticmaalaa oo kaliya oggolaanshaha dhammaan macaamiisha, inta soo hartay waxaa loo isticmaalaa isweydaarsiga xogta. Barnaamijka server-ka Cage wuxuu u baahan yahay kaliya Python. Waxaa barbar socda, kumbiyuutarka leh server-ka faylka ayaa qaban kara shaqo kasta oo kale.

Seerfarku marka hore waxa uu u bilaabmaa ururinta laba hab oo waaweyn:

  1. "Xiriirka" - hab lagu fuliyo hawlaha aasaasida xidhiidhka macaamiisha iyo joojinta hindisaha serverka;
  2. "Hawlgallada" - habka fulinta hawlaha (hawlaha) macaamiisha si ay ula shaqeeyaan faylasha, iyo sidoo kale xiritaanka fadhiyada isgaarsiinta ee ku salaysan amarada macmiilka.

Labada hab-raac lama wada xidhiidhin waxaana loo habeeyey siddooyin aan dhammaad lahayn oo qaabilaadda iyo dirida fariimaha ku salaysan safafka geeddi-socodka badan, walxaha wakiillada, qufullada iyo saldhigyada.
Habka isku xidhka waxa uu u qoondeeyaa deked macmiil kasta si uu u helo oo u gudbiyo xogta. Tirada dekedaha waxa la dejiyaa marka uu adeeguhu bilaabo. Khariidaynta u dhaxaysa dekedaha iyo macaamiisha waxa lagu kaydiyaa xusuusta proxy-ga la wadaago hab-socodka.

Habka hawlgalku waxa uu taageeraa wadaaga khayraadka faylka si macaamiil badan oo kala duwan u wadaagaan (is barbar dhig, maadaama gelitaanka ay gacanta ku hayaan quful) akhri xogta hal fayl haddii tan la oggolaaday markii hore uu furay macmiilka "ugu horreeya".

Nidaaminta amarada si loo abuuro/tirto/furto/xiro faylalka server-ka waxaa lagu fuliyaa habka "Howlgalka" laftiisa si adag iyadoo la adeegsanayo nidaamka-hoosaadka faylka ee OS-ka.

Si guud ahaan loo dedejiyo wax-akhriska/qorista, hawlgalladan waxa lagu fuliyaa dunta ay dhaleen habka “Hawl-galyadu”. Tirada dunta badanaa waxay la mid tahay tirada faylasha furan. Hawlaha akhriska/qorista ee macaamiisha waxaa loo gudbiyaa safka guud oo dunta ugu horreysa ee bilaashka ah ayaa hawsha ka qaadata madaxeeda. Caqliga gaarka ah wuxuu kuu ogolaanayaa inaad tirtirto hawlaha dib u qorista xogta ee RAM ee server-ka.

Nidaamku wuxuu la socdaa dhaqdhaqaaqa macmiilka wuxuuna joojiyaa u adeegida iyaga oo raacaya amarada ama marka wakhtiga hawl-qabad la'aanta la dhaafo.

Si loo hubiyo isku halaynta, Cageserver wuxuu hayaa diiwaannada dhammaan wax kala iibsiga. Hal qoraal oo guud waxa uu ka kooban yahay nuqullo fariimo ah oo ka yimi macaamiisha leh hawlo ay ku abuuraan/furan/dilaan/magacaan/ tirtiraan faylasha. Log gaar ah ayaa loo sameeyay fayl kasta oo shaqaynaya, kaas oo nuqullada fariimaha leh hawlaha akhriska iyo qorista xogta ee faylkan shaqada lagu duubayo, iyo sidoo kale xog qoraal ah (cusub) iyo xog ururin la burburiyay intii lagu jiray qoraalka (qorista). xog cusub "ku kor" kuwii hore)).

Diiwaanadani waxay bixiyaan awood ay ku soo celiyaan isbeddelada cusub ee kaydinta iyo dib u soo celinta nuxurka hadda jira meel hore.

Cageserver waa ilaa 3100 khadadka kood.

Nidaamka Galitaanka Faylka Fog ee Cage

Daahfurka barnaamijka serverka faylka Cageserver

Markaad bilaabayso, wada hadalka waxaad u baahan tahay inaad qeexdo:
- dekedda weyn ee oggolaanshaha;
- tirada dekedaha ee wax kala beddelashada macaamilka macaamiisha la oggol yahay (laga bilaabo 1 ama ka badan, barkadda tirooyinka waxay ka bilaabmaan mid ku xiga lambarka dekedda weyn).

Isticmaalka fasalka qafiska

fasalka qafis.Cage( cage_name="", pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, wake=Been, cache_file="" )

Walax ayaa laga sameeyay fasalkan kuwaas oo la falgala server-yada faylka oo ay ku jiraan xusuusta kaydinta.

xuduudaheedu

  • magaca qafiska(str) - Magaca shardiga ah ee shayga, kaas oo loo isticmaalo in lagu aqoonsado macaamiisha dhinaca server-ka
  • cabbirka bogga(INT) - cabbirka hal bog ee xusuusta kaydinta (bytes)
  • tirooyinka(INT) - tirada bogagga xusuusta kaydinta
  • maxstrlen(INT) - dhererka ugu badan ee xadhigga byte ee qorista iyo akhrinta hawlgallada
  • server_ip(dict) - qaamuus leh ciwaannada adeegayaasha la isticmaalay, halkaas oo furuhu yahay magaca shardiga ah ee server-ka (Id serverka gudaha codsiga), qiimuhuna waa xadhig leh ciwaanka: "IP address: port" ama "DNS: dekedda" (isbarbardhigga magacyada iyo cinwaannada dhabta ah waa ku meel gaar, way beddeli kartaa)
  • sug(INT) - waqtiga sugitaanka jawaabta server-ka marka la helayo dekedaha (ilbiriqsi gudahood)
  • soo jeedo(boolean) - calanka sida shayga loo abuuray (Beenta - haddii shay cusub la abuuro. True - haddii shay laga abuuray mid hore u "burburay" - iyadoo la adeegsanayo hawlgalka "hibernation", False by default)
  • kayd_faylka(str) - Magaca faylka ee hibernation

Dariiqooyinka

Qafisfile_abuur( server, waddo ) – samee fayl cusub

Qafisfile_rename( server, waddo, new_name ) – Magaca beddel faylka

Qafisfile_ka saar( server, waddo) - tirtir faylka

Qafisfuran( server, waddo, mod ) - fayl furan

Soo noqda fchannel lambarka kanaalka. Halbeegga ka dhanka ah - kani waa qaabka furitaanka faylka: "wm" - gaar ah (akhri/qor), "rs" - akhri-kaliya, oo loo wadaago oo keliya akhrinta macaamiisha kale, "ws" - akhri/qorista, oo loo wadaago kaliya akhrinta macaamiisha kale.

Qafisku dhow (fchannel) – xidh faylka

Qafisku qor (fchannel, bilow, xog ) – u qor xardhida byte fayl

Qafisakhri (fchannel, bilow, len_data ) – akhri xarriiqda byte ee faylka

Qafisdhig_bogag ( fchannel ) - "ku riix" kaydiyaha ilaa server-ka dhammaan bogagga kanaalka la cayimay ee wax laga beddelay. Waxaa loo adeegsadaa dhibcahaas algorithm marka aad u baahan tahay inaad hubiso in dhammaan hawlgallada kanaalka ay jir ahaan ku kaydsan yihiin faylka server-ka.

Qafisriix_dhammaan () - "ka riixaya" kaydiyaha ilaa serverka dhammaan boggaga kanaalada oo dhan tusaale ahaan fasalka Cage ee wax laga beddelay. Waxa loo isticmaalaa marka aad u baahan tahay si aad u hubiso in dhammaan hawlaha kanaalada oo dhan ay ku kaydsan yihiin server-ka.

Source: www.habr.com

Add a comment