Протокол віддаленого виклику процедури (RPC) у розподіленій системі
⚡ Розумний підсумок
Віддалений виклик процедур (RPC) — це протокол міжпроцесного зв'язку, який дозволяє програмі виконувати процедуру в іншому адресному просторі або на іншій машині, приховуючи мережеві деталі за звичайним локальним викликом функції в розподілених клієнт-серверних системах.

Що таке RPC?
Віддалений процедурний виклик (RPC) є міжпроцесовий зв’язок техніка, що використовується для клієнт-серверних програм. Повна форма RPC - це віддалений виклик процедур (Remote Procedure Call). Механізми RPC використовуються, коли комп'ютерна програма змушує виконувати процедуру або підпрограму в іншому адресному просторі, закодованому як звичайний виклик процедури, без явного кодування програмістом деталей для віддаленої взаємодії.
Цей виклик процедури також керує низькорівневими транспортними протоколами, такими як UDP та TCP/IP, для передачі даних повідомлень між програмами.
Типи RPC
Є три типи RPC:
- Зворотний виклик RPC
- Трансляція RPC
- Пакетний режим RPC
Зворотний виклик RPC
Цей тип RPC забезпечує парадигму однорангового з’єднання (P2P) між процесами-учасниками. Це допомагає процесу діяти як клієнт, так і сервер.
Функції зворотного виклику RPC:
- Вирішує проблеми інтерактивних програм, що обробляються дистанційно.
- Надає серверу дескриптор клієнта.
- Зворотний виклик змушує клієнтський процес чекати.
- Керує блокуваннями зворотних викликів.
- Це сприяє впровадженню парадигми взаємодії між процесами-учасниками.
Трансляція RPC
Широкомовний RPC – це запит клієнта, який розсилається по мережі та обробляється всіма серверами, що мають метод для обробки цього запиту.
Функції Broadcast RPC:
- Дозволяє вказати, що повідомлення запиту клієнта має бути розіслане широкомовно.
- Ви можете оголосити широкомовні порти.
- Це допомагає зменшити навантаження на фізичну мережу.
Пакетний режим RPC
Пакетний режим RPC допомагає ставити окремі RPC-запити в чергу в буфер передачі на стороні клієнта, а потім надсилати їх мережею одним пакетом на сервер.
Функції пакетного режиму RPC:
- Це мінімізує накладні витрати, пов'язані з надсиланням запиту, оскільки надсилає запити через мережу на сервер однією партією.
- Цей тип протоколу RPC ефективний лише для програм, яким потрібна нижча швидкість викликів.
- Для цього потрібен надійний протокол передачі.
RPC Archiтектура
Архітектура RPC складається з п'яти компонентів програми:
- Клієнт
- Заглушка клієнта
- RPC Runtime
- Заглушка сервера
- сервер
RPC Archiтектура
Як працює RPC?
Під час процесу RPC виконуються такі кроки:
Крок 1) Клієнт, клієнтський заглушка та один екземпляр середовища виконання RPC виконуються на клієнтській машині.
Крок 2) Клієнт запускає процес клієнтського заглушки, передаючи параметри звичайним чином. Клієнтська заглушка зберігається у власному адресному просторі клієнта. Він також запитує локальне середовище виконання RPC надіслати запит до серверної заглушки.
Крок 3) На цьому етапі користувач отримує доступ до RPC, здійснюючи звичайний локальний виклик процедури. RPC Runtime керує передачею повідомлень між клієнтом і сервером через мережу. Він також виконує завдання повторної передачі, підтвердження, маршрутизації та шифрування.
Крок 4) Після завершення серверної процедури виконання повертається до серверного заглушки, яка упаковує (маршалює) повернуті значення в повідомлення. Потім серверна заглушка надсилає повідомлення назад на транспортний рівень.
Крок 5) На цьому кроці транспортний рівень надсилає повідомлення результату назад транспортному рівню клієнта, який повертає повідомлення до клієнтського заглушки.
Крок 6) На цьому етапі клієнтський заглушка демаршалює (розпаковує) повернені параметри в результуючому пакеті, і виконання повертається до викликаючої сторони.
Характеристика RPC
Ось основні характеристики RPC:
- Викликана процедура знаходиться в іншому процесі, який, ймовірно, знаходиться на іншій машині.
- Процеси не використовують спільний адресний простір.
- Параметри передаються лише значеннями.
- RPC виконується в середовищі серверного процесу.
- Він не пропонує доступу до середовища викликаючої процедури.
Особливості RPC
Ось важливі функції RPC:
- Простий синтаксис виклику.
- Пропонує відому семантику.
- Забезпечує чітко визначений інтерфейс.
- Він може взаємодіяти між процесами на одній або різних машинах.
Переваги RPC
Ось переваги/плюси RPC:
- RPC допомагає клієнтам взаємодіяти із серверами за допомогою традиційного використання викликів процедур мовами високого рівня.
- RPC моделюється за моделлю локального виклику процедури, але викликана процедура, найімовірніше, виконується в іншому процесі та зазвичай на іншому комп'ютері.
- RPC підтримує процесоорієнтовані та потокоорієнтовані моделі.
- RPC приховує внутрішній механізм передачі повідомлень від користувача.
- Він фіксує багато рівнів протоколу для підвищення продуктивності.
- RPC забезпечує абсtracція; наприклад, характер мережевого зв'язку, що полягає в передачі повідомлень, залишається прихованим від користувача.
- RPC можна використовувати як у розподіленому, так і в локальному середовищі.
- Зусилля, необхідні для переписування та переробки коду, мінімальні.
Недоліки RPC
Ось мінуси/недоліки використання RPC:
- Віддалений виклик процедур передає параметри лише за значеннями; значення вказівника (посилання) не дозволені.
- Час виклику (і повернення) віддаленої процедури — накладні витрати — значно вищий, ніж для локальної процедури.
- Цей механізм дуже вразливий до збоїв, оскільки він включає систему зв'язку, іншу машину та інший процес.
- Концепцію RPC можна реалізувати різними способами, тому єдиного стандарту немає.
- Він не пропонує гнучкості для апаратної архітектури, оскільки здебільшого базується на взаємодії.
- Вартість процесу зростає через виклик віддалених процедур.

