Zdalne wywołanie procedury, w skrócie RPC, to potężna technika tworzenia rozproszonych aplikacji opartych na kliencie-serwerze. Nazywa się to również wywołaniem funkcji lub wywołaniem podprogramu. Zdalne wywołanie procedury ma miejsce wtedy, gdy program komputerowy powoduje wykonanie procedury w innej przestrzeni adresowej, zakodowanej jako lokalne wywołanie procedury, bez wyraźnego podania przez programistę szczegółów zdalnej interakcji. Programista zapisuje zasadniczo ten sam kod, niezależnie od tego, czy podprogram jest lokalny w wykonywanym programie, czy zdalny. Jest to forma interakcji klient-serwer realizowana poprzez system przekazywania komunikatów żądanie-odpowiedź.
Model RPC implikuje przejrzystość lokalizacji że procedury wywoływania są w dużej mierze takie same, niezależnie od tego, czy są to połączenia lokalne, czy zdalne. Zwykle nie są one identyczne, co pozwala odróżnić połączenia lokalne od połączeń zdalnych. Połączenia zdalne są zwykle o rząd wielkości wolniejsze i mniej niezawodne niż połączenia lokalne, dlatego ważne jest ich rozróżnienie.
RPC są formą komunikacji między procesami (IPC), w której różne procesy mają różne przestrzenie adresowe. Mają różne wirtualne przestrzenie adresowe na tym samym komputerze hosta, mimo że fizyczna przestrzeń adresowa jest taka sama. Jeśli znajdują się na różnych hostach, fizyczna przestrzeń adresowa jest inna.
Jak wykonać zdalne wywołanie procedury
Środowisko wywołujące zostaje zawieszone, parametry procedury przesyłane są siecią do środowiska, w którym procedura ma zostać wykonana, i tam procedura jest wykonywana.
Gdy procedura zakończy się i wygeneruje wyniki, jest ona przekazywana z powrotem do środowiska wywołującego, gdzie wykonywanie jest wznawiane tak, jak w przypadku powrotu ze zwykłego wywołania procedury.
UWAGA: RPC szczególnie dobrze nadaje się do interakcji klient-serwer (np. zapytanie-odpowiedź), w której przepływ kontroli jest naprzemienny pomiędzy osobą wywołującą i odbieraną. Koncepcyjnie klient i serwer nie działają jednocześnie; zamiast tego wątek wykonania przeskakuje od wywołującego do wywoływanego, a następnie z powrotem.
Rodzaje RPC
W systemie operacyjnym istnieją trzy typy zdalnego wywoływania procedur (RPC), takie jak:
1. Wywołanie zwrotne RPC
Ten typ RPC umożliwia paradygmat P2P pomiędzy uczestniczącymi procesami. Pomaga procesowi być zarówno usługą klienta, jak i serwera. Callback RPC ma następujące funkcje, takie jak:
samouczek selenu Java
- Zdalnie przetwarzane problemy z aplikacjami interaktywnymi.
- Oferuje serwer z obsługą klienta.
- Wywołanie zwrotne powoduje, że proces klienta czeka.
- Zarządzaj zakleszczeniami wywołań zwrotnych.
- Ułatwia paradygmat peer-to-peer pomiędzy uczestniczącymi procesami.
2. Rozgłaszanie RPC
Broadcast RPC to żądanie klienta rozgłaszane w sieci, przetwarzane przez wszystkie serwery przy użyciu metody przetwarzania tego żądania. Broadcast RPC ma następujące funkcje, takie jak:
- Umożliwia określenie, czy komunikat żądania klienta ma być rozgłaszany.
- Możesz zadeklarować porty rozgłoszeniowe.
- Pomaga zmniejszyć obciążenie sieci fizycznej.
3. RPC w trybie wsadowym
Tryb wsadowy RPC pomaga kolejkować, oddzielać żądania RPC w buforze transmisji po stronie klienta, a następnie wysyłać je w sieci w jednej partii na serwer. Tryb wsadowy RPC ma następujące funkcje, takie jak:
- Minimalizuje obciążenie związane z wysyłaniem żądań, wysyłając je przez sieć w jednej partii do serwera.
- Ten typ protokołu RPC jest skuteczny tylko w przypadku aplikacji wymagających niższych stawek za połączenia.
- Potrzebuje niezawodnego protokołu transmisji.
Co robi RPC?
Kiedy instrukcje programu korzystające ze struktury RPC są kompilowane do programu wykonywalnego, do skompilowanego kodu dołączany jest kod pośredni reprezentujący kod procedury zdalnej.
Po uruchomieniu programu i wywołaniu procedury kod pośredniczy odbiera żądanie i przekazuje je do klienckiego programu wykonawczego na komputerze lokalnym. Przy pierwszym wywołaniu kodu pośredniczącego klienta kontaktuje się on z serwerem nazw w celu ustalenia adresu transportowego, pod którym znajduje się serwer.
Program wykonawczy klienta wie, jak adresować zdalny komputer i aplikację serwera, i wysyła przez sieć komunikat żądający zdalnej procedury. Podobnie serwer zawiera program wykonawczy i kod pośredniczący, który łączy się z samą zdalną procedurą, a protokoły żądań odpowiedzi są zwracane w ten sam sposób.
Funkcje RPC
W systemie operacyjnym zdalne wywoływanie procedur (RPC) ma następujące funkcje, takie jak:
- RPC ukrywa przed użytkownikiem złożoność procesu przekazywania wiadomości.
- RPC używa tylko określonych warstw modelu OSI, takich jak warstwa transportowa.
- Klienci mogą komunikować się z serwerem za pomocą języków wyższego poziomu.
- RPC działa dobrze zarówno w środowiskach lokalnych, jak i zdalnych.
- Program RPC jest napisany prostym kodem i jest łatwo zrozumiały dla programisty.
- System operacyjny z łatwością radzi sobie z procesami i wątkami zaangażowanymi w RPC.
- System operacyjny ukrywa przed użytkownikiem abstrakcje RPC.
Jak działa RPC?
Po wywołaniu zdalnego wywołania procedury środowisko wywołujące zostaje zawieszone, parametry procedury są przesyłane przez sieć do środowiska, w którym procedura ma zostać wykonana, a następnie procedura jest wykonywana w tym środowisku.
konwencja nazewnictwa Java
Po zakończeniu procedury wyniki są przesyłane z powrotem do środowiska wywołującego, gdzie wykonywanie jest wznawiane tak, jak w przypadku powrotu ze zwykłego wywołania procedury.
Zdalne wywołanie procedury (RPC) działa w systemie operacyjnym w następujących krokach:
Krok 1: Klient, kod pośredniczący klienta i środowisko wykonawcze RPC są wykonywane na komputerze klienckim.
Krok 2: Klient rozpoczyna proces pośredniczący klienta, przekazując parametry w zwykły sposób. Nazywa się pakowanie parametrów procedury przetaczanie . Odcinek klienta przechowuje dane we własnej przestrzeni adresowej klienta, a także prosi lokalne środowisko wykonawcze RPC o odesłanie z powrotem do odcinka serwera.
Krok 3: Na tym etapie użytkownik może uzyskać dostęp do RPC poprzez regularne lokalne wywołanie proceduralne. RPC Runtime zarządza transmisją komunikatów między siecią pomiędzy klientem a serwerem, a także wykonuje zadania retransmisji, potwierdzania, routingu i szyfrowania.
Krok 4: Po zakończeniu procedury serwera wraca do kodu pośredniczącego serwera, który pakuje (zestawia) zwracane wartości w wiadomości. Następnie odcinek serwera wysyła wiadomość z powrotem do warstwy transportowej.
Krok 5: Na tym etapie warstwa transportowa odsyła komunikat wynikowy do warstwy transportowej klienta, która zwraca komunikat do odcinka pośredniczącego klienta.
Krok 6: Na tym etapie klient pośredniczy (rozpakowuje) zwracane parametry w pakiecie wynikowym, a proces wykonawczy wraca do osoby wywołującej.
Problemy ze zdalnym wywoływaniem procedur (RPC)
W systemie operacyjnym zdalne wywoływanie procedur lub RPC napotykało pewne problemy, które należy rozwiązać, takie jak:
np.histogram
1. Środowisko wykonawcze RPC
System wykonawczy RPC to biblioteka procedur i usług obsługujących komunikację sieciową leżącą u podstaw mechanizmu RPC. W trakcie wywołania RPC kod systemów wykonawczych po stronie klienta i serwera obsługuje wiązanie, ustanawia komunikację za pośrednictwem odpowiedniego protokołu, przekazuje dane połączenia między klientem a serwerem oraz obsługuje błędy komunikacji.
ciąg znaków w C++
2. Odgałęzienie
Funkcją kodu pośredniczącego jest zapewnienie przejrzystości kodu aplikacji napisanego przez programistę.
3. Wiązanie
Skąd klient wie, do kogo zadzwonić i gdzie znajduje się usługa?
Najbardziej elastycznym rozwiązaniem jest użycie wiązania dynamicznego i znalezienie serwera w czasie wykonywania, gdy po raz pierwszy wykonywane jest RPC. Przy pierwszym wywołaniu kodu pośredniczącego klienta kontaktuje się on z serwerem nazw w celu ustalenia adresu transportowego, pod którym znajduje się serwer. Wiązanie składa się z dwóch części:
4. Semantyka wywoływania związana z RPC
Dzieli się go głównie na następujące opcje:
Charakterystyka RPC
Oto podstawowe cechy zdalnego wywołania procedury:
- Wywoływana procedura znajduje się w innym procesie, który prawdopodobnie znajduje się na innej maszynie.
- Procesy nie współdzielą przestrzeni adresowej.
- Parametry są przekazywane tylko przez wartości.
- RPC jest wykonywane w środowisku procesu serwera.
- Nie oferuje dostępu do środowiska procedury wywołującej.
Zalety RPC
Oto niektóre zalety lub zalety RPC, takie jak:
- Metoda RPC pomaga klientom komunikować się z serwerami poprzez konwencjonalne wykorzystanie wywołań procedur w językach wysokiego poziomu.
- Metoda RPC wzorowana jest na lokalnym wywołaniu procedury, jednak procedura najprawdopodobniej zostanie wykonana w innym procesie i zwykle na innym komputerze.
- RPC obsługuje modele zorientowane na procesy i wątki.
- RPC sprawia, że wewnętrzny mechanizm przekazywania wiadomości jest ukryty przed użytkownikiem.
- Nakład pracy związany z ponownym napisaniem i ponownym opracowaniem kodu jest minimalny.
- Zdalne wywołania procedur można wykorzystać w dystrybucji i środowisku lokalnym.
- Angażuje wiele warstw protokołu w celu poprawy wydajności.
- RPC zapewnia abstrakcję. Na przykład charakter komunikacji sieciowej polegający na przekazywaniu komunikatów pozostaje ukryty przed użytkownikiem.
- RPC umożliwia korzystanie z aplikacji w środowisku rozproszonym, czyli nie tylko lokalnym.
- Dzięki kodowi RPC wysiłki związane z ponownym pisaniem i ponownym opracowywaniem są zminimalizowane.
- Modele zorientowane na proces i wątki obsługiwane przez RPC.
Wady RPC
Oto kilka wad lub wad korzystania z protokołu RPC, takich jak:
- Zdalne wywołanie procedury przekazuje parametry tylko według wartości i wartości wskaźników, co jest niedozwolone.
- Czas zdalnego wywołania procedury (i powrotu) (tj. koszty ogólne) może być znacznie krótszy niż w przypadku procedury lokalnej.
- Mechanizm ten jest bardzo podatny na awarie, ponieważ obejmuje system komunikacyjny, inną maszynę i inny proces.
- Koncepcję RPC można wdrożyć na różne sposoby, co nie jest standardowe.
- Nie oferują żadnej elastyczności w RPC dla architektury sprzętowej, ponieważ opiera się głównie na interakcji.
- Koszt procesu zwiększa się ze względu na zdalne wywołanie procedury.