Cage Remote File Access System

Pahuhopu ʻōnaehana

Kākoʻo no ke komo mamao i nā faila ma nā kamepiula ma ka pūnaewele. Kākoʻo ka ʻōnaehana "kokoke" i nā hana faila maʻamau (hana, holoi, heluhelu, kākau, a me nā mea ʻē aʻe) ma o ka hoʻololi ʻana i nā hana (mau memo) me ka hoʻohana ʻana i ka protocol TCP.

Nā noi

Pono ka hana o ka ʻōnaehana i nā hihia penei:

  • i nā noi ʻōiwi no nā polokalamu kelepona a i hoʻopili ʻia (smartphones, nā ʻōnaehana hoʻokele ma luna o ka papa, a me nā mea ʻē aʻe) e koi wikiwiki i nā faila ma nā kikowaena mamao i mua o ka hiki ke hoʻopau i ke kamaʻilio ʻana (me ka hele ʻana i waho);
  • i nā DBMS i hoʻouka ʻia, inā hoʻokō ʻia ka hana nīnau ma kekahi mau kikowaena, a mālama ʻia ka mālama ʻikepili ma luna o nā mea ʻē aʻe;
  • i nā ʻoihana hui puʻupuʻu no ka hōʻiliʻili ʻana a me ka hoʻoili ʻana i ka ʻike, e koi ana i ka hoʻololi ʻana i ka wikiwiki kiʻekiʻe, redundancy a me ka hilinaʻi;
  • i nā ʻōnaehana paʻakikī me ka hoʻolālā microservice, kahi mea koʻikoʻi ka lohi o ka hoʻololi ʻana i ka ʻike ma waena o nā modula.

'ole

ʻO ka ʻōnaehana Cage (aia kahi hoʻokō - beta version ma Python 3.7 ma Windows) ʻelua mau ʻāpana nui:

  1. Cageserver - he polokalamu kikowaena waihona (kahi pūʻolo o nā hana) e holo ana ma nā kamepiula ma ka pūnaewele nona nā faila e pono ai ke komo mamao;
  2. класс Wai me kahi waihona o nā ʻano no ka lako polokalamu mea kūʻai aku, e hoʻomaʻamaʻa i ka coding o ka launa pū ʻana me nā kikowaena.

Ke hoʻohana nei i ka ʻōnaehana ma ka ʻaoʻao o ka mea kūʻai aku

Hoʻololi nā ʻano o ka papa Cage i ka hana maʻamau, "maʻamau" ʻōnaehana faila: hana, wehe, pani, holoi faila, a me heluhelu/kākau ʻikepili ma ke ʻano binary (e hōʻike ana i ke kūlana a me ka nui o ka ʻikepili). ʻO ka manaʻo, ua kokoke kēia mau ʻano i nā hana faila o ka ʻōlelo C, kahi i hana ʻia ai ka wehe / pani ʻana i nā faila "ma nā kahawai" o ka hoʻokomo / puka.

I nā huaʻōlelo ʻē aʻe, ʻaʻole hana ka mea papahana me nā ʻano o nā mea "file" (class _io ma Python), akā me nā ʻano o ka papa Cage.

Ke hana ʻia kahi laʻana o kahi mea Cage, hoʻokumu ia i kahi pilina mua me kahi kikowaena (a i ʻole kekahi mau kikowaena), ua ʻae ʻia e ka Client Id, a loaʻa iā ia ka hōʻoia me kahi helu awa i hoʻolaʻa ʻia no nā hana faila. Ke holoi ʻia kahi mea Cage, aʻo ia i ke kikowaena e hoʻōki i ke kamaʻilio ʻana a pani i nā faila. Hiki ke hoʻomaka ʻia ka hoʻopau ʻana o ke kamaʻilio e nā kikowaena ponoʻī.

Hoʻomaikaʻi ka ʻōnaehana i ka hana heluhelu a kākau ʻana ma o ka hoʻopaʻa ʻana i nā ʻāpana faila i hoʻohana pinepine ʻia o nā polokalamu mea kūʻai aku ma ka RAM cache (buffer).
Hiki i nā polokalamu kelepona ke hoʻohana i kekahi helu o nā mea Cage me nā hoʻonohonoho like ʻole (ka nui o ka hoʻomanaʻo hoʻomanaʻo, ka nui o ka poloka i ka wā e hoʻololi ai me ke kikowaena, etc.).

Hiki i kahi mea Cage ke kamaʻilio me nā faila he nui ma nā kikowaena lehulehu. Hōʻike ʻia nā ʻāpana kamaʻilio ( IP address a i ʻole DNS server, awa nui no ka ʻae ʻana, ala a me ka inoa faila) i ka wā e hana ai i ka mea.

No ka mea hiki i kēlā me kēia mea Cage ke hana me nā faila he nui i ka manawa like, hoʻohana ʻia ka wahi hoʻomanaʻo like no ka buffering. ʻO ka nui o ka cache - ka helu o nā ʻaoʻao a me ko lākou nui, ua hoʻonohonoho ikaika ʻia i ka wā e hana ana i kahi mea Cage. No ka laʻana, he 1 mau ʻaoʻao o 1000 MB kēlā me kēia, a i ʻole 1 tausani ʻaoʻao o 10 KB kēlā me kēia, a i ʻole 100 miliona ʻaoʻao o 1 KB kēlā me kēia. ʻO ke koho ʻana i ka nui a me ka helu o nā ʻaoʻao he hana kikoʻī no kēlā me kēia hihia noi.

Hiki iā ʻoe ke hoʻohana i nā mea Cage he nui i ka manawa like e wehewehe i nā hoʻonohonoho hoʻomanaʻo buffer like ʻole ma muli o ke ʻano o ka loaʻa ʻana o ka ʻike ma nā faila like ʻole. Ma ke ʻano he kumu, hoʻohana ʻia ka algorithm buffering maʻalahi: ma hope o ka pau ʻana o ka nui o ka hoʻomanaʻo, hoʻoneʻe ʻia nā ʻaoʻao hou i nā mea kahiko e like me ke kumu o ka hoʻomaha ʻana me ka liʻiliʻi o ka hiki. ʻOi aku ka maikaʻi o ka hoʻopaʻa ʻana ma ke ʻano o ka loaʻa ʻole ʻana (ma ke ʻano helu helu), ka mua, i nā faila like ʻole, a, ʻo ka lua, i nā ʻāpana o kēlā me kēia faila.

Kākoʻo ka papa Cage i ka I/O ʻaʻole wale ma nā helu helu ʻikepili (e hōʻike ana i ke kūlana a me ka lōʻihi o ka hoʻonohonoho, "hoʻololi" i nā hana ʻōnaehana faila), akā ma kahi haʻahaʻa, "kino" pae - ma nā helu ʻaoʻao i ka hoʻomanaʻo buffer.

Kākoʻo ʻia ka hana kumu no nā mea Cage "hibernation" ("moe") - hiki iā lākou ke "hāʻule" (no ka laʻana, i ka hopena o ka nalowale o ka pilina me nā kikowaena, a i ka wā i hoʻōki ʻia ai ka noi, a me nā mea ʻē aʻe) i loko o kahi faila dump kūloko ma ka ʻaoʻao o ka mea kūʻai aku a hoʻihoʻi koke mai. kēia faila (ma hope o ka hoʻomaka ʻana o ke kamaʻilio ʻana, ke hoʻomaka hou ʻoe i ka noi). ʻO kēia ka mea hiki ke hōʻemi nui i ke kaʻa i ka wā e hoʻāla ai i ka polokalamu mea kūʻai aku ma hope o ka hele ʻana i ka "pahemo," no ka mea aia nā ʻāpana faila i hoʻohana pinepine ʻia i loko o ka cache.

ʻO ka Cage ma kahi o 3600 laina o ke code.

Nā loina o ka hana kikowaena

Hiki ke holo ʻia nā kikowaena faila Cageserver me ka helu ʻole o nā awa, hoʻohana ʻia kekahi o ia ("main") no ka ʻae ʻana o nā mea kūʻai aku a pau, hoʻohana ʻia ke koena no ka hoʻololi ʻikepili. Pono ka polokalamu kikowaena Cage iā Python wale nō. Ma ka like, hiki i ke kamepiula me ka waihona waihona ke hana i kekahi hana ʻē aʻe.

Hoʻomaka mua ke kikowaena ma ke ʻano he hōʻiliʻili o nā kaʻina hana nui ʻelua:

  1. "Hoʻohui" - he kaʻina hana no ka hana ʻana i ka hoʻokumu ʻana i ka kamaʻilio me nā mea kūʻai aku a hoʻopau iā ia ma ka hoʻomaka ʻana o ke kikowaena;
  2. "Nā hana" - he kaʻina hana no ka hana ʻana i nā hana (nā hana) o nā mea kūʻai aku e hana me nā faila, a me ka pani ʻana i nā kau kamaʻilio e pili ana i nā kauoha a ka mea kūʻai aku.

ʻAʻole hoʻonohonoho ʻia nā kaʻina ʻelua a ua hoʻonohonoho ʻia e like me nā puka lou pau ʻole o ka loaʻa ʻana a me ka hoʻouna ʻana i nā leka e pili ana i nā queues multiprocess, nā mea koho, nā laka a me nā kumu.
Hoʻokaʻawale ke kaʻina hana i kahi awa no kēlā me kēia mea kūʻai aku e loaʻa a hoʻouna i ka ʻikepili. Hoʻonohonoho ʻia ka helu o nā awa i ka wā e hoʻomaka ai ke kikowaena. Mālama ʻia ka palapala ʻāina ma waena o nā awa a me nā mea kūʻai aku i loko o ka hoʻomanaʻo proxy-shared proxy.

Kākoʻo ke kaʻina hana i ke kaʻana like ʻana i nā kumuwaiwai faila i hiki i nā mea kūʻai like ʻole ke kaʻana like (like-parallel, no ka mea, hoʻomalu ʻia ke komo ʻana e nā laka) heluhelu i ka ʻikepili mai kahi faila inā ʻae ʻia kēia i ka wā i wehe mua ʻia ai e ka mea kūʻai aku "mua".

Hana ʻia ka hana ʻana o nā kauoha e hana / holoi / wehe / pani i nā faila ma ka server ma ke kaʻina "Operations" ponoʻī me ka hoʻohana ʻana i ka subsystem file o ka server OS.

I mea e wikiwiki ai i ka heluhelu/kākau ʻana, hana ʻia kēia mau hana ma nā pae i hoʻokumu ʻia e ke kaʻina hana "Operations". ʻO ka nui o nā loina e like me ka helu o nā faila i wehe ʻia. Hoʻouna ʻia nā hana heluhelu/kākau mai nā mea kūʻai aku i ka pila maʻamau a lawe ka pae manuahi mua i ka hana mai kona poʻo. ʻO ka loiloi kūikawā hiki iā ʻoe ke hoʻopau i nā hana kākau hou ʻana i ka ʻikepili i ka RAM o ka server.

Mālama ke kaʻina hana i ka hana a nā mea kūʻai aku a hoʻōki i ka lawelawe ʻana iā lākou ma luna o kā lākou kauoha a i ʻole i ka wā i hala ʻole ai ka manawa hana ʻole.

No ka hōʻoia ʻana i ka hilinaʻi, mālama ʻo Cageserver i nā lāʻau o nā hana āpau. Aia kekahi moʻolelo maʻamau i nā kope o nā memo mai nā mea kūʻai aku me nā hana e hana/wehe/hōʻano hou/ holoi i nā faila. Hoʻokumu ʻia kahi log kaʻawale no kēlā me kēia faila hana, kahi e hoʻopaʻa ʻia ai nā kope o nā memo me nā hana no ka heluhelu ʻana a me ke kākau ʻana i ka ʻikepili i loko o kēia faila hana, a me nā pūʻulu o nā ʻikepili i kākau ʻia (hou) a me nā ʻano o ka ʻikepili i luku ʻia i ka wā o ke kākau ʻana (kākau). ʻikepili hou "ma luna" o nā mea kahiko). ).

Hāʻawi kēia mau lāʻau i ka hiki ke hoʻihoʻi i nā hoʻololi hou i nā waihona a hoʻihoʻi i nā ʻike o kēia manawa i kahi manawa i hala.

ʻO Cageserver ma kahi o 3100 laina o ke code.

Cage Remote File Access System

Ke hoʻomaka nei i ka polokalamu kikowaena faila Cageserver

I ka hoʻomaka ʻana, pono ʻoe e wehewehe i ka dialog:
— awa nui no ka mana;
- ka helu o nā awa no ka hoʻololi ʻana i nā kālepa me nā mea kūʻai aku i ʻae ʻia (mai ka 1 a ʻoi aʻe paha, hoʻomaka ka wai o nā helu mai kahi kokoke i ka helu awa nui).

Ke hoʻohana nei i ka Cage Class

papa hīnaʻi.Wai( cage_name="", pagesize=0, numpages=0, maxstrlen=0, server_ip={}, kali=0, awake=False, cache_file="" )

Hana ʻia nā mea mai kēia papa e launa pū me nā kikowaena faila a loaʻa ka hoʻomanaʻo hoʻomanaʻo.

kiko'î

  • cage_name(p) - inoa kūlana o ka mea, i hoʻohana ʻia e ʻike i nā mea kūʻai aku ma ka ʻaoʻao kikowaena
  • nui ʻaoʻao(INT) — ka nui o hoʻokahi ʻaoʻao o ka hoʻomanaʻo hoʻomanaʻo (ma nā bytes)
  • helu helu(INT) — ka helu o nā ʻaoʻao hoʻomanaʻo pale
  • maxstrlen(INT) - ka lōʻihi kiʻekiʻe loa o kahi kaula paita i nā hana kākau a heluhelu
  • server_ip(dict) - he puke wehewehe ʻōlelo me nā helu wahi o nā kikowaena i hoʻohana ʻia, kahi o ke kī i ka inoa kūlana o ke kikowaena (server id i loko o ka noi), a ʻo ka waiwai he string me ka helu wahi: "ip address: port" a i ʻole "DNS: awa” (ʻo ka hoʻohālikelike ʻana o nā inoa a me nā helu wahi maoli he manawa pōkole, hiki ke hoʻololi ʻia)
  • kali(INT) — ka manawa kali no ka pane mai ke kikowaena i ka wā e loaʻa ai nā awa (i kekona)
  • e ala(kāleʻa) — hae o ka hana ana o ka mea (wahahee - inā hana ʻia kahi mea hou, oiaio - inā hana ʻia kahi mea mai kahi mea i "holo ʻia" ma mua - me ka hoʻohana ʻana i ka hana "hibernation", False ma ka paʻamau)
  • cache_file(p) - inoa faila no ka hibernation

Nā Palapala

Cage.file_create( kikowaena, alahele ) - hana i kahi faila hou

Cage.file_rename( kikowaena, ala, new_name ) - inoa hou i ka faila

Cage.file_remove( kikowaena, alahele) - holoi i kahi faila

Cage.hamama( kikowaena, alahele, mod ) - wehe waihona

Hoʻi mai fchannel helu channel. ʻĀpana mod — ʻo ia ke ʻano o ka wehe ʻana o ka faila: “wm” — kūʻokoʻa (heluhelu/kākau), “rs” — heluhelu wale nō, a kaʻana like wale no ka heluhelu ʻana e nā mea kūʻai aku, "ws" - heluhelu/kākau, a kaʻana wale no ka heluhelu- e nā mea kūʻai aku wale nō.

Cage.kokoke (fchannel) - pani i ka faila

Cage.kakau (fchannel, hoomaka, ikepili ) - e kākau i kahi kaula byte i kahi faila

Cage.heluhelu (fchannel, hoomaka, len_data ) - heluhelu i kahi string byte mai kahi faila

Cage.kau_aoao ( fchannel ) - "hoʻokuʻu" mai ka buffer a i ke kikowaena nā ʻaoʻao āpau o ke kahawai i kuhikuhi ʻia i hoʻololi ʻia. Hoʻohana ʻia ia ma kēlā mau wahi i ka algorithm inā pono ʻoe e hōʻoia i ka mālama kino ʻana o nā hana āpau ma ke kahawai i kahi faila ma ke kikowaena.

Cage.pahu_all () - "hoʻokuʻu" mai ka pale a hiki i ke kikowaena nā ʻaoʻao āpau o nā kahawai āpau no kahi laʻana o ka papa Cage i hoʻololi ʻia. Hoʻohana ʻia inā pono ʻoe e hōʻoia e mālama ʻia nā hana āpau ma nā kahawai āpau ma ke kikowaena.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka