Protokół zdalnego wywołania procedury (RPC) w systemie rozproszonym

⚡ Inteligentne podsumowanie

Zdalne wywołanie procedury (RPC) to protokół komunikacji międzyprocesowej, który umożliwia programowi wykonywanie procedury w innej przestrzeni adresowej lub na innej maszynie, ukrywając szczegóły sieciowe za zwykłym wywołaniem funkcji lokalnej w rozproszonych systemach klient-serwer.

  • 📞 Definicja: RPC umożliwia klientowi wywołanie procedury na zdalnym serwerze tak, jakby było to wywołanie lokalne.
  • 🗂️. typy: Protokoły wywołania zwrotnego, rozgłoszeniowego i wsadowego RPC różnią się sposobem kierowania i kolejkowania żądań.
  • 🏗️. Archistruktura: Przy każdym wywołaniu współpracuje pięć części: klient, szczątkowy klient, środowisko wykonawcze RPC, szczątkowy serwer i serwer.
  • 🔄 Jak To Działa: Zastępuje parametry marszałkowskie wiadomością i rozpakowuje wynik zwrócony do wywołującego.
  • ⚖️. Kompromisy: RPC upraszcza rozproszony kod, ale powoduje dodatkowe obciążenie sieci i zwiększa liczbę punktów awarii w porównaniu z wywołaniami lokalnymi.
  • 🤖 Kąt AI: gRPC obsługuje modele uczenia maszynowego pomiędzy mikrousługami, a Copilot przyspiesza pisanie szczątkowych RPC.

Zdalne wywołanie procedury (RPC) w systemie rozproszonym

Co to jest RPC?

Zdalne wywołanie procedury (RPC) jest komunikacja międzyprocesowa Technika stosowana w aplikacjach klient-serwer. Pełna nazwa RPC to Zdalne Wywołanie Procedury (Remote Procedure Call). Mechanizmy RPC są używane, gdy program komputerowy powoduje wykonanie procedury lub podprocedury w innej przestrzeni adresowej, zakodowanej jako zwykłe wywołanie procedury, bez jawnego kodowania przez programistę szczegółów zdalnej interakcji.

To wywołanie procedury zarządza również protokołami transportu niskiego poziomu, takimi jak UDP i TCP/IP, w celu przesyłania danych komunikatów pomiędzy programami.

Rodzaje RPC

Trzy typy RPC to:

  • wywołanie zwrotne RPC
  • Transmisja RPC
  • RPC w trybie wsadowym

wywołanie zwrotne RPC

Ten typ RPC umożliwia paradygmat peer-to-peer (P2P) między uczestniczącymi procesami. Pomaga procesowi działać zarówno jako klient, jak i serwer.

Funkcje wywołania zwrotnego RPC:

  • Zajmuje się problemami związanymi z aplikacjami przetwarzanymi zdalnie i interaktywnie.
  • Dostarcza serwerowi uchwyt klienta.
  • Wywołanie zwrotne powoduje oczekiwanie procesu klienta.
  • Zarządza blokadami wywołań zwrotnych.
  • Ułatwia współpracę peer-to-peer pomiędzy uczestniczącymi procesami.

Transmisja RPC

Rozgłoszeniowe wywołanie RPC to żądanie klienta rozgłaszane w sieci i przetwarzane przez wszystkie serwery dysponujące metodą przetwarzania tego żądania.

Funkcje Broadcast RPC:

  • Umożliwia określenie, że żądanie klienta musi zostać rozesłane.
  • Możesz zadeklarować porty rozgłoszeniowe.
  • Pomaga zmniejszyć obciążenie sieci fizycznej.

RPC w trybie wsadowym

Tryb wsadowy RPC umożliwia kolejkowanie oddzielnych żądań RPC w buforze transmisyjnym po stronie klienta, a następnie wysyłanie ich przez sieć w jednej partii do serwera.

Funkcje RPC w trybie wsadowym:

  • Minimalizuje obciążenie związane z wysyłaniem żądania, ponieważ żądania są wysyłane przez sieć do serwera w jednej partii.
  • Ten typ protokołu RPC jest wydajny wyłącznie w przypadku aplikacji wymagających niższej liczby wywołań.
  • Wymaga niezawodnego protokołu transmisji.

RPC Architektura

Architektura RPC składa się z pięciu głównych komponentów programu:

  1. klientem
  2. Sekcja klienta
  3. Środowisko wykonawcze RPC
  4. Odgałęzienie serwera

RPC Architektura

RPC Architektura

Jak działa RPC?

Podczas procesu RPC wykonywane są następujące kroki:

Krok 1) Klient, szkielet klienta i jedna instancja środowiska wykonawczego RPC są wykonywane na komputerze klienta.

Krok 2) Klient uruchamia proces szczątkowy klienta, przekazując parametry w standardowy sposób. Szczyt klienta jest przechowywany w przestrzeni adresowej klienta. Prosi również lokalne środowisko wykonawcze RPC o wysłanie żądania do szczątkowego serwera.

Krok 3) Na tym etapie użytkownik uzyskuje dostęp do RPC, wykonując standardowe wywołanie procedury lokalnej. Środowisko wykonawcze RPC zarządza transmisją komunikatów między klientem a serwerem przez sieć. Zajmuje się również retransmisją, potwierdzaniem, routingiem i szyfrowaniem.

Krok 4) Po zakończeniu procedury serwera, wykonanie wraca do szczątkowego serwera, który pakuje (marszałkuje) wartości zwracane do komunikatu. Następnie szczątkowy serwer odsyła komunikat do warstwy transportowej.

Krok 5) Na tym etapie warstwa transportowa odsyła komunikat wynikowy do warstwy transportowej klienta, która zwraca komunikat do szczątkowego klienta.

Krok 6) Na tym etapie klient rozpakowuje (demarshalluje) parametry zwracane w pakiecie wynikowym, a wykonywanie powraca do programu wywołującego.

Charakterystyka RPC

Oto podstawowe cechy RPC:

  • 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 umożliwia dostępu do środowiska procedury wywołującej.

Funkcje RPC

Oto ważne funkcje RPC:

  • Prosta składnia wywołania.
  • Oferuje znaną semantykę.
  • Zapewnia dobrze zdefiniowany interfejs.
  • Może komunikować się między procesami na tej samej lub różnych maszynach.

Zalety RPC

Oto zalety i korzyści RPC:

  • RPC umożliwia klientom komunikację z serwerami poprzez konwencjonalne wykorzystanie wywołań procedur w językach wysokiego poziomu.
  • RPC jest modelowane na podstawie lokalnego wywołania procedury, ale wywoływana procedura jest najprawdopodobniej wykonywana w innym procesie i zwykle na innym komputerze.
  • RPC obsługuje modele zorientowane na procesy i wątki.
  • RPC ukrywa przed użytkownikiem wewnętrzny mechanizm przekazywania wiadomości.
  • Angażuje wiele warstw protokołu w celu poprawy wydajności.
  • RPC zapewnia abstracna przykład natura komunikacji sieciowej polegająca na przesyłaniu wiadomości pozostaje ukryta przed użytkownikiem.
  • Protokół RPC można stosować zarówno w środowiskach rozproszonych, jak i lokalnych.
  • Nakład pracy potrzebny do przepisania i ponownego opracowania kodu jest minimalny.

Wady RPC

Oto wady/wady korzystania z RPC:

  • Zdalne wywołanie procedury przekazuje parametry wyłącznie za pomocą wartości; wartości wskaźników (odniesień) nie są dozwolone.
  • Czas wywołania procedury zdalnej (i jej powrotu) — narzut — jest znacznie dłuższy niż w przypadku procedury lokalnej.
  • Mechanizm ten jest bardzo podatny na awarie, gdyż wymaga systemu komunikacji, innej maszyny i innego procesu.
  • Koncepcję RPC można wdrożyć na różne sposoby, dlatego nie ma jednego standardu.
  • Nie zapewnia elastyczności pod względem architektury sprzętowej, gdyż opiera się głównie na interakcji.
  • Koszt procesu wzrasta ze względu na zdalne wywołanie procedury.

FAQ

RPC udostępnia akcje jako procedury zdalne, podczas gdy REST udostępnia dane jako zasoby, do których dostęp uzyskuje się za pomocą czasowników HTTP. RPC przypomina wywołanie funkcji lokalnej; REST koncentruje się na zasobach i stanie.

gRPC to GoogleNowoczesny, wydajny framework RPC. Wykorzystuje protokół HTTP/2 i Bufferi obsługuje dwukierunkowe przesyłanie strumieniowe, co czyni go popularnym narzędziem do komunikacji mikrousług.

RPC może działać na oba sposoby. Wywołanie synchroniczne blokuje się do momentu, aż serwer zwróci wynik, podczas gdy wywołanie asynchroniczne zwraca wynik natychmiast i obsługuje odpowiedź później. Frameworki takie jak gRPC obsługują oba style.

RPC to forma IPC działająca na oddzielnych maszynach. Podczas gdy wiele metod IPC współdzieli pamięć na jednym hoście, RPC wymienia komunikaty przez sieć, umożliwiając współpracę procesów na różnych komputerach.

Do typowych implementacji RPC należą gRPC, Apache Thrift, XML-RPC, JSON-RPC i Java RMI. Różnią się formatem danych i sposobem transportu, ale wszystkie pozwalają klientowi wywołać procedurę na zdalnym serwerze.

Protokół RPC nie jest domyślnie bezpieczny; bezpieczeństwo zależy od transportu. Implementacje dodają szyfrowanie TLS, tokeny uwierzytelniające i kontrolę dostępu w celu ochrony połączeń.

Platformy uczenia maszynowego wykorzystują RPC, zwłaszcza gRPC, do obsługi predykcji modeli między mikrousługami. Klient wysyła funkcje i otrzymuje wynik wnioskowania.ping Systemy AI są szybkie i luźno ze sobą powiązane.

Tak. GitHub Copilot może tworzyć definicje usług .proto, szczątki klientów i procedury obsługi serwerów dla gRPC. Deweloperzy powinni nadal sprawdzać wygenerowane interfejsy, obsługę błędów i wersjonowanie przed wdrożeniem w środowisku produkcyjnym.

Podsumuj ten post następująco: