ScholarGate
Ассистент

Удаленный вызов и промежуточное программное обеспечение

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

Найти тему в PaperMindСкороFind papers & topics
Tools & resources
Скачать слайды
Learn & explore
ВидеоСкоро

Definition

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

Scope

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

Core questions

  • Как сетевое взаимодействие может быть представлено с удобством вызова локальной процедуры?
  • Какая семантика вызовов достижима при наличии потери сообщений и сбоев процессов?
  • Где абстракция прозрачности местоположения неизбежно нарушается?

Key theories

Удаленный вызов процедур
Абстракция RPC упаковывает удаленное взаимодействие как локально выглядящий вызов, при этом заглушки клиента и сервера маршалируют и демаршалируют аргументы; достижение даже семантики «не более одного раза» требует тщательной обработки повторной передачи и обнаружения дубликатов.
Многоуровневое промежуточное программное обеспечение
Промежуточное программное обеспечение располагается между операционной системой и приложением для предоставления служб именования, маршалинга и вызова, начиная от брокеров запросов объектов до систем, ориентированных на сообщения и публикации/подписки.
Ограничения прозрачности распределения
Задержка, частичные сбои, параллелизм и доступ к памяти означают, что удаленные объекты не могут быть полностью неотличимы от локальных, поэтому проекты, игнорирующие эти различия, как правило, выходят из строя при нагрузке или разделении.

Clinical relevance

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

History

Статья Биррелла и Нельсона 1984 года утвердила RPC как практическую абстракцию; 1990-е годы принесли объектно-ориентированное промежуточное программное обеспечение, такое как CORBA и Java RMI, что было дополнено влиятельным предупреждением Уолдо и его коллег об ограничениях прозрачности; современные фреймворки продолжают эту линию с легковесным, управляемым схемой RPC через Интернет.

Debates

Должны ли удаленные вызовы выглядеть точно так же, как локальные?
Полная прозрачность местоположения упрощает программирование, но скрывает задержку и частичные сбои, что приводит к хрупким системам; противоположная точка зрения, сформулированная Уолдо и его коллегами, состоит в том, что распределение должно быть раскрыто, чтобы разработчики могли явно обрабатывать сбои.

Key figures

  • Andrew Birrell
  • Bruce Nelson
  • Jim Waldo
  • Andrew S. Tanenbaum

Related topics

Seminal works

  • birrell1984
  • waldo1994

Frequently asked questions

Что означает семантика вызова «не более одного раза»?
Она гарантирует, что удаленная операция выполняется либо ноль, либо один раз, но не более, даже если запрос передается повторно. Это общая практическая цель, поскольку выполнение «ровно один раз» гораздо сложнее гарантировать при сбоях.

Methods for this concept

Related concepts