System rozproszony
System rozproszony (ang. distributed system) to zestaw niezależnych urządzeń, takich jak komputery, połączonych w logiczną całość za pomocą sieci komputerowej lub innych magistrali komunikacyjnych. Te urządzenia wykorzystują oprogramowanie do współdzielenia zasobów systemowych.
Jedną z kluczowych cech systemów rozproszonych jest przejrzystość (ang. transparency), która tworzy wrażenie zintegrowanego systemu dla użytkowników. Definicja systemu rozproszonego ewoluowała wraz z rozwojem technologii komputerowej.
Historia
W latach 70. i 80. systemy rozproszone składały się głównie ze zdalnych terminali i minikomputerów, które komunikowały się z komputerem centralnym. Wykorzystywano różne topologie połączeń, takie jak:
- gwiazda – wiele terminali podłączonych do centralnego komputera przez modemy,
- pierścień – terminale i komputery tworzyły zamknięty krąg,
- hierarchiczna – komputer centralny łączył się z minikomputerami, do których podłączone były terminale.
W drugiej połowie lat 80. systemy rozproszone zaczęły być postrzegane jako geograficznie rozproszone aplikacje współdziałające ze sobą lub jako pojedyncze aplikacje z niezależnymi komponentami.
Cechy systemu rozproszonego
Systemy rozproszone charakteryzują się następującymi cechami:
- Dzielenie zasobów (ang. resource sharing) – umożliwia wielu użytkownikom korzystanie z tych samych zasobów,
- Otwartość (ang. openness) – system jest podatny na rozszerzenia sprzętowe i programowe,
- Współbieżność (ang. concurrency) – pozwala na jednoczesne przetwarzanie wielu zadań,
- Skalowalność (ang. scalability) – utrzymuje wydajność przy zwiększaniu liczby procesów lub komputerów,
- Tolerowanie awarii (ang. fault tolerance) – zapewnia funkcjonowanie systemu mimo pojawiania się błędów,
- Przezroczystość (ang. transparency) – użytkownik postrzega system jako całość, a nie zbiór komponentów.
Współczesne systemy rozproszone korzystają z oprogramowania pośredniczącego, które wspomaga komunikację między ich elementami. Przykłady to:
- Gniazda (ang. sockets),
- RPC (ang. Remote Procedure Call),
- DCE (ang. Distributed Computing Environment),
- CORBA (ang. Common Object Request Broker Architecture),
- DCOM (ang. Distributed Component Object Model),
- RMI (ang. Remote Method Invocation).