Что такое механизм RPC в распределенной системе?
Удаленный вызов процедур (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 нет гибкости для аппаратной архитектуры.
- Из-за удаленного вызова процедуры стоимость процесса увеличилась.