Найти в Дзене

Понимание RPC для новичков.

Оглавление

Введение

В последнее время в описаниях вакансий все чаще упоминается знание модного протокола RPC, что заставило меня задуматься: что нужно знать аналитику, чтобы успешно пройти собеседование? Я расскажу вам простыми словами, что такое RPC, как он работает и чем отличается от REST.

Понимание RPC

Что такое RPC?

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

Как работает RPC?

RPC работает следующим образом:

  1. Клиент (тот, кто делает запрос) отправляет запрос на сервер, сообщая, какую функцию он хочет выполнить и какие данные нужно использовать.
  2. Сервер (тот, кто обрабатывает запрос) получает запрос, выполняет функцию и отправляет результат обратно клиенту.

Пример для понимания RPC

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

  1. Клиент (вы): Ваше приложение на телефоне хочет узнать погоду в Нью-Йорке. Оно вызывает удаленную функцию GetWeather("New York") на сервере. Этот вызов функции выглядит так, как будто функция GetWeather находится в вашем приложении, хотя на самом деле она выполняется на удаленном сервере.
  2. Сервер: Сервер получает этот вызов функции GetWeather("New York"), обрабатывает его (возможно, запрашивает данные у другой службы или базы данных) и получает информацию о погоде в Нью-Йорке.
  3. Ответ от сервера: Сервер возвращает результат выполнения функции (например, текущую температуру, влажность, состояние погоды и т.д.) обратно вашему приложению.
  4. Клиент (вы): Ваше приложение получает ответ и показывает вам погоду в Нью-Йорке.

Важное отличие RPC от REST в этом процессе заключается в том, что клиент вызывает функцию напрямую, как если бы она была локальной, и не нужно беспокоиться о деталях HTTP-запросов и ответов.

Вопросы на собеседовании и ответы:

1. Что такое RPC?


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

2. Как работает RPC?


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

Пример: В приложении для прогноза погоды клиент вызывает удаленную функцию GetWeather("New York") на сервере. Сервер обрабатывает запрос, получает данные о погоде и возвращает их клиенту.

3. Чем RPC отличается от REST?


Ответ
: В RPC клиент вызывает функции напрямую, используя бинарные форматы для передачи данных, тогда как в REST используются стандартные HTTP-запросы и текстовые форматы, такие как JSON или XML.


-
RPC: Использует бинарные форматы (например, Protocol Buffers), что делает передачу данных более эффективной.


-
REST: Использует текстовые форматы (например, JSON), что упрощает отладку и чтение данных.


Пример:


-
RPC: Клиент вызывает метод GetWeather(cityName) и получает структурированный ответ.


-
REST: Клиент отправляет GET-запрос на URL /weather?city=New York и получает JSON-ответ.

4. Когда лучше использовать RPC, а когда REST?


Ответ
:


-
RPC: Лучше подходит для внутреннего взаимодействия между микросервисами из-за высокой производительности и низкого оверхеда*. Применяется, когда важна скорость и эффективность передачи данных.


-
REST: Идеален для веб-сервисов и публичных API благодаря своей простоте и совместимости с веб-протоколами. Применяется, когда важно иметь простую интеграцию и стандартные методы взаимодействия.


Пример:


-
RPC: Используется внутри компании для взаимодействия между различными сервисами (например, сервис обработки платежей и сервис управления заказами).


-
REST: Используется для создания публичного API, который могут использовать сторонние разработчики.

5. Какие преимущества у RPC перед REST?

Ответ
: RPC может быть быстрее и эффективнее за счет использования бинарных форматов данных и прямых вызовов функций, что снижает оверхед* по сравнению с REST.


-
Производительность: Бинарные форматы (например, Protocol Buffers) более компактны и быстрее обрабатываются.


-
Прямые вызовы: Вызов функций напрямую упрощает структуру взаимодействия и уменьшает задержки.


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


Оверхед* — это дополнительные ресурсы, затрачиваемые на выполнение задачи, которые не приносят прямого результата, но необходимы для поддержания работы системы.

Мой канал для начинающих аналитиков.