Протокол удаленного вызова процедур (RPC) в распределенной системе
⚡ Умное резюме
Удаленный вызов процедур (RPC) — это протокол межпроцессного взаимодействия, позволяющий программе выполнять процедуру в другом адресном пространстве или на другой машине, скрывая сетевые детали за обычным локальным вызовом функции в распределенных клиент-серверных системах.

Что такое РПЦ?
Удаленный вызов процедур (RPC) это межпроцессного взаимодействия Этот метод используется в клиент-серверных приложениях. Полное название RPC — Remote Procedure Call (удаленный вызов процедуры). Механизмы RPC используются, когда компьютерная программа вызывает выполнение процедуры или подпрограммы в другом адресном пространстве, закодированное как обычный вызов процедуры, без явного указания программистом деталей удаленного взаимодействия.
Этот вызов процедуры также управляет низкоуровневыми транспортными протоколами, такими как UDP и TCP/IP, для передачи данных сообщения между программами.
Виды РПК
Три типа RPC:
- Обратный вызов RPC
- Трансляция RPC
- Пакетный режим RPC
Обратный вызов RPC
Этот тип RPC обеспечивает взаимодействие между участвующими процессами по принципу «точка-точка» (P2P). Он позволяет процессу выступать одновременно и в роли клиента, и в роли сервера.
Функции обратного вызова RPC:
- Обрабатывает удаленно обрабатываемые интерактивные проблемы приложений.
- Предоставляет серверу дескриптор клиента.
- Функция обратного вызова заставляет клиентский процесс ждать.
- Управляет взаимоблокировками при обратных вызовах.
- Это способствует формированию модели взаимодействия между участниками процесса на основе принципа "равный равному".
Трансляция RPC
Широковещательный RPC-запрос — это запрос клиента, который передается по сети и обрабатывается всеми серверами, имеющими метод для обработки этого запроса.
Функции Broadcast RPC:
- Позволяет указать, что запрос клиента должен быть передан широковещательно.
- Вы можете объявить широковещательные порты.
- Это помогает снизить нагрузку на физическую сеть.
Пакетный режим RPC
Пакетный режим RPC позволяет ставить отдельные RPC-запросы в очередь в буфер передачи на стороне клиента, а затем отправлять их по сети одним пакетом на сервер.
Функции пакетного RPC:
- Это минимизирует накладные расходы, связанные с отправкой запроса, поскольку запросы отправляются по сети одним пакетом на сервер.
- Этот тип протокола RPC эффективен только для приложений, требующих низкой частоты вызовов.
- Ему нужен надежный протокол передачи.
RPC Archiтекстура
Архитектура RPC состоит в основном из пяти компонентов программы:
- Клиент
- Клиентская заглушка
- Среда выполнения RPC
- Серверная заглушка
- серверу
RPC Archiтекстура
Как работает RPC?
В процессе RPC выполняются следующие шаги:
Шаг 1) Клиент, заглушка клиента и один экземпляр среды выполнения RPC выполняются на клиентской машине.
Шаг 2) Клиент запускает процесс-заглушку, передавая параметры обычным способом. Заглушка клиента хранится в собственном адресном пространстве клиента. Она также запрашивает у локальной среды выполнения RPC отправку запроса серверной заглушке.
Шаг 3) На этом этапе пользователь обращается к RPC, выполняя обычный локальный вызов процедуры. Среда выполнения RPC управляет передачей сообщений между клиентом и сервером по сети. Она также выполняет функции повторной передачи, подтверждения, маршрутизации и шифрования.
Шаг 4) После завершения серверной процедуры выполнение возвращается к серверному заглушке, которая упаковывает (маршалирует) возвращаемые значения в сообщение. Затем серверная заглушка отправляет сообщение обратно на транспортный уровень.
Шаг 5) На этом этапе транспортный уровень отправляет результирующее сообщение обратно на транспортный уровень клиента, который, в свою очередь, возвращает сообщение клиентскому заглушке.
Шаг 6) На этом этапе клиентский заглушка десериализует (распаковывает) возвращаемые параметры в результирующем пакете, и выполнение возвращается вызывающей стороне.
Характеристики РПК
Вот основные характеристики RPC:
- Вызываемая процедура находится в другом процессе, который, вероятно, расположен на другом компьютере.
- Процессы не разделяют адресное пространство.
- Параметры передаются только по значениям.
- RPC выполняется в среде серверного процесса.
- Оно не предоставляет доступа к среде вызывающей процедуры.
Особенности РПК
Вот важные особенности RPC:
- Простой синтаксис вызова.
- Предлагает известную семантику.
- Предоставляет чётко определённый интерфейс.
- Она может обеспечивать связь между процессами на одной или разных машинах.
Преимущества РПК
Вот преимущества и достоинства RPC:
- RPC помогает клиентам взаимодействовать с серверами посредством традиционного использования вызовов процедур в языках высокого уровня.
- RPC основан на локальном вызове процедуры, но вызываемая процедура, скорее всего, выполняется в другом процессе и обычно на другом компьютере.
- RPC поддерживает процесс-ориентированную и потоко-ориентированную модели.
- RPC скрывает от пользователя внутренний механизм передачи сообщений.
- Он использует многие уровни протокола для повышения производительности.
- RPC обеспечивает абсtracнапример, природа передачи сообщений в сетевом взаимодействии остается скрытой от пользователя.
- RPC можно использовать как в распределенных, так и в локальных средах.
- Усилия, необходимые для переписывания и переработки кода, минимальны.
Недостатки RPC
Вот минусы/недостатки использования RPC:
- Удаленный вызов процедур передает параметры только по значениям; значения по указателям (ссылкам) не допускаются.
- Время вызова (и возврата) удаленной процедуры — накладные расходы — значительно выше, чем для локальной процедуры.
- Этот механизм крайне уязвим к сбоям, поскольку включает в себя систему связи, другую машину и другой процесс.
- Концепция RPC может быть реализована различными способами, поэтому единого стандарта не существует.
- Она не обеспечивает гибкости в отношении аппаратной архитектуры, поскольку в основном основана на взаимодействии.
- Стоимость процесса возрастает из-за удаленного вызова процедуры.

