Sistemụ Nweta Faịlụ dịpụrụ adịpụ

Nzube nke usoro

Nkwado maka ịnweta faịlụ dịpụrụ adịpụ na kọmputa na netwọk. Usoro "ihe fọrọ nke nta ka ọ bụrụ" na-akwado ọrụ faịlụ niile (mmepụta, ihichapụ, ịgụ akwụkwọ, ide ihe, wdg) site n'ịgbanwe azụmahịa (ozi) site na iji usoro TCP.

Ngwa

Ọrụ nke usoro ahụ dị irè n'ọnọdụ ndị a:

  • na ngwa ala maka ekwentị mkpanaaka na ngwaọrụ agbakwunyere (smartphone, sistemụ njikwa on-board, wdg) nke chọrọ ịnweta faịlụ ngwa ngwa na sava dịpụrụ adịpụ n'agbanyeghị nkwụsịtụ nwa oge na nzikọrịta ozi (na ịga offline);
  • na DBMS ndị eburula ibu, ọ bụrụ na a na-eme nhazi ajụjụ na ụfọdụ sava, na-echekwa data na ndị ọzọ;
  • na netwọk ụlọ ọrụ na-ekesa maka ịnakọta na nhazi ozi, na-achọ mgbanwe data dị elu, redundancy na ntụkwasị obi;
  • na usoro mgbagwoju anya na microservice architecture, ebe igbu oge na mgbanwe nke ozi n'etiti modul dị oké egwu.

Ọdịdị

Usoro Cage (enwere mmejuputa - ụdị beta na Python 3.7 na Windows) gụnyere akụkụ abụọ:

  1. Ihe nkesa - mmemme ihe nkesa faịlụ (ngwugwu ọrụ) na-arụ ọrụ na kọmpụta na netwọkụ nke faịlụ ya chọrọ ohere dịpụrụ adịpụ;
  2. klas onu ya na ọbá akwụkwọ nke ụzọ maka ngwa ndị ahịa, na-eme ka nzuzo nke mmekọrịta na sava dị mfe.

Iji usoro n'akụkụ ndị ahịa

Usoro nke klaasị Cage na-edochi arụ ọrụ sistemụ faịlụ “na-emekarị”: okike, mmeghe, mmechi, ihichapụ faịlụ, yana ọgụgụ / ide data n'ụdị ọnụọgụ abụọ (na-egosi ọnọdụ na nha data). N'echiche, ụzọ ndị a dị nso na ọrụ faịlụ nke asụsụ C, ebe mmeghe / mmechi faịlụ na-eme "na ọwa" nke ntinye / mmepụta.

N'ikwu ya n'ụzọ ọzọ, onye mmemme anaghị arụ ọrụ na usoro nke ihe "faịlụ" (klas _io na Python), mana yana usoro nke klas Cage.

Mgbe emepụtara ihe atụ nke ihe Cage, ọ na-ewepụta njikọ mbụ na sava (ma ọ bụ ọtụtụ sava), nke Id Client nyere ikike, wee nata nkwenye na nọmba ọdụ ụgbọ mmiri raara onwe ya nye maka ọrụ faịlụ niile. Mgbe ehichapụ ihe Cage, ọ na-agwa ihe nkesa ahụ ka ọ kwụsị ịkparịta ụka ma mechie faịlụ. Sava n'onwe ha nwekwara ike ịmalite nkwụsị nkwurịta okwu.

Sistemu na-eme ka agụ/ dee arụmọrụ site n'ịkwado iberibe faịlụ ndị a na-ejikarị eme ihe nke mmemme ndị ahịa na cache RAM (nchekwa).
Akụrụngwa ndị ahịa nwere ike iji ọnụọgụ ọ bụla nke ihe Cage nwere ntọala dị iche iche (nha nchekwa nchekwa, nha ngọngọ mgbe ị na-egbanwere ya na ihe nkesa, wdg).

Otu ihe Cage nwere ike iji ọtụtụ faịlụ na-ekwurịta okwu na ọtụtụ sava. A na-akọwapụta oke nkwukọrịta (adreesị IP ma ọ bụ ihe nkesa DNS, ọdụ ụgbọ mmiri maka ikike, ụzọ na aha faịlụ) mgbe ị na-eke ihe.

Ebe ọ bụ na ihe ọ bụla Cage nwere ike iji ọtụtụ faịlụ rụọ ọrụ n'otu oge, a na-eji oghere ebe nchekwa ekekọrịtara maka nchekwa. Ogo cache - ọnụọgụ ibe na nha ha, ka edobere ike mgbe ị na-eke ihe Cage. Dịka ọmụmaatụ, cache 1 GB bụ ibe 1000 nke 1 MB nke ọ bụla, ma ọ bụ 10 puku ibe nke 100 KB ọ bụla, ma ọ bụ 1 nde ibe nke 1 KB nke ọ bụla. Ịhọrọ nha na ọnụ ọgụgụ nke ibe bụ ọrụ a kapịrị ọnụ maka ikpe ngwa ọ bụla.

Ị nwere ike iji ọtụtụ ihe Cage n'otu oge kọwaa ntọala ebe nchekwa nchekwa dị iche iche dabere na otu esi enweta ozi na faịlụ dị iche iche. Dị ka ihe bụ isi, a na-eji algọridim dị mfe buffering: mgbe ike gwụchara oke nchekwa, ibe ọhụrụ na-akwapụ ndị ochie dị ka ụkpụrụ ezumike nká na ọnụ ọgụgụ kacha nta nke ohere. Ndokwa na-adị irè karịsịa n'ihe gbasara ohere na-ezighi ezi (n'echiche ọnụ ọgụgụ) nkekọrịta, nke mbụ, na faịlụ dị iche iche, na, nke abụọ, na iberibe faịlụ ọ bụla.

Klas Cage na-akwado I / O ọ bụghị naanị site na adreesị data (na-egosi ọnọdụ na ogologo nke nhazi ahụ, "dochie" ọrụ sistemụ faịlụ), kamakwa na ala, "anụ ahụ" - site na nọmba peeji na ebe nchekwa nchekwa.

A na-akwado ọrụ izizi maka ihe Cage "hibernation" ("ụra") - ha nwere ike "dabere" (dịka ọmụmaatụ, ọ bụrụ na enweghị njikọ na sava, ma ọ bụ mgbe akwụsịre ngwa ahụ, wdg) n'ime faịlụ mkpofu mpaghara n'akụkụ ndị ahịa wee weghachite ngwa ngwa site na. faịlụ a (mgbe emegharịrị nkwurịta okwu, mgbe ịmalitegharịa ngwa ahụ). Nke a na-eme ka o kwe omume ibelata okporo ụzọ nke ukwuu mgbe ị na-eme ka mmemme onye ahịa rụọ ọrụ mgbe ọ gachara nwa oge "anọghị n'ịntanetị," ebe ọ bụ na iberibe faịlụ ndị a na-ejikarị eme ihe ga-adịrịrị na cache.

Cage dị ihe dị ka ahịrị 3600 nke koodu.

Ụkpụrụ nke iwu ihe nkesa

Enwere ike ịgbasa sava faịlụ Cageserver na ọnụ ọgụgụ ọdụ ụgbọ mmiri na-ezighi ezi, otu n'ime ha (“isi”) na-eji naanị maka ikike nke ndị ahịa niile, a na-eji ndị ọzọ maka mgbanwe data. Mmemme nkesa Cage chọrọ naanị Python. N'otu aka ahụ, kọmputa nwere ihe nkesa faịlụ nwere ike ịrụ ọrụ ọ bụla ọzọ.

Ihe nkesa na-amalite na mbụ dịka nchịkọta nke usoro abụọ bụ isi:

  1. "njikọ" - usoro maka ịrụ ọrụ nke ịmepụta nkwurịta okwu na ndị ahịa na ịkwụsị ya na ntinye nke ihe nkesa;
  2. "Ọrụ" - usoro maka ịrụ ọrụ (ọrụ) nke ndị ahịa na-arụ ọrụ na faịlụ, yana maka imechi nnọkọ nkwurịta okwu dabere na iwu ndị ahịa.

A naghị emekọrịta usoro abụọ a ma hazie ya dị ka loops na-adịghị agwụ agwụ nke ịnata na izipu ozi dabere na ahịrị ọtụtụ usoro, ihe nnọchi anya, mkpọchi na sọket.
Usoro Njikọ na-ekenye ọdụ ụgbọ mmiri maka onye ahịa ọ bụla ịnata na nyefee data. A na-edozi ọnụọgụ ọdụ ụgbọ mmiri mgbe ihe nkesa malitere. A na-echekwa maapụ n'etiti ọdụ ụgbọ mmiri na ndị ahịa na ebe nchekwa proxy na-ekekọrịta interprocess.

Usoro ọrụ na-akwado ikesa akụrụngwa faịlụ ka ọtụtụ ndị ahịa dị iche iche nwee ike ịkekọrịta (nhata-yiri, ebe ọ bụ na a na-achịkwa ohere site na mkpọchi) gụọ data sitere na otu faịlụ ma ọ bụrụ na ekwere nke a mgbe onye ahịa "mbụ" meghere ya na mbụ.

A na-eme nhazi nke iwu iji mepụta / ihichapụ / mepee / mechie faịlụ na ihe nkesa na usoro "Ọrụ" n'onwe ya na-eji usoro faịlụ nke OS OS.

Iji mee ka ịgụ akwụkwọ/ọdịde dị ngwa ngwa, a na-arụ ọrụ ndị a n'ime eriri nke usoro "ọrụ" kwalitere. Ọnụọgụ eri na-abụkarị ọnụọgụ faịlụ mepere emepe. A na-edobe ọrụ ịgụ / dee ọrụ sitere n'aka ndị ahịa na kwụ n'ahịrị n'ozuzu na eriri mbụ efu na-ewepụ ọrụ ahụ n'isi ya. Echiche pụrụ iche na-enye gị ohere iwepụ ọrụ idegharị data na RAM nke ihe nkesa.

Usoro ọrụ ahụ na-enyocha ọrụ ndị ahịa wee kwụsị ijere ha ozi n'iwu ha ma ọ bụ mgbe agafeela oge arụghị ọrụ.

Iji hụ na ntụkwasị obi, Cageserver na-edobe ndekọ azụmahịa niile. Otu ndekọ izugbe nwere nnomi ozi sitere n'aka ndị ahịa nwere ọrụ imepụta/imeghe/ nyegharịa aha/ihichapụ faịlụ. A na-emepụta ndekọ dị iche iche maka faịlụ ọ bụla na-arụ ọrụ, nke a na-edekọ akwụkwọ ozi nwere ọrụ maka ịgụ na ide data na faịlụ a na-arụ ọrụ, yana usoro ederede (ọhụrụ) na data nke mebiri emebi n'oge ederede (ederede). data ọhụrụ "n'elu" nke ochie)).

Ndekọ ndekọ ndị a na-enye ikike iweghachi mgbanwe ọhụrụ na nkwado ndabere na mpaghara ma tụgharịa ọdịnaya dị ugbu a n'otu ebe n'oge gara aga.

Cageserver dị ihe dịka ahịrị koodu 3100.

Sistemụ Nweta Faịlụ dịpụrụ adịpụ

Ịmalite mmemme nkesa faịlụ Cageserver

Mgbe ị na-amalite, na mkparịta ụka ị ga-akọwapụta:
- isi ọdụ ụgbọ mmiri maka ikike;
- ọnụ ọgụgụ nke ọdụ ụgbọ mmiri maka mgbanwe azụmahịa na ndị ahịa ikike (site na 1 ma ọ bụ karịa, ọdọ mmiri nke nọmba na-amalite site na nke na-esote nọmba ọdụ ụgbọ mmiri).

Iji Klas Cage

klas onu.onu( cage_name="", pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, edemede=Ụgha, cache_file="" )

A na-emepụta ihe sitere na klaasị a na-emekọrịta ihe na sava faịlụ ma nwee ebe nchekwa nchekwa.

parameters

  • onu_aha(str) - aha ọnọdụ nke ihe ahụ, nke a na-eji achọpụta ndị ahịa n'akụkụ ihe nkesa
  • ibe(Int) - nha nke otu ibe nke ebe nchekwa nchekwa (na bytes)
  • ọnụọgụgụ(Int) - ọnụ ọgụgụ nke ibe ebe nchekwa
  • maxstrlen(Int) - ogologo kachasị ogologo nke eriri byte na ọrụ ide na ịgụ
  • server_ip(kwuo) - akwụkwọ ọkọwa okwu nwere adreesị nke sava ndị ejiri, ebe igodo bụ aha ọnọdụ nke ihe nkesa (ID nkesa n'ime ngwa), uru ya bụ eriri nwere adreesị: "IP address: port" ma ọ bụ "DNS: Port" (ntụnyere aha na ezigbo adreesị bụ nwa oge, ọ nwere ike ịgbanwe)
  • chere(Int) - echere oge nzaghachi sitere na ihe nkesa mgbe ị na-anata ọdụ ụgbọ mmiri (na sekọnd)
  • -amụ anya(boolean) - ọkọlọtọ nke otú e si emepụta ihe (ụgha - ọ bụrụ na e kere ihe ọhụrụ, ezi - ọ bụrụ na emepụtara ihe site na nke “dabiri” mbụ - na-eji ọrụ “hibernation”, ụgha na ndabara)
  • cache_file(str) - aha faịlụ maka hibernation

Ụzọ

Ụlọ.faịlụ_create( ihe nkesa, ụzọ ) - mepụta faịlụ ọhụrụ

Ụlọ.file_rename( ihe nkesa, ụzọ, new_name ) - nyegharịa faịlụ ahụ aha

Ụlọ.faịlụ_wepu( ihe nkesa, ụzọ) - hichapụ faịlụ

Ụlọ.-emeghe( ihe nkesa, ụzọ, mod ) - mepee faịlụ

Laghachi fchannel nọmba ọwa. Oke mod - nke a bụ ọnọdụ mmeghe faịlụ: "wm" - nanị (gụọ/dee), "rs" - naanị ọgụgụ, ma kesaa naanị maka ndị ahịa ndị ọzọ na-agụ, "ws" - gụọ / dee, ma kesaa naanị maka ịgụ ya. ndị ọzọ ahịa.

Ụlọ.nso (fchannel) - mechie faịlụ

Ụlọ.dee (fchannel, malite, data ) - dee eriri byte na faịlụ

Ụlọ.agụ (fchannel, malite, len_data ) – gụọ eriri byte site na faịlụ

Ụlọ.tinye_peeji ( fchannel ) – “ịkwanye” site na ihe nchekwa na sava ahụ ibe niile nke ọwa akọwapụtara nke emezigharịrị. A na-eji ya na isi ihe ndị ahụ na algọridim mgbe ịchọrọ ijide n'aka na arụ ọrụ niile dị na ọwa na-echekwa n'anụ ahụ na faịlụ na ihe nkesa.

Ụlọ.push_niile () - "na-akwali" site na nchekwa na ihe nkesa na ibe niile nke ọwa niile maka ihe atụ nke klas Cage nke emezigharịrị. Ejiri ya mgbe ịchọrọ ijide n'aka na echekwara ọrụ niile na ọwa niile na sava ahụ.

isi: www.habr.com

Tinye a comment