Cage Remote File Access System

Tanjona tanjona

Fanohanana ny fidirana lavitra amin'ny rakitra amin'ny solosaina amin'ny tambajotra. Ny rafitra "saika" dia manohana ny fiasan'ny rakitra fototra rehetra (famoronana, famafana, famakiana, fanoratana, sns.) amin'ny fifanakalozana fifanakalozana (hafatra) mampiasa ny protocol TCP.

Toerana fampiharana

Ny fiasan'ny rafitra dia mahomby amin'ireto tranga manaraka ireto:

  • amin'ny rindranasa teratany ho an'ny fitaovana finday sy ao anatiny (smartphone, rafitra fanaraha-maso an-tsambo, sns.) izay mitaky fidirana haingana amin'ny rakitra amin'ny lohamilina lavitra manoloana ny mety hisian'ny fahatapahana vonjimaika eo amin'ny fifandraisana (miaraka amin'ny fandehanana an-tserasera);
  • amin'ny DBMS feno entana, raha atao amin'ny lohamilina sasany ny fanodinana fanontaniana, ary ny fitahirizana angon-drakitra dia atao amin'ny hafa;
  • amin'ny tambajotran'ny orinasa zaraina amin'ny fanangonana sy fanodinana vaovao, mitaky fifanakalozam-baovao haingana, famerenam-bola ary azo itokisana;
  • amin'ny rafitra sarotra miaraka amin'ny maritrano microservice, izay tena zava-dehibe ny fahatarana amin'ny fifanakalozana vaovao eo amin'ny modules.

rafitra

Ny rafitra Cage (misy fampiharana - version beta amin'ny Python 3.7 amin'ny Windows) dia misy ampahany roa lehibe:

  1. Cageserver β€” programa mpizara rakitra (fonosana fiasa) izay mandeha amin'ny solosaina amin'ny tambajotra izay mitaky fidirana lavitra ny rakitra;
  2. класс tranom-borona miaraka amin'ny tranomboky misy fomba ho an'ny rindrambaiko mpanjifa, manamora ny kaody fifandraisana amin'ny mpizara.

Mampiasa ny rafitra eo amin'ny lafiny mpanjifa

Ny fomba fiasan'ny kilasy Cage dia manolo ny fiasan'ny rafi-drakitra mahazatra "mahazatra": famoronana, fanokafana, fanakatonana, famafana rakitra, ary koa mamaky/manoratra angona amin'ny endrika binary (manondro ny toerana sy ny haben'ny angona). Amin'ny foto-kevitra, ireo fomba ireo dia mifanakaiky amin'ny fiasan'ny rakitra amin'ny fiteny C, izay anaovana ny rakitra fanokafana / fanakatonana "amin'ny fantsona" fampidirana / famoahana.

Raha lazaina amin'ny teny hafa, ny programmer dia tsy miasa amin'ny fomba fiasa "rakitra" (class _io amin'ny Python), fa miaraka amin'ny fomba kilasy Cage.

Rehefa noforonina ny ohatra iray amin'ny zavatra Cage, dia mametraka fifandraisana voalohany amin'ny mpizara (na mpizara maromaro), omen'ny Id Mpanjifa, ary mahazo fanamafisana miaraka amin'ny laharana seranan-tsambo natokana ho an'ny fampandehanana rakitra rehetra. Rehefa voafafa ny zavatra Cage, dia manome toromarika ny mpizara izy mba hampitsahatra ny fifandraisana sy hanidy ireo rakitra. Ny fampitsaharana ny fifandraisana dia azo atomboka amin'ny mpizara ihany koa.

Ny rafitra dia manatsara ny fahaiza-mamaky/manoratra amin'ny alΓ lan'ny buffering ireo sombin-drakitra ampiasaina matetika amin'ny programa mpanjifa ao amin'ny cache RAM (buffer).
Ny lozisialin'ny mpanjifa dia afaka mampiasa zavatra isan-karazany amin'ny Cage misy fika samihafa (habe fitadidiana buffer, habe sakana rehefa mifanakalo amin'ny mpizara, sns.).

Ny zavatra Cage tokana dia afaka mifandray amin'ny rakitra marobe amin'ny lohamilina maro. Ny mari-pamantarana fifandraisana (adiresy IP na mpizara DNS, seranan-tsambo lehibe ho an'ny fanomezan-dΓ lana, lalana ary anaran'ny rakitra) dia voafaritra rehefa mamorona ilay zavatra.

Satria ny zavatra Cage tsirairay dia afaka miasa miaraka amin'ny rakitra maromaro miaraka, ny habaka fahatsiarovana iombonana dia ampiasaina amin'ny buffering. Ny haben'ny cache - ny isan'ny pejy sy ny habeny, dia apetraka amin'ny fomba mavitrika rehefa mamorona zavatra Cage. Ohatra, ny cache 1 GB dia pejy 1000 misy 1 MB tsirairay, na pejy 10 arivo misy 100 KB tsirairay, na pejy 1 tapitrisa misy 1 KB tsirairay avy. Ny fisafidianana ny habe sy ny isan'ny pejy dia asa manokana ho an'ny tranga fampiharana tsirairay.

Azonao atao ny mampiasa zavatra Cage marobe amin'ny fotoana iray mba hamaritana ny firafitry ny fitadidiana buffer samihafa arakaraka ny fomba idirana amin'ny rakitra samihafa. Amin'ny maha fototra azy, ny algorithm buffering tsotra indrindra dia ampiasaina: rehefa lany ny fitadidiana iray, dia mamindra ny pejy vaovao ny pejy taloha araka ny fitsipiky ny fisotroan-dronono miaraka amin'ny fidirana kely indrindra. Ny buffering dia mandaitra indrindra amin'ny tranga tsy mitovy (amin'ny lafiny statistika) ny fidirana iombonana, voalohany, amin'ny rakitra samihafa, ary, faharoa, amin'ny sombin-drakitra tsirairay.

Ny kilasin'ny Cage dia manohana ny I/O tsy amin'ny adiresin'ny angon-drakitra (manondro ny toerana sy ny halavan'ny array, "manoloana" ny fiasan'ny rafi-drakitra), fa koa amin'ny ambaratonga ambany kokoa, "ara-batana" - amin'ny laharan'ny pejy ao amin'ny fitadidiana buffer.

Ny asa tany am-boalohany dia tohana ho an'ny zavatra Cage "hibernation" ("matory") - izy ireo dia azo "mirodana" (ohatra, raha misy ny fahaverezan'ny fifandraisana amin'ny mpizara, na rehefa mijanona ny fampiharana, sns) ho any amin'ny rakitra fanariam-pako eo an-toerana eo amin'ny lafiny mpanjifa ary naverina haingana avy amin'ny ity rakitra ity (rehefa miverina ny fifandraisana, rehefa manomboka ny fampiharana ianao). Izany dia ahafahana mampihena be ny fifamoivoizana rehefa manetsika ny programa mpanjifa rehefa mandeha "tsy an-tserasera" vonjimaika, satria efa ao anaty cache ny sombin-drakitra ampiasaina matetika.

Cage dia manodidina ny 3600 andalana kaody.

Fitsipiky ny fananganana server

Ny mpizara rakitra Cageserver dia azo atao amin'ny seranana tsy misy dikany, ny iray amin'izy ireo ("main") dia tsy ampiasaina afa-tsy amin'ny fanomezan-dΓ lana ny mpanjifa rehetra, ny ambiny dia ampiasaina amin'ny fifanakalozana angona. Ny programa mpizara Cage dia mila Python ihany. Mifanaraka amin'izany, ny solosaina miaraka amin'ny mpizara rakitra dia afaka manao asa hafa.

Ny mpizara dia manomboka amin'ny voalohany ho fitambarana dingana roa lehibe:

  1. "Fifandraisana" - dingana iray amin'ny fanatanterahana ny asa fananganana fifandraisana amin'ny mpanjifa sy ny fampitsaharana izany amin'ny fandraisana andraikitra ataon'ny mpizara;
  2. "OpΓ©rations" - dingana iray amin'ny fanatanterahana ny asa (operations) ataon'ny mpanjifa mba hiasa amin'ny rakitra, ary koa ny fanakatonana ny fifandraisana mifototra amin'ny baikon'ny mpanjifa.

Ireo dingana roa ireo dia tsy mifanandrify ary voalamina ho toy ny tadivavarana tsy misy fiafarana amin'ny fandraisana sy fandefasana hafatra mifototra amin'ny filaharana multiprocess, zavatra proxy, hidin-trano ary faladia.
Ny fizotry ny fifandraisana dia manome seranan-tsambo ho an'ny mpanjifa tsirairay mba handraisana sy handefasana data. Apetraka ny isan'ny seranana rehefa manomboka ny mpizara. Ny sarintany eo anelanelan'ny seranan-tsambo sy ny mpanjifa dia voatahiry ao amin'ny fitadidiana proxy mifampizara interprocess.

Ny fizotran'ny Operations dia manohana ny fizarana loharanon-drakitra mba ahafahan'ny mpanjifa samihafa mizara (quasi-parallèle, satria fehezin'ny hidin-trano ny fidirana) vakio ny angona avy amin'ny rakitra iray raha navela izany rehefa nosokafan'ny mpanjifa "voalohany".

Ny fanodinana ny baiko hamoronana / hamafa / hanokafana / hanidy ny rakitra ao amin'ny server dia atao amin'ny dingana "Operations" amin'ny alΓ lan'ny fampiasana ny subsystem rakitra amin'ny OS server.

Mba hanafainganana amin'ny ankapobeny ny famakiana/ny fanoratana, ireo asa ireo dia atao amin'ny kofehy nateraky ny fizotran'ny "Operations". Ny isan'ny kofehy dia matetika mitovy amin'ny isan'ny rakitra misokatra. Ny asa mamaky/manoratra avy amin'ny mpanjifa dia apetraka amin'ny filaharana ankapobeny ary ny kofehy maimaim-poana voalohany dia maka ny asa amin'ny lohany. Ny lojika manokana dia ahafahanao manafoana ny asa fanoratana indray angon-drakitra ao amin'ny RAM an'ny mpizara.

Ny fizotry ny Operations dia manara-maso ny asan'ny mpanjifa ary mitsahatra ny fanompoana azy ireo na amin'ny baikon'izy ireo na rehefa mihoatra ny fe-potoana tsy miasa.

Mba hiantohana ny fahamendrehana, Cageserver dia mitazona ny diarin'ny varotra rehetra. Ny diary ankapobe iray dia misy dika mitovy amin'ny hafatra avy amin'ny mpanjifa manana asa hamoronana / hanokafana / hanova anarana / hamafa rakitra. Misy lozisialy manokana noforonina ho an'ny rakitra miasa tsirairay, izay ahitana ny dika mitovy amin'ny hafatra misy asa ho an'ny famakiana sy fanoratana angona ao amin'ity rakitra miasa ity, ary koa ny laharan'ny angona voasoratra (vaovao) sy ny angon-drakitra izay nopotehina nandritra ny fanoratana (fanoratana). angona vaovao "eo an-tampony" amin'ireo taloha). ).

Ireo diary ireo dia manome fahafahana hamerina ny fanovana vaovao amin'ny backups ary hamerina ny atiny ankehitriny amin'ny teboka iray taloha.

Cageserver dia manodidina ny 3100 andalana kaody.

Cage Remote File Access System

Famoahana ny programa mpizara rakitra Cageserver

Rehefa manomboka, ao amin'ny fifanakalozan-kevitra dia mila mamaritra:
- seranan-tsambo lehibe hahazoana alalana;
- ny isan'ny seranan-tsambo hanakalo ny fifampiraharahana amin'ny mpanjifa nahazo alalana (avy amin'ny 1 na mihoatra, ny dobo isa dia manomboka amin'ny iray manaraka ny laharana seranan-tsambo lehibe).

Mampiasa ny Cage Class

am-pianarana tranom-borona.tranom-borona( cage_name="", pageesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, awake=False, cache_file="" )

Ny zavatra dia noforonina avy amin'ity kilasy ity izay mifandray amin'ny mpizara rakitra ary misy fitadidiana buffer.

masontsivana

  • cage_name(p) - anarana fepetran'ny zavatra, izay ampiasaina hamantarana ny mpanjifa eo amin'ny lafiny server
  • pageesize(int) β€” haben'ny pejy iray amin'ny fitadidiana buffer (amin'ny bytes)
  • numpages(int) β€” isan'ny pejy fitadidiana buffer
  • maxstrlen(int) - ny halavan'ny tady byte ambony indrindra amin'ny asa fanoratana sy famakiana
  • server_ip(dict) - rakibolana misy ny adiresin'ireo lohamilina ampiasaina, izay ny fanalahidy dia ny anaran'ny mpizara (id server ao anatin'ny fampiharana), ary ny sandany dia tady misy adiresy: "adiresy ip:port" na "DNS: seranan-tsambo" (ny fampitahana ny anarana sy ny adiresy tena izy dia vonjimaika, azo ovaina izany)
  • miandry(int) β€” fotoana fiandrasana valiny avy amin'ny mpizara rehefa mahazo seranana (ao anatin'ny segondra)
  • Mifohaza(boolean) β€” saina momba ny fomba namoronana ilay zavatra (Diso - raha misy zavatra noforonina, marina - raha misy zavatra noforonina avy amin'ny zavatra iray "nirodana" teo aloha - mampiasa ny hetsika "hibernation", Diso amin'ny alΓ lan'ny default)
  • cache_file(p) - anaran-drakitra ho an'ny hibernation

fomba

Cage.file_create( mpizara, lalana ) – mamorona rakitra vaovao

Cage.file_rename( mpizara, lalana, anarana_vaovao ) - hanova anarana ny rakitra

Cage.file_remove( mpizara, lalana) - mamafa rakitra

Cage.misokatra( mpizara, lalana, mod ) - rakitra misokatra

Miverina fchannel laharan'ny fantsona. fikirana Mod - izao no fomba fanokafana rakitra: "wm" - manokana (vakio/soraty), "rs" - vakiana fotsiny, ary zaraina ho vakin'ny mpanjifa hafa ihany, "ws" - vakiana/soratana, ary zaraina ho an'ny vakin'ny hafa ihany. mpanjifa hafa.

Cage.akaiky (fchannel) – manakatona ny rakitra

Cage.manoratra (fchannel, manomboka, data ) - manoratra tady byte amin'ny rakitra iray

Cage.vakio ny (fchannel, manomboka, len_data ) – mamaky tady byte avy amina rakitra iray

Cage.put_pages ( fchannel ) - "manosika" avy amin'ny buffer mankany amin'ny mpizara ny pejy rehetra amin'ny fantsona voafaritra izay novana. Ampiasaina amin'ireo teboka ao amin'ny algorithm izany rehefa mila mahazo antoka ianao fa voatahiry ara-batana ao anaty rakitra iray ao amin'ny mpizara ny hetsika rehetra amin'ny fantsona.

Cage.push_all () - "manosika" avy amin'ny buffer mankany amin'ny mpizara ny pejy rehetra amin'ny fantsona rehetra ho an'ny kilasy Cage izay novana. Ampiasaina rehefa mila mahazo antoka ianao fa voatahiry ao amin'ny mpizara ny hetsika rehetra amin'ny fantsona rehetra.

Source: www.habr.com

Add a comment