Что такое механизм RPC в распределенной системе?

Опубликовано: 15 Сентября, 2022

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

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

Рабочая процедура для модели RPC:

  • Аргументы процесса помещаются вызывающей стороной в точное место, когда необходимо вызвать процедуру.
  • В этот момент управление передается телу метода, содержащему ряд инструкций.
  • Тело процедуры запускается в недавно созданной среде выполнения, в которой есть дубликаты аргументов вызывающей инструкции.
  • В конце, после завершения операции, вызывающая точка возвращает управление, которое возвращает результат.
    • Вызов процедуры возможен только для тех процедур, которые не находятся в адресном пространстве вызывающего, потому что оба процесса (вызывающий и вызываемый) имеют разное адресное пространство, а доступ ограничен данными и переменными среды вызывающего из удаленной процедуры.
    • Вызывающий и вызываемый процессы в RPC взаимодействуют для обмена информацией через схему передачи сообщений.
    • Первая задача со стороны сервера состоит в том, чтобы извлечь параметры процедуры при поступлении сообщения запроса, затем результат, отправить ответное сообщение и, наконец, дождаться следующего сообщения вызова.
    • В определенный момент времени активен только один процесс.
    • Звонящий не всегда должен быть заблокирован.
    • В RPC можно использовать асинхронный механизм, позволяющий клиенту работать, даже если сервер еще не ответил.
    • Для обработки входящих запросов сервер может создать поток, освобождающий сервер для обработки последующих запросов.

Типы РПК:

Callback RPC: в Callback RPC парадигма P2P (Peer-to-Peer) выбирает между участвующими процессами. Таким образом, процесс предоставляет как клиентские, так и серверные функции, которые весьма полезны. Функции обратного вызова RPC включают в себя:

  • Проблемы, возникающие с интерактивными приложениями, которые обрабатываются удаленно
  • Он предоставляет сервер для использования клиентами.
  • Из-за механизма обратного вызова клиентский процесс задерживается.
  • Взаимоблокировки должны управляться в обратных вызовах.
  • Он продвигает парадигму Peer-to-Peer (P2P) среди задействованных процессов.

RPC для широковещательной рассылки: запрос клиента, который передается по всей сети и обрабатывается всеми серверами, имеющими метод обработки этого запроса, называется широковещательным RPC. Функции широковещательного RPC включают в себя:

  • У вас есть возможность выбрать, следует ли транслировать сообщение запроса клиента.
  • Это также дает вам возможность объявлять широковещательные порты.
  • Это помогает уменьшить нагрузку на физическую сеть.

RPC в пакетном режиме: RPC в пакетном режиме позволяет клиенту выстраивать и разделять запросы RPC в буфере передачи перед их отправкой на сервер одним пакетом по сети. Возможности пакетного режима RPC включают:

  • Это уменьшает накладные расходы на запросы к серверу, отправляя их все сразу по сети.
  • Он используется для приложений, требующих низкой скорости соединения.
  • Это требует использования надежного протокола передачи.

Локальный вызов процедуры против удаленного вызова процедуры:

  • У удаленных вызовов процедур непересекающееся адресное пространство, т.е. другое адресное пространство, в отличие от локальных вызовов процедур.
  • Удаленные вызовы процедур более подвержены сбоям из-за возможного сбоя процессора или проблем со связью в сети, чем локальные вызовы процедур.
  • Из-за сети связи удаленные вызовы процедур занимают больше времени, чем локальные вызовы процедур.

Преимущества удаленного вызова процедур:

  • Техника использования вызовов процедур в RPC позволяет языкам высокого уровня обеспечивать связь между клиентами и серверами.
  • Этот метод подобен вызову локальной процедуры, но с той разницей, что вызываемая процедура выполняется в другом процессе и на другом компьютере.
  • Модель, ориентированная на потоки, также поддерживается RPC в дополнение к модели процессов.
  • Механизм RPC используется для сокрытия основного метода передачи сообщений.
  • Количество времени и усилий, необходимых для переписывания и разработки кода, минимально.
  • И распределенная, и локальная среды могут выиграть от удаленных вызовов процедур.
  • Чтобы повысить производительность, он опускает несколько уровней протокола.
  • Абстракция обеспечивается через RPC. Например, пользователю неизвестна природа передачи сообщений при сетевой связи.
  • RPC расширяет возможности использования приложений в распределенной среде.

Недостатки удаленных вызовов процедур:

  • В удаленных вызовах процедур параметры передаются только значениями, поскольку значения указателей не допускаются.
  • Он включает в себя систему связи с другой машиной и другим процессом, поэтому этот механизм чрезвычайно подвержен сбоям.
  • Концепция RPC может быть реализована различными способами, поэтому не существует стандарта.
  • Из-за основанной на взаимодействии природы в RPC нет гибкости для аппаратной архитектуры.
  • Из-за удаленного вызова процедуры стоимость процесса увеличилась.