Процесс взаимодействия протокола RPC

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

Возможности RPC

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

  2. Межъязыковая поддержка: RPC позволяет взаимодействовать программам, написанным на разных языках программирования. Это означает, что одна программа может быть написана на одном языке программирования, а другая программа может быть написана на совершенно другом языке программирования, и они все равно могут взаимодействовать через RPC.

  3. Сериализация и десериализация. В RPC параметры и результаты обычно необходимо сериализовать (преобразовать данные в поток байтов) для передачи, а затем десериализовать на принимающей стороне (восстановить поток байтов в объект данных).

    Это связано с тем, что удаленные вызовы обычно включают передачу данных по сети (передача по сети будет включать преобразование прямого порядка байтов в обратный порядок).

  4. Генерация заглушки/прокси. Чтобы сделать удаленные вызовы RPC прозрачными, обычно необходимо создать заглушку клиента (клиентскую заглушку) и серверную заглушку (серверную заглушку) для каждой удаленной службы. Заглушки используются для сокрытия основных деталей связи, позволяя клиентам и серверам вызывать удаленные процедуры, как если бы они были локальными функциями.

  5. Сетевая связь: RPC использует базовые протоколы сетевой связи, такие как TCP/IP или HTTP, для обеспечения связи между клиентом и сервером.

  6. Обработка ошибок: RPC предоставляет механизм для обработки ошибок, которые могут возникнуть при удаленных вызовах, таких как сбой сети или недоступность сервера. Обычно библиотеки RPC предоставляют обработку исключений или коды ошибок для решения таких ситуаций.

  7. Производительность. Библиотеки RPC обычно стараются обеспечить высокопроизводительные реализации, чтобы гарантировать отсутствие значительных задержек при удаленных вызовах.

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

Реализация RPC

Как упоминалось в приведенной выше концепции, цель протокола RPC — сделать удаленные вызовы такими же простыми, как и локальные вызовы.

Для достижения вышеперечисленных целей нам необходимо подумать о том, как решить следующие проблемы:

  1. Как клиент подключается к удаленному серверу? Как определить IP и номер порта подключенного удаленного устройства?
  2. Как представляются и передаются данные?
  3. Как определить запрос, отправленный клиентом?
  4. Как вызвать указанный целевой метод?

Решение вышеуказанной проблемы заключается в следующем:

  1. Центр регистрации услуг

    Его основная функция — помочь поставщикам услуг зарегистрировать свои услуги, а также помочь потребителям услуг обнаружить и вызвать эти услуги.

    • Регистрация услуг. Поставщик услуг регистрирует свои доступные услуги в центре регистрации услуг. Регистрация обычно включает имя службы, сетевой адрес, номер порта, протокол и другую информацию. Реестр служб запишет эту информацию в свой реестр.
    • Обнаружение услуг: потребители услуг запрашивают список доступных услуг через центр регистрации услуг, чтобы обнаружить и получить информацию о поставщике услуг. Это избавляет потребителей услуг от необходимости вручную настраивать адрес и порт поставщика услуг.
    • Балансировка нагрузки. Некоторые реестры услуг предоставляют функции балансировки нагрузки, чтобы гарантировать равномерное распределение запросов на услуги между различными поставщиками услуг. Это помогает улучшить производительность и доступность системы.
    • Проверка работоспособности службы. Центр регистрации службы обычно проверяет, доступна ли зарегистрированная служба регулярно. Если служба недоступна, реестр может удалить ее из списка служб, чтобы запретить потребителям службы запрашивать недоступные службы.
    • Динамическая конфигурация. Центр регистрации служб позволяет системным администраторам или персоналу по эксплуатации и техническому обслуживанию добавлять, обновлять или удалять информацию о регистрации службы во время выполнения без перезапуска системы или службы.
    • Управление версиями служб. Некоторые реестры служб поддерживают управление версиями служб, позволяющее сосуществовать нескольким версиям служб. Это полезно для постепенного обновления службы или одновременной поддержки нескольких версий клиента.
    • Безопасность. Реестры служб обычно предусматривают меры безопасности, гарантирующие, что только авторизованные поставщики услуг могут регистрировать службы, а только авторизованные потребители услуг могут обнаруживать и вызывать службы.
    • Поддержка нескольких протоколов. Некоторые центры регистрации услуг поддерживают несколько протоколов связи, включая HTTP, gRPC, ZooKeeper и т. д., для адаптации к различным сценариям приложений и стекам технологий.

    Общие центры регистрации услуг RPC включают в себя:

    • ZooKeeper: служба распределенной координации с открытым исходным кодом, которую можно использовать в качестве реестра служб.
    • etcd: система хранения ключей и значений с открытым исходным кодом, которую также можно использовать для регистрации и обнаружения сервисов.
    • Consul: инструмент обнаружения и управления конфигурацией сервисов с открытым исходным кодом с функцией центра регистрации сервисов.
    • Эврика: реестр сервисов Netflix с открытым исходным кодом для микросервисной архитектуры Spring Cloud
    • Nacos: центр регистрации услуг с открытым исходным кодом и платформа управления конфигурацией Alibaba.
  2. Сериализация и десериализация

    Обычно включает передачу данных по сети, поэтому данные необходимо сериализовать (преобразовать данные в поток байтов) для передачи и десериализовать на принимающей стороне (восстановить поток байтов в объект данных).

  3. передача данных

    Клиент отправляет сериализованные параметры запроса на удаленный сервер. Обычно это связано с базовым протоколом сетевой связи, например TCP/IP или HTTP.

  4. отображение метода

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

    • Таблица сопоставления методов. Сервер поддерживает таблицу сопоставления методов, которая сопоставляет имена методов в клиентском запросе с фактическими методами.
    • Анализ запроса: сервер анализирует клиентский запрос, включая имя метода и параметры запроса.
    • Найдите целевой метод. Сервер использует таблицу сопоставления методов, чтобы найти целевой метод, соответствующий запросу клиента.
    • Вызов целевого метода: серверная сторона вызывает найденный целевой метод и передает ему параметры запроса.
    • Метод выполнения: целевой метод выполняет необходимые операции и генерирует результат.
    • Возвращаемый результат: сервер отправляет результат выполнения метода обратно клиенту в качестве ответа.

    Сопоставление методов обычно обеспечивается через некоторую сервисную структуру или библиотеку RPC. Например, gRPC и Apache Thrift предоставляют инструменты для создания заглушек на стороне клиента и заглушек на стороне сервера, которые содержат сопоставление методов и логику сериализации/десериализации. Это делает вызов методов в RPC намного проще и прозрачнее.

Процесс взаимодействия RPC

Схема последовательности взаимодействия RPC

Вставьте сюда описание изображения

Процесс взаимодействия RPC

  1. После запуска сервера он будет активно регистрировать IP-адрес устройства, номер порта и предоставленный список услуг в центре регистрации услуг; если список услуг будет обновлен, сервисный центр уведомит клиента, чтобы избежать исключений, когда клиент вызывает службы.

    После запуска клиент получит список адресов серверов из центра регистрации сервиса.

  2. Клиент и сервер устанавливают сетевое соединение

  3. Служба звонков клиентов

  4. Клиентский прокси (заглушка переводится как заглушка, но прокси более интуитивно понятен) сериализует целевой сервис, целевой метод, параметры вызывающего метода и другую информацию и, наконец, передает данные прокси-серверу.

  5. Агент сервера десериализует данные, анализирует целевую службу, целевой метод и параметры вызова, а также вызывает соответствующие запросы.

  6. Сервер обрабатывает запрос и возвращает результат запроса.

  7. Прокси-сервер сериализует результаты возврата службы и отправляет результаты возврата на сервер.

Supongo que te gusta

Origin blog.csdn.net/Wangguang_/article/details/132720840
RPC
Recomendado
Clasificación