Systemy rozproszone W. Bartkiewicz Wykład 1. Zagadnienia wstępne

Slides:



Advertisements
Podobne prezentacje
Mechanizmy pracy równoległej
Advertisements

Architektura SAP R/3 Wybrane zagadnienia.
Sieci VLAN.
Systemy Rozproszone Wprowadzenie.
Role w zespole projektowym
PROGRAMOWANIE STRUKTURALNE
przetwarzaniu informacji
Rola komputera w przetwarzaniu informacji.
Sieci komputerowe.
SYSTEMY ROZPROSZONE System plików.
CORBA Łukasz Wnęk.
Systemy Równoległe.
Architektura systemu Gra strategiczna „Strusia Jama”
Internet Communication Engine
Wykład nr 1: Wprowadzenie. Pojęcia podstawowe
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Systemy operacyjne.
Systemy operacyjne Bibliografia:
Proxy (WWW cache) Sieci Komputerowe
Temat nr 10: System przerwań
Longhorn - Usługi terminalowe
Enteprise Java Beans Emil Wcisło.
Wzorce projektowe w J2EE
Artur Szmigiel Paweł Zarębski Kl. III i
Rozproszone bazy danych
Projektowanie i programowanie obiektowe II - Wykład IV
Problem rozbieżności czasów jednym z wielu problemów pojawiających się w systemach rozproszonych jest rozbieżność wartości zegarów na poszczególnych węzłach-maszynach.
1 Podstawy informatyki H. P. Janecki- 2006_ Systemy Operacyjne W6.
Opracował: mgr Mariusz Bruździński
Architektura systemów wykorzystujących bazy danych (systemów bazodanowych) Wykład S. Kozielski.
Protokół Komunikacyjny
Systemy operacyjne.
Budowa systemu komputerowego
BUDOWA I DZIAŁANIE SIECI KOMPUTEROWYCH
Temat 1: Podstawowe pojęcia dotyczące lokalnej sieci komputerowej
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Prezentacja i szkolenie
Rozdział 1: Wprowadzenie do systemu Windows 2000 i podstaw sieci
Model OSI Model OSI (Open Systems Interconnection Reference Model) został wprowadzony w celu ujednolicenia regół komunikacji sieciowej. Obejmuje on cały.
Sieciowe Systemy Operacyjne
Maszyna wirtualna ang. virtual machine, VM.
M i k r o j ą d r o D e f i n i c j a. M i k r o j ą d r o to rodzaj jądra systemu operacyjnego, które zawiera tylko najbardziej niezbędne elementy, takie.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
dr Łukasz Murowaniecki T-109
Sieci komputerowe.
W ą t e k (lekki proces) thread.
Sieci komputerowe.
Systemy operacyjne i sieci komputerowe
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
Jednym z podstawowych celów tworzenia sieci komputerowych jest współdzielenie zasobów, takich jak pliki lub drukarki. Każdy z takich zasobów musi być udostępniony,
Proces tworzenia oprogramowania Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu.
Systemy informatyczne
Clustering Technologia klastrowa - architektura łącząca serwery i urządzenia pamięci masowych w celu zwiększenia niezawodności, bezpieczeństwa i wydajności.
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
SIEĆ KLIENT-SERWER Pojęcie sieci typu klient – serwer.
Podstawy programowania
INTERNET jako „ocean informacji”
Struktura systemu operacyjnego
Podział sieci komputerowych
Model warstwowy ISO-OSI
Bartosz Pawlak Wiktor Paliwoda Bezpieczeństwo Systemów Operacyjnych IMAP vs POP.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Zarządzanie stanem w aplikacjach ASP.NET Elżbieta Mrówka-Matejewska
Protokoły używane w sieciach LAN Funkcje sieciowego systemu komputerowego Wykład 5.
Sieci komputerowe Usługi sieciowe 27/09/2002.
Aplikacje i usługi internetowe
Zapis prezentacji:

Systemy rozproszone W. Bartkiewicz Wykład 1. Zagadnienia wstępne Uniwersytet Łódzki Katedra Informatyki W. Bartkiewicz Systemy rozproszone Wykład 1. Zagadnienia wstępne

Literatura podstawowa Katedra Informatyki Literatura podstawowa Tannenbaum A.S., van Steen M., Systemy rozproszone. Zasady i paradygmaty, WNT, 2005.

Literatura podstawowa Katedra Informatyki Literatura podstawowa Tannenbaum A.S., van Steen M., Systemy rozproszone. Zasady i paradygmaty, WNT, 2005. Coulouris G, Dollimore J., Kindberg T., Systemy rozproszone – podstawy i projektowanie, WNT, 1998.

Literatura – MS Windows Katedra Informatyki Literatura – MS Windows Williams A., Programowanie Windows 2000. Czarna księga, Helion, 2001.

Literatura – MS Windows Katedra Informatyki Literatura – MS Windows Williams A., Programowanie Windows 2000. Czarna księga, Helion, 2001. Jones A., Ohlund J., Programowanie sieciowe Microsoft Windows, Wyd. RM, 2000.

Literatura – MS Windows Katedra Informatyki Literatura – MS Windows Williams A., Programowanie Windows 2000. Czarna księga, Helion, 2001. Jones A., Ohlund J., Programowanie sieciowe Microsoft Windows, Wyd. RM, 2000. Reilly D.J., Programowanie aplikacji serwerowych, Wyd. RM, 2001.

Literatura – MS Windows Katedra Informatyki Literatura – MS Windows Williams A., Programowanie Windows 2000. Czarna księga, Helion, 2001. Jones A., Ohlund J., Programowanie sieciowe Microsoft Windows, Wyd. RM, 2000. Reilly D.J., Programowanie aplikacji serwerowych, Wyd. RM, 2001. Eddon G., Eddon H., COM+ Programowanie, Wyd. RM, 2001.

Literatura – MS Windows Katedra Informatyki Literatura – MS Windows Williams A., Programowanie Windows 2000. Czarna księga, Helion, 2001. Jones A., Ohlund J., Programowanie sieciowe Microsoft Windows, Wyd. RM, 2000. Reilly D.J., Programowanie aplikacji serwerowych, Wyd. RM, 2001. Eddon G., Eddon H., COM+ Programowanie, Wyd. RM, 2001. Mueller J.P., COM+ Kompendium programisty, Helion, 2002.

Literatura – MS Windows Katedra Informatyki Literatura – MS Windows Williams A., Programowanie Windows 2000. Czarna księga, Helion, 2001. Jones A., Ohlund J., Programowanie sieciowe Microsoft Windows, Wyd. RM, 2000. Reilly D.J., Programowanie aplikacji serwerowych, Wyd. RM, 2001. Eddon G., Eddon H., COM+ Programowanie, Wyd. RM, 2001. Mueller J.P., COM+ Kompendium programisty, Helion, 2002. Richter J., Programowanie aplikacji dla Microsoft Windows, Wyd. RM, 2002.

Literatura – Unix/Linux Katedra Informatyki Literatura – Unix/Linux Stevens W.R., Unix Programowanie usług sieciowych, WNT, 2002.

Literatura – Unix/Linux Katedra Informatyki Literatura – Unix/Linux Stevens W.R., Unix. Programowanie usług sieciowych, WNT, 2002. Matthew N., Stones R., Linux. Programowanie, Wyd. RM, 1999.

Literatura – Unix/Linux Katedra Informatyki Literatura – Unix/Linux Stevens W.R., Unix. Programowanie usług sieciowych, WNT, 2002. Matthew N., Stones R., Linux. Programowanie, Wyd. RM, 1999. Mitchell M., Oldham J., Samuel A., Linux. Programowanie dla zaawansowanych, Wyd. RM, 2002.

Katedra Informatyki System rozproszony Systemem rozproszonym (ang. distributed system) nazywamy zbiór procesów (aplikacji), zazwyczaj uruchamianych na samodzielnych komputerach, komunikujących się za pośrednictwem specyficznych mechanizmów, tzw. komunikacji międzyprocesowej (IPC, ang. Inter Process Communication). Komunikacja ta przyjmuje jedną z następujących form: Wymiana – aplikacje przesyłają między sobą informacje Dzielenie zasobów – zasoby udostępniane są bezpośrednio dla wielu aplikacji Współpraca – aplikacje uzupełniają się wzajemnie przy realizacji zadania

Własności systemów rozproszonych Katedra Informatyki Własności systemów rozproszonych Współdzielenie zasobów Otwartość Współbieżność Skalowalność Odporność na uszkodzenia Przezroczystość

Współdzielenie zasobów Katedra Informatyki Współdzielenie zasobów Przez zasób rozumiemy pewne dobro (rzecz lub usługę), które może być z pożytkiem wykorzystywane w systemie rozproszonym. Zasoby obejmują zarówno elementy sprzętowe systemu, takie jak dyski czy drukarki, jak również elementy definiowane przez oprogramowanie i dane, takie jak pliki, okna, bazy danych. Współdzielenie zasobów umożliwia zwiększenie ich dostępności i optymalizację ich wykorzystania. Jest to jeden z głównych istnienia aplikacji rozproszonych. Zasoby w systemie rozproszonym zamknięte są fizycznie w komputerze lub innym urządzeniu, a dostęp do nich z innych komputerów może się dokonywać tylko za pomocą komunikacji.

Współdzielenie zasobów Katedra Informatyki Współdzielenie zasobów Każdy zasób, który ma być w sposób efektywny wspólnie wykorzysty-wany, musi być zarządzany przez program, tworzący interfejs komunikacyjny umożliwiający dostęp do niego, działanie na nim oraz jego niezawodną i spójną aktualizację. Moduły oprogramowania wykonujące te funkcje nazywamy zarządcami zasobów (ang. resource manager). Każdy typ zasobu wymaga odrębnej polityki zarządzania i swoistych metod, istnieją jednak pewne wspólne wymagania: zastosowanie schematu nazewniczego, umożliwienie dostępu do poszczególnych zasobów z dowolnego miejsca, odwzorowanie nazw zasobów na adresy komunikacyjne, koordynowanie współbieżnych dostępów, powodujących zmiany stanu współdzielonych zasobów, w celu zapewnienia ich spójności.

Katedra Informatyki Otwartość Przez otwartość systemu informatycznego rozumiemy jego zdolność do rozszerzania różnymi sposobami. System może być otwarty lub zamknięty ze względu na rozszerzenia sprzętowe, np. dodawanie urządzeń zewnętrznych, pamięci lub interfejsów komunikacyjnych, czy też ze względu na rozszerzanie oprogramowania, czyli dodawanie nowych właściwości, funkcji, protokołów komunikacyjnych i usług dzielenia zasobów. Otwartość osiąga się poprzez określenie i dokumentowanie zasadniczych interfejsów programowych systemu i ich udostępnianie programistom poprzez podanie do powszechnej wiadomości. Otwarte systemy rozproszone opierają się również na mechanizmie jednolitej komunikacji międzyprocesowej (otwartość przez komunikację), umożliwiającym komunikowanie się procesów nawet wtedy gdy działają one na różnych komputerach o różnych systemach operacyjnych.

Katedra Informatyki Otwartość Otwartość systemu zwiększa elastyczność jego konstrukcji i ułatwia dalsze utrzymanie i ewolucję. Otwartość systemu umożliwia również konstruowanie go z heterogenicznego sprzętu i oprogramowania, być może pochodzącego od różnych sprzedawców. Wymaga to jednak ścisłego przestrzegania przez poszczególne składowe opublikowanych standardów, oraz umiejętnej integracji całości systemu.

Katedra Informatyki Współbieżność Jeśli w systemie współistnieje jednocześnie kilka procesów (wątków wykonania), mówimy, że są one wykonywane współbieżnie. Sytuacja ta dotyczy nie tylko jednoczesnego (równoległego) wykonywania procesów (wątków) na różnych komputerach lub procesorach, ale również naprzemiennego przeplatania porcji poszczególnych procesów (wątków) na jednym procesorze. Przetwarzanie współbieżne umożliwia zwiększenie wydajności systemu, poprzez przyśpieszenie (równoległość) wykonywania operacji oraz daje możliwość jednoczesnej obsługi wielu użytkowników. Współbieżność działania powstaje w systemie rozproszonym jako naturalny wynik osobnych działań użytkowników, niezależności zasobów i procesów usługowych. Współbieżny dostęp do zasobów wspólnie wykorzystywanych może jednak powodować konflikty i musi być synchronizowany.

Katedra Informatyki Skalowalność Przez skalowalność rozumiemy łatwość z jaką system lub jego komponent może zostać zmodyfikowany dla sprostania wymaganiom problemu. Powiększanie skali systemu, tzn. liczby użytkowników, komputerów, urządzeń zewnętrznych, itp. nie powinno pociągać za sobą konieczności wykonywania w nim zmian. Systemy rozproszone poprzez zwiększenie dostępności zasobów oraz wydajności działania umożliwiają lepszą skalowalność niż scentralizowane. Rozdzielenie składowych umożliwia stopniowy rozrost lub kurczenie się systemu poprzez dodawanie lub usuwanie jego elementów. Pamiętać jednak należy, że skalowalność nie jest jedynie problemem sprzętowym lub wydajności sieci. Zagadnienie to przenika niemal wszystkie aspekty projektowania systemu. Jeśli projekt poprawnie nie przewidzi potrzeby skalowalności, wiele ograniczeń pozostaje również w systemach rozproszonych.

Odporność na uszkodzenia Katedra Informatyki Odporność na uszkodzenia Większa elastyczność – w przypadku awarii elementu systemu łatwiej go naprawić lub wymienić. Możliwość precyzyjnego zaplanowania redundancji sprzętowej. Zadania elementów, które uległy awarii mogą być przejmowane przez inne składowe systemu, w stanie normalnym wykonujące zadania niekrytyczne. W systemie scentralizowanym, awaria powoduje przerwanie pracy całego systemu. Rozdzielenie składowych w systemie rozproszonym opanowywanie ich uszkodzeń i usuwanie skutków awarii bez zakłócania całego systemu. Awaria składowej dotyczy tylko działań do których wykorzystywano uszkodzoną składową. Pomimo awarii niektórych usług, pozostałe mogą pracować w miarę normalnie. Efektywne zapewnienie odporności systemu na uszkodzenia wymaga podjęcia odpowiednich działań projektowych.

Odporność na uszkodzenia Katedra Informatyki Odporność na uszkodzenia Systemy rozproszone zależne są od sieci, które zazwyczaj nie mają wbudowanej redundancji sprzętowej. Uszkodzenie sieci może powodować zawieszenie działania systemu aż do przywrócenia łączności. Przeciążenie sieci pogarsza wydajność systemu i czas reakcji na działania użytkowników. Systemy rozproszone bardziej narażone są na ataki. Bezpieczeństwo systemu staje się zależne od najsłabiej zabezpieczonego komputera w sieci. Możliwość ataku poprzez infrastrukturę sieciową.

Katedra Informatyki Przezroczystość Przezroczystość (ang. transparency) – ukrywanie przed użytkownikiem rozdzielności składowych w systemie rozproszonym, tak by system postrzegany był jako całość, tzn. dawał możliwość dostępu do swych usług i zasobów bez żadnych założeń dotyczących ich lokalizacji. Przezroczystość dostępu – umożliwienie dostępu do lokalnych i odległych obiektów za pomocą identycznych operacji. Przezroczystość położenia – umożliwienie dostępu do obiektów bez znajomości ich fizycznej lokalizacji. Przezroczystość jednoczesności dostępu – umożliwienie wielu procesom jednoczesnego, bezkonfliktowego dostępu do obiektów wspólnych. Przezroczystość zwielokrotniania – umożliwienie, w celu zwiększenia niezawodności i wydajności, użycia wielu kopii obiektów bez wiedzy użytkowników o zwielokrotnieniach.

Katedra Informatyki Przezroczystość Przezroczystość awarii – umożliwia ukrywanie uszkodzeń, pozwalając użytkownikom na kończenie zadań pomimo awarii pewnych składowych systemu. Przezroczystość dynamicznej modyfikacji konfiguracji – pozwala na przemieszczenie obiektów w obrębie systemu bez wpływu na działania użytkowników. Przezroczystość wydajności – umożliwia rekonfigurowanie systemu w celu poprawy działania przy zmianie obciążenia. Przezroczystość skalowania – umożliwia systemowi rozszerzanie skali bez zmiany struktury lub algorytmów użytkowych.

Platformy dla systemów rozproszonych Katedra Informatyki Platformy dla systemów rozproszonych Jednoprocesorowe systemy operacyjne Rozproszone systemy operacyjne Ze wspólną pamięcią dzieloną (jedno i wieloprocesorowe) Wielokomputerowe systemy operacyjne Sieciowe systemy operacyjne

Wielokomputerowe systemy operacyjne Katedra Informatyki Wielokomputerowe systemy operacyjne Jądro Maszyna A Maszyna B Maszyna C Sieć Aplikacje rozproszone Usługi rozproszonego systemu operacyjnego

Sieciowe systemy operacyjne Katedra Informatyki Sieciowe systemy operacyjne Jądro Maszyna A Maszyna B Maszyna C Sieć Aplikacje rozproszone Usługi sieciowego systemu operacyjnego Usługi sieciowego systemu operacyjnego Usługi sieciowego systemu operacyjnego

Oprogramowanie warstwy pośredniej (middleware) Katedra Informatyki Oprogramowanie warstwy pośredniej (middleware) Jądro Maszyna A Maszyna B Maszyna C Sieć Aplikacje rozproszone Warstwa pośrednia oprogramowania Usługi sieciowego systemu operacyjnego Usługi sieciowego systemu operacyjnego Usługi sieciowego systemu operacyjnego

Modele oprogramowania warstwy pośredniej Katedra Informatyki Modele oprogramowania warstwy pośredniej Oparte o rozproszone systemy plików. Wywołania procedur zdalnych (RPC). Oparte na obiektach (komponentach) rozproszonych. Oparte na dokumentach rozproszonych.

Usługi oprogramowania warstwy pośredniej Katedra Informatyki Usługi oprogramowania warstwy pośredniej Rozwiązania komunikacyjne wysokiego poziomu, które ukrywają niskopoziomowe przekazywanie komunikatów sieciami komputerowymi. Nazewnictwo. Usługi nazewnicze umożliwiające dzielenie i odnajdywanie zasobów. Trwałość. Środki oferujące specjalne udogodnienia przechowywania elementów systemu. Zarządzanie transakcjami rozproszonymi. Umożliwiają one wykonywanie przez transakcję wielu operacji pisania i czytania w sposób niepodzielny, nawet jeśli dane znajdują się na różnych maszynach. Bezpieczeństwo.

Komunikacja w systemach rozproszonych Katedra Informatyki Komunikacja w systemach rozproszonych Przenoszenie danych ze środowiska procesu nadawczego do środowiska procesu odbiorczego, poprzez wspólnie użytkowany kanał komunikacyjny. W niektórych działaniach komunikacyjnych wymaga to synchronizacji czynności odbiorczych z czynnościami nadawczymi.

Komunikacja Katedra Informatyki Podstawowe konstrukcje programowe, wykorzystywane dla komunikacji mają postać elementarnych działań wyślij i odbierz (ang. send and receive). Łącznie działania te dokonują przekazania komunikatu (ang. message passing) pomiędzy parą procesów. Każde przekazanie komunikatu obejmuje przesłanie przez proces nadawczy zbioru wartości danych komunikatu za pośrednictwem określonego mechanizmu komunikacji i akceptację komunikatu przez proces odbiorczy. Mechanizm przesyłania może być: Synchroniczny (z blokowaniem), co oznacza iż nadawca czeka po wysłaniu komunikatu do czasu aż odbiorca wykona operację odbioru. Asynchroniczny (bez blokowania), co znaczy, że komunikat umieszczany jest w kolejce komunikatów oczekujących na przyjęcie przez odbiorcę, a proces nadawczy może kontynuować działanie natychmiast. Operacja odbierz z reguły blokuje proces odbiorczy, jeśli w danej chwili nie ma żadnego komunikatu.

Komunikacja Katedra Informatyki Wyróżnia się wiele rozmaitych abstrakcji, spełniających formę mechanizmów komunikacyjnych w przekazywaniu komunikatów, noszące takie nazwy jak potoki, gniazda i porty. Różnią się one sposobem ustanawiania połączeń między procesami oraz buforowaniem komunikatów między nadawcą a odbiorcą. W praktyce najczęściej spotyka się dwa podstawowe schematy komunikacji: Komunikacja klient-serwer (ang. client-server) służąca do łączności między parą procesów. Specyficzną formą tego typu komunikacji są wywołania procedur zdalnych (ang. RPC – Remote Procedure Calling) oraz przekazywanie działań (ang. function shipping). Rozsyłanie grupowe (ang. group multicast) nazywane również wielonadawaniem (ang. multicasting), służące do łączności między grupami procesów.

Komunikacja klient-serwer Katedra Informatyki Model komunikacji klient-serwer nastawiony jest na dostarczanie usług. W modelu tym wyróżniamy dwa typy procesów: Klient – proces wysyłający określone zamówienie (żądanie) do realizacji. Serwer – proces realizujący zamówienie (żądanie). W komunikacji klient-serwer można wyróżnić następujące etapy: Przesłanie żądania od procesu klienta do procesu serwera. Wykonanie zamówienia przez serwer. Przesłanie odpowiedzi do klienta. Schemat komunikacji komunikacji klient-serwer obejmuje więc przesłanie dwu komunikatów i zakłada pewną formę synchronizacji klienta i serwera: Proces serwera musi spostrzec komunikat z zamówieniem (żądaniem) możliwie jak najszybciej po jego nadejściu. Proces klienta po wysłaniu żądania musi zawiesić swoje działania, do chwili otrzymania odpowiedzi.

Typy serwerów Katedra Informatyki Ze względu na sposób realizacji przez serwer żądań wielu klientów możemy mówić o: Serwerach iteracyjnych – wyjmujących żądania klientów po kolei, w porządku nadchodzenia. Serwerach współbieżnych – obsługujących żądania wielu klientów jednocześnie, poprzez współbieżnie wykonywane wątki lub procesy. Ze względu na formę komunikacji serwera z klientem i sposób obsługi sesji związanych z kilku żądań, możemy z kolei mówić o: Serwerach bezstanowych (bezpołączeniowych) – nie przechowujących między kolejnymi żądaniami klienta żadnych informacji o stanie połączenia (kliencie, historii kontaktów, itp.). Realizują one zazwyczaj proste zadania nie wymagające złożonej konwersacji z klientem. Przykładem może być serwer HTTP. Serwerach stanowych (połączeniowych) – przechowujących informacje o połączeniu przez ustalony okres czasu, lub do chwili zamknięcia sesji danego klienta. Pozwalają one na realizację wieloetapowych, lub interakcyjnych żądań klientów. Każde połączenie wymaga jednak od serwera alokacji pewnych zasobów. Przykładem są tu serwery baz danych.

Wywołania procedur zdalnych (RPC) Katedra Informatyki RPC jest konstrukcją ukrywającą działania komunikacyjne pod znaną abstrakcją wywołania procedury. Odwołanie do serwera ma po stronie klienta postać identyczną jak zwykłe wywołanie podprogramu. Abstrakcja ta ukrywa w rzeczywistości wysłanie odpowiedniego komunikatu do procesu serwera (określającego procedurę jaka ma zostać wykonana przez serwer), wykonanie przez serwer odpowiadającego mu przetwarzania i odesłanie odpowiedzi. Dane przesyłane przez klienta i niezbędne do wykonania przez serwer procedury, podawane są jako wartości parametrów. Odpowiedź serwera przekształcana jest na wartości parametrów wyjściowych oraz wartości powrotne z funkcji.

Przekazywanie działań Katedra Informatyki W schemacie komunikacji klient-serwer zawartość komunikatów przekazywanych pomiędzy klientami a serwerem stanowią czyste dane, nawet w przypadku RPC gdzie część komunikatu określa czynność (procedurę), jaką serwer ma wykonać, aby spełnić żądanie. Rozszerzenie tego modelu dopuszcza przekazywanie działań, w którym od klienta do serwera przekazuje się definicje procedur, tj. tworzące je instrukcje (kod). Serwer pełni rolę środowiska obliczeniowego i interpretatora dla programów w określonym języku. Przykładem tego typu rozwiązania jest użycie języka PostScript służącego do komunikacji z drukarkami. Możliwa jest również sytuacja odwrotna, w której serwer na żądanie klienta przesyła do niego kod, który realizowany jest przez samego klienta. Przykładem tego rozwiązania mogą być aplety języka Java.

Rozsyłanie grupowe Katedra Informatyki W schemacie komunikacji rozsyłania grupowego procesy współpracują między sobą, rozsyłając komunikaty do grup procesów. Jednej operacji wyślij odpowiada operacja odbierz wykonana przez każdego członka grupy procesów. Nie należy mylić pojęcia rozsyłania grupowego (ang. multicasting) z rozgłaszaniem (ang. broadcasting), czyli wysyłaniem komunikatów do wszystkich komputerów w środowisku danej sieci, techniką słabo skalowaną, która powinna być wykorzystywana dosyć ostrożnie. Komunikacja grupowa wykorzystywana jest najczęściej w takich sytuacjach jak: Odnajdywanie obiektu. Klient nie wie dokładnie który proces realizuje daną usługę. Wysyła komunikat do pewnej wybranej grupy. Odpowiada tylko ten, który może żądanie zrealizować. Tolerowanie uszkodzeń. Klient wysyła żądanie do grupy serwerów, które mogą je zrealizować. Obsługa jest zapewniona nawet w przypadku uszkodzenia jednego z nich. Zwielokrotnione aktualizacje. Pewnymi zdarzeniami mogą być zainteresowane grupy procesów.