Обзор RPC
что такое РПЦ
RPC (удаленный вызов процедур) — это протокол для запроса услуг с удаленного компьютера по сети без знания базовой сетевой технологии. RPC предполагает наличие определенных протоколов, таких как TPC/UDP и т. д., для передачи информационных данных между коммуникационными программами. В семиуровневой модели сети OSI RPC охватывает транспортный уровень и прикладной уровень, а RPC упрощает разработку приложений, включая мультипрограммы, распределенные по сети.
Что это за процесс? Процесс — это бизнес-процесс, вычислительная задача или, проще говоря, программа, которая должна вызывать удаленный процесс, как локальный метод.
В чем разница между местными звонками
Удаленные звонки похожи на отношения на расстоянии, разделенные тысячами гор и рек.
Местный звонок, то есть девушка рядом с вами, и вы можете получить луну первым, когда будете возле водонапорной башни.
Удаленные вызовы должны проходить через сеть, поэтому ответ на несколько порядков медленнее и менее надежен.
режим RPC
RPC принимает режим клиент/сервер и реализуется через режим сообщений запрос-ответ.
Три процесса RPC
==1: Протокол связи== Например: если вам нужно найти кого-то для работы за границей, то вы можете напрямую прилететь или позвонить по телефону или использовать Интернет, чтобы найти кого-то.Процесс поиска кого-то представляет собой протокол связи. ==2: адресация== Поскольку вы хотите найти кого-то для работы, вы должны знать, где находится адрес, вам нужно найти подробный адрес при перелете, вам нужно знать номер телефона, чтобы позвонить, а в Интернете нужно знать, что такое IP . ==3: сериализация данных== Другими словами, языки должны общаться друг с другом, чтобы другие могли работать, и им нужен язык, который все понимают, чтобы общаться друг с другом.
Зачем использовать RPC
1: Обслуживание/Микросервисы 2: Архитектура распределенной системы 3. Сервисы можно использовать повторно 4: Интерактивные вызовы между системами
Различия между RPC и другими протоколами
Вызов удаленного метода RMI — это конкретная реализация RPC.И webservice, и restfull — это RPC, но организация сообщений и протоколы сообщений различаются.
Сценарии использования RPC
Сравните с MQ:
MQ имеет очередь промежуточных узлов, в которой могут храниться сообщения.
Особенности РПК:
Синхронный вызов, для сценариев, где нужно дождаться возвращаемого результата, можно использовать RPC
Особенности сообщения MQ:
Асинхронное одностороннее сообщение, не нужно ждать завершения обработки сообщения
Если вам нужно получить результат синхронно, больше подходит RPC.Если вы хотите использовать простой, также подходит RPC.Операция RPC основана на интерфейсе, операция проста, а используемый метод имитирует вызов локальных методов. асинхронный метод сложнее программировать.
RPC-процесс
1: Клиентская подпрограмма вызывается во время обработки клиента, точно так же, как вызов локального метода с передачей параметров
2: клиент преобразует параметры в сообщение, а затем отправляет сообщение на сервер через системный вызов.
3: локальная операционная система клиента отправляет сообщение от клиента на сервер.
4: сервер передает полученный пакет данных на подсервер
5: субсервер разбивает полученные данные на параметры
6: Подсистема сервера снова вызывает серверный процесс, и результат выполнения процесса отвечает клиенту теми же шагами в обратном направлении.
sub (заглушка): заглушка в распределенных вычислениях — это фрагмент кода, который преобразует параметры, передаваемые между клиентом и сервером во время удаленного вызова процедур (RPC).
Проблемы, которые необходимо решить: 1: Разработка клиентской и серверной частей 2: ранжирование и десортирование параметров 3: Как отправляется сообщение 4: Как представлять результаты процесса и как поступать в нештатных ситуациях 5: Как реализовать безопасный контроль доступа
Концепция Core RPC термин
1: Клиент, клиент 2: сервер, сервер 3: Звонки, запрос 4: ответчик, ответ 5: Службы, сетевая служба состоит из одной или нескольких удаленных сборок. 6: Программы, удаленная программа реализует один или несколько удаленных процессов. 7: Процедуры, процесс, параметры процесса, результат определяется в руководстве по протоколу программы. 8: Версия, изменение протокола совместимости, один сервер может поддерживать несколько версий удаленных программ.
RPC-протокол
В процессе вызова RPC сообщение необходимо упорядочить, а затем отправить.Получатель должен разобрать сообщение как параметр, а результат обработки процесса также необходимо упорядочить и разупорядочить; части сообщения и представление сообщения составляют протокол сообщений. Протокол RPC определяет формат сообщения запроса и сообщения ответа.Помимо TCP, мы можем выбрать или настроить протокол сообщения для реализации взаимодействия RPC.
Фреймворк RPC
Среда разработки программы RPC, которая инкапсулирует маршаллинг параметров, демаршаллинг сообщений и базовую сетевую связь, может быть написана непосредственно на этой основе, фокусируясь только на коде процесса. Обычно используемые фреймворки RPC в области java: Традиционная структура веб-сервиса: apache CXF, apache Axis2 Новые микросервисные фреймворки: Dubbo, springcloud, apache Thrift, ICE, GRPC и т. д.
сервисное воздействие
Удаленный провайдер должен предоставить информацию, связанную с вызовом службы, в той или иной форме, включая, помимо прочего, определение интерфейса службы, структуру данных или файл определения службы промежуточного состояния, а также WSDL-файл веб-службы; вызывающая сторона службы должна получить удаленную службу. через определенный путь Информация, связанная с вызовом
удаленный прокси-объект
Служба, используемая вызывающим сервисом, фактически является локальным прокси удаленной службы, которая реализуется через динамический прокси. В java есть как минимум два типа генерации динамического кода: один — динамический прокси-сервер jdk, а другой — генерация байт-кода: Динамический прокси удобнее в использовании, чем генерация байт-кода, но он уступает по производительности генерации байт-кода, а генерация байт-кода хуже по читабельности кода.
коммуникация
Связь структуры RPC не имеет ничего общего с конкретным протоколом, RPC может быть основан на протоколе HTTP или TCP.
Сериализация
Метод транспортировки и сериализация напрямую влияют на производительность RPC.