Микросервисная связь [синхронная связь HTTP|RPC, асинхронная связь MQ]

концепция

Сервис A вызывает сервис B, сервис B вызывает сервис C, сервис C вызывает сервис D, то есть связь между микросервисами (это также можно назвать вызовами между микросервисами)

Синхронная связь HTTP

  • Облегченный протокол связи, часто используемый для связи между различными микросервисами, а также самый простой метод связи.
  • Используя RESTful в качестве спецификации разработки, метод вызова HTTP, предоставляемый службой, представляет собой REST API (например, GET, POST, PUT, DELETE и т. д.), который стал популярной альтернативой традиционным веб-службам SOAP.
  • Конкретные библиотеки классов включают httpclient, RestTemplate, OkHttp, включая OpenFegin в Springcloud.
  • Но когда вызовы между службами более частые, мы обычно не используем HTTP-вызовы, а выбираем RPC-вызовы на основе TCP.

Синхронная связь RPC

  • RPC означает удаленный вызов процедур, который обеспечивает более эффективную производительность вызовов и поддерживает более высокий уровень параллелизма.
  • Поскольку процесс связи RPC находится на транспортном уровне (процесс связи HTTP завершается на уровне приложения), использование метода вызова RPC требует установления соединения Socket между уровнем службы и клиентом для реализации обмена двоичными данными.
  • RPC ориентирован на службы и фокусируется на поведении и действиях, тогда как REST ориентирован на ресурсы и делает упор на вещи и существительные, описывающие приложения.
  • Структура RPC защищает базовый процесс коммуникации. Это основная ценность структуры RPC, позволяющая нам больше сосредоточиться на развитии бизнеса.

Структура реализации протокола RPC

Основные платформы RPC включают Dubbo, gRPC, bRPC, Thrift, RMI, SpringCloud и т. д.

Со звезды GitHub: Dubbo > gRPC > bRPC > Thrift.

 

Асинхронная связь

  • Когда клиент обращается к серверу, ему не нужно ждать ответа сервера. Он должен использовать асинхронные вызовы. В конце концов, стоимость использования HTTP или RPC для преобразования в асинхронные вызовы относительно высока, поэтому его проще использовать. MQ (очередь сообщений очереди сообщений) для реализации асинхронных вызовов между службами.
  • Асинхронная связь между микросервисами достигается посредством очередей сообщений. Каждому сервису необходимо уделять внимание только своей собственной очереди сообщений, обеспечивая развязку между сервисами. Общие очереди сообщений включают RabbitMQ, Kafka, ActiveMQ и т. д.

Подведем итог

  • Когда служба вызывает другую службу, самым простым является синхронный вызов на основе HTTP. Пока целевая служба предоставляет соответствующий адрес HTTP-запроса (включая имя домена или IP-адрес, порт, путь и т. д.), вызывающая сторона может использовать Адрес HTTP-запроса. Вызов целевой службы.
  • Когда вызовы между службами происходят чаще, вам необходимо выбрать вызовы RPC на основе TCP. Этот метод может обеспечить более эффективную производительность и поддержку более высокого параллелизма.
  • Когда клиент может обращаться к серверу, не дожидаясь немедленного ответа сервера, следует использовать асинхронные вызовы.Проще в использовании реализовать асинхронные вызовы между сервисами на основе MQ.
  • Когда вызовы между службами необходимо синхронизировать, MQ можно использовать для разработки структуры вызовов RPC на основе режима ответа на запрос.

другой

Разница между протоколом HTTP и протоколом RPC

  • функциональный уровень

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

    • http — это развитый протокол прикладного уровня. Он определяет формат сообщения связи (заголовок запроса/ответа, тело и т. д.). К протоколу http относятся только те сообщения, которые соответствуют характеристикам этого протокола.
    • RPC - это просто спецификация протокола связи, которая не была реализована.Только структура связи, реализованная в соответствии со спецификацией протокола связи RPC, является конкретной реализацией протокола, например dubbo и grpc, поэтому мы можем настраивать спецификации сообщений и собственные методы сериализации. , настроить тип протокола сетевой связи в качестве структуры реализации RPC и т. д.
  • Уровень приложения

    • И протокол http, и платформа, реализующая спецификацию RPC, могут реализовать служебную связь между сетевыми узлами, а их нижние уровни используют протокол TCP/IP в качестве основы для связи. Мы можем настроить уровень протокола сетевой связи RPC, чтобы его можно было реализовать через протокол http, например grpc, openFegin.

Guess you like

Origin blog.csdn.net/qq_34020761/article/details/132521731