Sistem distribuit

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Termenul de sistem distribuit , în informatică , indică generic un tip de sistem de calcul care constă dintr-un set de procese interconectate în care comunicațiile au loc numai exclusiv prin schimbul de mesaje adecvate. [1] Fiecare nod al sistemului execută un set de componente care comunică între ele utilizând un strat software numit middleware care permite utilizatorului să perceapă sistemul ca o singură entitate. Termenul proces indică în general orice entitate capabilă să comunice cu orice alt proces și să execute un algoritm distribuit. Spre deosebire de un algoritm tradițional, este de asemenea necesar să se includă în definiția algoritmului distribuit mesajele care sunt schimbate între diferitele procese, deoarece și ele sunt esențiale în execuția și terminarea algoritmului. Sistemele distribuite apar atât din nevoile economice, cât și din cele tehnologice.

Descriere

Definiție

Există mai multe definiții (mai mult sau mai puțin echivalente unele cu altele) ale unui sistem distribuit, inclusiv:

  • „Un sistem distribuit este un software care asigură faptul că un set de computere apar ca un sistem coerent unic pentru utilizatorii sistemului” ( Maarten van Steen , 2016). [2]
  • „Un sistem distribuit constă dintr-un set de computere autonome, conectate între ele printr-o rețea și un middleware de distribuție, care permite computerelor să își coordoneze activitățile și să partajeze resursele sistemului, astfel încât utilizatorii să perceapă sistemul ca un singur serviciu de calcul integrat” (( Wolfgang Emmerich , 1997). [3]
  • „Un sistem distribuit este un sistem în care eșecul unui computer pe care nici nu știai că îl poate face inutilizabil” ( Leslie Lamport , 1987). [4]

Caracteristici

Printre caracteristicile unui sistem distribuit putem menționa:

  • La distanță : componentele unui sistem distribuit trebuie să poată fi tratate în același mod, indiferent dacă sunt local sau de la distanță.
  • Concurență : este posibilă executarea a două sau mai multe instrucțiuni simultan pe mașini diferite; nu există instrumente care să vă permită să gestionați sincronizarea într-un mod simplu (cum ar fi blocările și semaforele în programarea simultană pe multicore).
  • Absența unei stări globale : nu există nicio modalitate de a determina starea globală a sistemului, deoarece distanța și eterogenitatea sistemului nu permit definirea stării sistemului cu certitudine. Lipsa unui ceas global, în acest context, face imposibilă sincronizarea perfectă a ceasurilor tuturor proceselor și acest lucru face imposibilă ordonarea, într-un mod precis și univoc, a tuturor evenimentelor care apar în cadrul sistemului. Acest rezultat se datorează diferențelor structurale, în mare parte electronice, ale diferitelor dispozitive pentru generarea semnalului de ceas în interiorul microprocesoarelor. Diferențe datorate și parametrilor fizici, cum ar fi temperatura legată de dispozitiv, starea de utilizare sau vârsta dispozitivului.
  • Defecțiuni parțiale : fiecare componentă a sistemului poate înceta să funcționeze corect, independent de celelalte componente ale sistemului; acest lucru nu trebuie să compromită funcționalitatea întregului sistem. Eșecurile procesului pot fi de diferite tipuri, dar de obicei pot fi grupate în două categorii: eșecuri de eșec și eșecuri bizantine. În primul caz, se constată că procesul de blocare încetează brusc să funcționeze, în timp ce în al doilea caz este, în general, imposibil să facem presupuneri cu privire la cauza sau efectele eșecului. În ultimul caz, de fapt, comportamentul procesului care eșuează într-un mod bizantin este de obicei arbitrar.
  • Heterogenitate: un sistem distribuit este eterogen atât în tehnologia hardware, cât și în cea software . Este realizat în toate contextele, cum ar fi rețeaua de comunicații, protocolul de rețea , limbajele de programare , aplicațiile etc.
  • Autonomie : un sistem distribuit nu are un singur punct din care să poată fi controlat, coordonat și gestionat. Colaborarea trebuie realizată prin trimiterea de mesaje între diferitele componente ale sistemului și gestionată prin politici de partajare și acces care trebuie respectate cu strictețe.
  • Evoluție : un sistem distribuit se poate schimba substanțial în timpul vieții sale, atât pentru că mediul se schimbă, cât și pentru că se schimbă tehnologia utilizată. Scopul este adaptarea acestor schimbări fără costuri excesive.
  • Fiind sincron sau asincron. Această distincție este esențială, deoarece unele probleme din domeniul sistemelor distribuite pot fi rezolvate sau nu pe baza acestor caracteristici. Se spune că un sistem distribuit este sincron atunci când este posibil să se calculeze următoarele proprietăți, altfel se spune că este asincron:
    1. Intervalul de timp maxim și minim pentru ca un proces să execute o instrucțiune.
    2. Intervalul maxim de timp pentru transmiterea unui mesaj de la sursă la destinație.
    3. Și abaterea maximă a valorii fiecărui ceas local (rata de derivare a ceasului) în raport cu timpul real.

Cerințe nefuncționale

Realizarea unui sistem distribuit implică necesitatea de a lua în considerare și alte aspecte, pe lângă cele descrise mai sus, care nu sunt strict legate de specificațiile sistemului, dar sunt utilizate ca linii directoare pentru proiectarea și întreținerea sistemelor distribuite. Aceste aspecte sunt cerințele nefuncționale pe care trebuie să le îndeplinească un sistem distribuit:

  • Deschis : trebuie să susțină portabilitatea execuției și interoperabilității conform standardelor cunoscute și recunoscute atât pentru a nu lega sistemul de un singur furnizor, cât și pentru a-l face să evolueze (prin adăugarea de noi componente).
  • Integrat : trebuie să încorporeze diferite sisteme și resurse în sine, fără a fi nevoie să utilizeze instrumente ad-hoc.
  • Flexibil : trebuie să ofere posibilitatea de a integra sistemele moștenite intern și de a putea gestiona modificările în timpul rulării prin reconfigurarea dinamică.
  • Modular : fiecare componentă trebuie să fie autonomă și cu un anumit grad de interoperabilitate cu restul sistemului.
  • Sprijin pentru federația sistemelor: trebuie să permită alăturarea diferitelor sisteme atât din punct de vedere administrativ, cât și din punct de vedere arhitectural, să funcționeze și să ofere servicii într-un mod contigu.
  • Scalabil : adică capacitatea de a oferi aceeași performanță, în ceea ce privește randamentul și latența, în raport cu utilizatorii, în ciuda sarcinii de operare crescute pe sistem. Prin sarcină crescută putem însemna vârfuri ale încărcării accesului la resurse datorită creșterii utilizatorilor sistemului ca urmare a evoluției în contextul afacerii.
  • QoS : furnizarea de servicii cu constrângeri de timp, disponibilitate și fiabilitate chiar și în prezența unor defecțiuni parțiale care pot apărea întotdeauna într-un mediu distribuit. Această calitate nu este îndeplinită de un sistem centralizat care este deosebit de intolerant la defecțiuni.
  • Sigur : Utilizatorii neautorizați nu trebuie să poată accesa sistemul.
  • Transparent : trebuie să mascheze detaliile și diferențele arhitecturii subiacente, permițând planificarea și programarea ușoară. Cu toate acestea, această transparență nu trebuie să fie totală, deoarece oricine proiectează / programează un sistem distribuit trebuie să știe că lucrează la componente la distanță.

Exemple

Pictogramă lupă mgx2.svg Același subiect în detaliu: Sistemul Client-Server și Arhitectura pe mai multe niveluri .

O altă aplicație tipică a sistemelor distribuite sunt sistemele de calcul distribuite ( computere cluster ) local sau geografic (de exemplu, pentru calcul distribuit ) într-un sistem de calcul și conectate între ele printr- o rețea locală sau geografică . Un alt exemplu de sistem distribuit este Internetul în sine, care se extinde la nivel mondial, inclusiv resurse care sunt fizic foarte îndepărtate unele de altele, în care procesele cu funcții diferite și conectate prin diferite tipuri de rețele schimbă mesaje de informații pe baza unor protocoale de comunicații disparate.

Nevoi economice

Nevoi de afaceri

Economia de piață este alcătuită din numeroase și frecvente achiziții, integrări, fuziuni corporative și reduceri . Nevoia companiilor este de a putea realiza aceste operațiuni rapid și eficient prin integrarea, de exemplu într-o fuziune a companiei, a unor sisteme diferite într-un singur sistem capabil să gestioneze ambele sisteme ale celor două companii sau, în cazul reducerii dimensiunii, menținând un anumit nivel de integrare cu restul companiilor grupului într-un fel de federație de sisteme care complică managementul oferind, de exemplu, diferite niveluri de acces la sistem: în cadrul companiei, în cadrul federației și din exterior.

Nevoile pieței

Pe lângă nevoile afacerii, sistemele distribuite vă permit să accelerați procesul de creare și introducere a unui produs pe piață. De fapt, piața trebuie să reducă cât mai mult posibil Time To Market (timpul pentru a ajunge la produsul final), trecând prin diferitele faze, cum ar fi concepția, proiectarea și implementarea. În timpul fazei de implementare este posibil ca o caracteristică să poată fi implementată folosind componente de pe raft (componente preexistente) care, totuși, au diferențe atât în ​​hardware, cât și în software. Sistemele distribuite vă permit să integrați componentele de pe raft, făcându-le să coopereze în ciuda diferențelor de implementare.

Nevoile rețelei

Răspândirea internetului a însemnat că diverse servicii pot fi accesate de un număr mare de utilizatori prin intermediul rețelei. Prin urmare, un serviciu poate avea vârfuri de încărcare (mai mulți utilizatori solicită accesul la acest serviciu în același timp) poate ca urmare a publicității pozitive . Dacă serviciul este oferit utilizând un sistem centralizat, ar fi necesară o capacitate de calcul mare pentru a gestiona cantitatea mare de solicitări; sistemele distribuite vă permit să distribuiți volumul de lucru pe mai multe computere, astfel încât serviciul să fie scalabil pe măsură ce rețeaua crește.

Nevoi tehnologice

Evoluția tehnologiei informației sa bazat întotdeauna pe dezvoltarea tehnologiilor hardware. În fiecare an există o creștere a performanței pe care o mașină o poate oferi. Unele legi empirice descriu acest fenomen aplicându-l atât evoluției componentelor fizice ( legea lui Moore ), cât și creșterii valorii unei rețele conform legilor Sarnoff, Metcalfe și Reed . Această dezvoltare a condus la crearea de metode pentru dezvoltarea de sisteme software complexe capabile să utilizeze cât mai bine aceste componente din ce în ce mai avansate.

Programare concurentă

Conceptul de sistem distribuit poate fi redus la cel de programare simultană care permite împărțirea volumului de lucru al unei singure mașini între toate nucleele pe care le pune la dispoziție. De fapt, credeți că majoritatea programelor, în ciuda hardware-ului mai bun, nu rulează în mai puțin timp, deoarece nu au fost scrise pentru a se adapta la îmbunătățirea procesorelor.

Integrare

Atunci când un sistem este luat în considerare, acesta este alcătuit din diferite componente care au caracteristici și performanțe diferite (sistem eterogen); atunci când doriți să creșteți performanța unui sistem, este mai convenabil să integrați componente noi (cu performanțe mai mari), mai degrabă decât să actualizați sau să reconstruiți sistemul de la zero. Un sistem distribuit vă permite să aveți diferite componente atât din punct de vedere hardware, cât și software. Pentru a integra diferite sisteme, standardul RM-ODP a fost introdus pentru rezolvarea problemelor de comunicare; acest model își propune să abstractizeze și să standardizeze conceptul de portabilitate și transparență într-un sistem distribuit prin încorporarea și extinderea modelului ISO / OSI , folosind acesta din urmă ca metodă de comunicare între componentele eterogene.

Notă

  1. ^ Coulouris și colab. , p. 1 .
  2. ^ Van Steen, Tanenbaum, 2016 , p. 2 .
  3. ^ (EN) Wolfgang Emmerich, Distributed System Principled (PDF) pe www0.cs.ucl.ac.uk, University College London , 1997. Accesat la 11 august 2018 ( depus la 28 ianuarie 2018).
  4. ^ (EN) Leslie Lamport, Distribution (PDF) pe microsoft.com, Microsoft , 28 mai 1987. Accesat la 11 august 2018 ( depus la 11 august 2018).

Bibliografie

Elemente conexe

linkuri externe

Controlul autorității Tezaur BNCF 3281