Протокол за извикване на отдалечена процедура (RPC) в разпределена система

⚡ Умно обобщение

Отдалеченото извикване на процедури (RPC) е протокол за междупроцесна комуникация, който позволява на програма да изпълни процедура в друго адресно пространство или машина, скривайки мрежови данни зад обикновено локално извикване на функция в разпределени клиент-сървър системи.

  • 📞 Определение: RPC позволява на клиента да извика процедура на отдалечен сървър, сякаш е локално повикване.
  • 🗂️ Видове: Обратното извикване, излъчването и пакетният RPC се различават по начина, по който заявките се маршрутизират и поставят в опашка.
  • 🏗️ Archiтекстура: Пет части си сътрудничат при всяко повикване: клиент, клиентски stub, RPC runtime, сървърен stub и сървър.
  • 🔄 Как работи: Заглушава параметрите в съобщение и разгрупира резултата, върнат на повикващия.
  • Компромиси: RPC опростява разпределения код, но добавя мрежови разходи и точки на отказ в сравнение с локалните извиквания.
  • 🤖 Ъгъл на изкуствен интелект: gRPC обслужва модели за машинно обучение между микросървиси, а Copilot ускорява писането на RPC stubs.

Отдалечено извикване на процедури (RPC) в разпределена система

Какво е RPC?

Remote Procedure Call (RPC) е междупроцесна комуникация техника, използвана за клиент-сървър приложения. Пълната форма на RPC е Remote Procedure Call (отдалечено извикване на процедура). RPC механизмите се използват, когато компютърна програма кара процедура или подпрограма да се изпълни в различно адресно пространство, кодирано като нормално извикване на процедура, без програмистът изрично да кодира детайлите за отдалеченото взаимодействие.

Това извикване на процедура управлява и ниско ниво на транспортни протоколи, като UDP и TCP/IP, за да пренася данните от съобщенията между програмите.

Видове RPC

Три вида RPC са:

  • RPC за обратно извикване
  • Излъчване RPC
  • RPC в пакетен режим

RPC за обратно извикване

Този тип RPC позволява парадигма от тип „peer-to-peer“ (P2P) между участващите процеси. Той помага на процеса да действа едновременно като клиент и сървър.

Функции на RPC за обратно извикване:

  • Обработва дистанционно обработвани, интерактивни проблеми с приложенията.
  • Предоставя на сървъра идентификатора на клиента.
  • Обратното повикване кара клиентския процес да чака.
  • Управлява блокиранията при обратно извикване.
  • Това улеснява парадигмата на взаимодействие от типа „peer-to-peer“ между участващите процеси.

Излъчване RPC

Излъчването на RPC е заявка на клиент, която се излъчва по мрежата и се обработва от всички сървъри, които имат метода за обработка на тази заявка.

Функции на Broadcast RPC:

  • Позволява ви да укажете, че съобщението със заявка на клиента трябва да бъде излъчено.
  • Можете да декларирате портове за излъчване.
  • Това помага за намаляване на натоварването на физическата мрежа.

RPC в пакетен режим

Пакетният RPC режим помага за поставянето на отделни RPC заявки в буфер за предаване от страна на клиента и след това изпращането им по мрежата наведнъж до сървъра.

Функции на RPC в пакетен режим:

  • Това минимизира разходите, свързани с изпращането на заявка, тъй като изпраща заявките по мрежата наведнъж до сървъра.
  • Този тип RPC протокол е ефективен само за приложения, които се нуждаят от по-ниски скорости на повиквания.
  • Нуждае се от надежден протокол за предаване.

RPC Archiтекстура

RPC архитектурата има основно пет компонента на програмата:

  1. Удовлетвореност
  2. Клиентско заготовка
  3. RPC Runtime
  4. Сървърен пън
  5. Сървър

RPC Archiтекстура

RPC Archiтекстура

Как работи RPC?

Следните стъпки се извършват по време на RPC процеса:

Стъпка 1) Клиентът, клиентският stub и един екземпляр на RPC runtime се изпълняват на клиентската машина.

Стъпка 2) Клиентът стартира процес на клиентски stub, като предава параметри по обичайния начин. Клиентският stub се съхранява в собственото адресно пространство на клиента. Той също така изисква от локалната RPC Runtime среда да изпрати заявката към сървърния stub.

Стъпка 3) На този етап потребителят осъществява достъп до RPC, като извършва обикновено локално извикване на процедура. RPC Runtime управлява предаването на съобщения между клиента и сървъра през мрежата. Той също така изпълнява задачите по повторно предаване, потвърждение, маршрутизиране и криптиране.

Стъпка 4) След завършване на сървърната процедура, изпълнението се връща към сървърния stub, който пакетира (marshals) върнатите стойности в съобщение. След това сървърният stub изпраща съобщението обратно към транспортния слой.

Стъпка 5) В тази стъпка транспортният слой изпраща резултатното съобщение обратно към транспортния слой на клиента, който връща съобщението към клиентския stub.

Стъпка 6) На този етап, клиентският stub демаршалира (разопакова) върнатите параметри в получения пакет и изпълнението се връща към извикващата страна.

Характеристики на RPC

Ето основните характеристики на RPC:

  • Извиканата процедура е в друг процес, който вероятно се намира на друга машина.
  • Процесите не споделят адресно пространство.
  • Параметрите се предават само чрез стойности.
  • RPC се изпълнява в средата на сървърния процес.
  • Не предлага достъп до средата на извикващата процедура.

Характеристики на RPC

Ето важните характеристики на RPC:

  • Прост синтаксис на повикване.
  • Предлага известна семантика.
  • Осигурява добре дефиниран интерфейс.
  • Може да комуникира между процеси на едни и същи или различни машини.

Предимства на RPC

Ето плюсовете/ползите от RPC:

  • RPC помага на клиентите да комуникират със сървърите чрез конвенционалното използване на процедурни извиквания на езици от високо ниво.
  • RPC е моделиран по локално извикване на процедура, но извиканата процедура най-вероятно се изпълнява в различен процес и обикновено на различен компютър.
  • RPC поддържа модели, ориентирани към процеси и нишки.
  • RPC прави вътрешния механизъм за предаване на съобщения скрит от потребителя.
  • Той ангажира много от слоевете на протокола, за да подобри производителността.
  • RPC осигурява абс.tracция; например, естеството на мрежовата комуникация, свързано с предаване на съобщения, остава скрито от потребителя.
  • RPC може да се използва както в разпределена, така и в локална среда.
  • Усилията, необходими за пренаписване и повторно разработване на кода, са минимални.

Недостатъци на RPC

Ето минусите/недостатъците на използването на RPC:

  • Отдалеченото извикване на процедури предава параметри само по стойности; стойностите на указатели (препратки) не са разрешени.
  • Времето за извикване (и връщане) на отдалечени процедури – режийните разходи – е значително по-високо, отколкото при локална процедура.
  • Този механизъм е силно уязвим за повреди, тъй като включва комуникационна система, друга машина и друг процес.
  • Концепцията RPC може да бъде реализирана по различни начини, така че няма единен стандарт.
  • Не предлага гъвкавост за хардуерната архитектура, тъй като е базирана предимно на взаимодействие.
  • Цената на процеса се увеличава поради извикването на отдалечени процедури.

Въпроси и Отговори

RPC предоставя действията като отдалечени процедури, докато REST предоставя данните като ресурси, достъпни чрез HTTP команди. RPC се усеща като извикване на локална функция; REST се фокусира върху ресурси и състояние.

gRPC е Googleе модерна, високопроизводителна RPC рамка. Тя използва HTTP/2 и Protocol Bufferи поддържа двупосочно стрийминг, което го прави популярен за комуникация с микросървиси.

RPC може да бъде и двете. Синхронното повикване блокира, докато сървърът върне резултат, докато асинхронното повикване връща резултата веднага и обработва отговора по-късно. Фреймуърци като gRPC поддържат и двата стила.

RPC е форма на IPC, която работи на отделни машини. Докато много IPC методи споделят памет на един хост, RPC обменя съобщения по мрежа, така че процесите на различни компютри могат да си сътрудничат.

Често срещаните RPC имплементации включват gRPC, Apache Thrift, XML-RPC, JSON-RPC и Java RMI. Те се различават по формат на данните и транспорт, но всички позволяват на клиента да извика процедура на отдалечен сървър.

RPC не е защитен по подразбиране; сигурността зависи от транспорта. Имплементациите добавят TLS криптиране, токени за удостоверяване и контрол на достъпа за защита на повикванията.

Платформите за машинно обучение използват RPC, особено gRPC, за да предоставят прогнози за модели между микросървиси. Клиентът изпраща функции и получава резултат от извода, keeping Системи с изкуствен интелект, бързо и слабо свързани.

Да. GitHub Copilot може да създава .proto дефиниции на услуги, клиентски заготовки и сървърни манипулатори за gRPC. Разработчиците все пак трябва да преглеждат генерираните интерфейси, обработката на грешки и версиите, преди да ги внедрят в продукция.

Обобщете тази публикация с: