architektury rozproszone
Architektura rozproszona – definicja
Architektura rozproszona – zbiór niezależnych urządzeń, z których przynajmniej jedno jest komputerem, współpracujących ze sobą i funkcjonujących jako jedna całość.
Przykłady systemów rozproszonych:
- System GPS
- Rozproszone bazy danych
- System transakcji międzybankowych
- Rozproszone systemy plików
- Gridy obliczeniowe
Różnica pomiędzy architekturą równoległą i rozproszoną
Architektury równoległe i rozproszone są często traktowane jako architektury tożsame. Osobiście się z tym nie zgadzam – jest sporo cech różniących obie architektury, oto one:
- gorsze parametry sieci – większymi opóźnieniami w komunikacji (latency) oraz mniejszą szybkością łącz – systemy równoległe zazwyczaj połączone są szybkimi sieciami (InfiniBand, Gigabit Ethernet), systemy rozproszone są połączone łączami o gorszych parametrach
- model komunikacji – komunikacja w systemach rozproszonych oparta jest zazwyczaj o protokoły typu żądanie-odpowiedź – RMI, CORBA, RPC, SOAP, REST itp. Komunikacja w systemach równoległych oparta jest na komunikacji międzyprocesowej (IPC) oraz przekazywaniu komunikatów – biblioteki PVM, MPI
- systemy równoległe charakteryzują się lepszą wydajnością ale gorszą elastycznością – dostosowanie systemu równoległego do nowych warunków czy założeń może w praktyce oznaczać konieczność zaprojektowania systemu od nowa
- sposób projektowania – projektując system równoległy zazwyczaj mamy już zbudowaną infrastrukturę (której koszty budowy są zazwyczaj ogromne) i projektujemy system tak, aby na niej działał
Problemy projektowe
Poniżej lista najczęściej pojawiających się i najbardziej uciążliwych problemów projektowych związanych z projektowaniem systemów rozproszonych:
- Współdzielenie zasobów
- Rozproszenie zasobów – konieczność niezawodnej, efektywnej komunikacji pomiędzy rozproszonymi zasobami
- Heterogeniczność (niejednorodność) zasobów – konieczność integracji heterogenicznych systemów i zasobów
- Zapewnianie określonych atrybutów jakościowych – skalowalność, wydajność, reużywalność, elastyczność, niezawodność działania etc
- Modyfikowalność – konieczność łatwego wprowadzania zmian, zdolność do poszerzania o nowe usługi i zasoby
- Bezpieczeństwo – konieczność zapewniania bezpieczeństwa komunikacji jak i konkretnych komunikujących się podsystemów
- Przeźroczystość – konieczność zapewniania przeźroczystości systemu dla użytkownika, mówimy tu o przeźroczystości na kilku poziomach:
- dostępu
- położenia zasobów
- migracji zasobów
- replikacji zasobów i danych
- współbieżności
- awarii
- wydajności
Wzorce architektoniczne
Poniżej lista wzorców architektury rozproszonej.