Цель состоит в том, чтобы внедрить протокол транспортного уровня и уровня приложений, который лучше работает в латентности и пропускной способности сети. В настоящее время приложение использует REST с HTTP/1.1, и мы испытываем высокую задержку. Мне нужно решить эту проблему с задержкой, и я открыт для использования gRPC (HTTP/2) или REST/HTTP2.
HTTP/2:
- Multiplexed
- Одиночное TCP-соединение
- Двоичный вместо текстового
- сжатие заголовка
- Сервер Push
Я знаю все вышеперечисленные преимущества. Вопрос № 1: Если я использую REST с HTTP/2, я уверен, я получу значительное улучшение производительности по сравнению с REST с HTTP/1.1, но как это соотносится с gRPC (HTTP/2)?
Мне также известно, что gRPC использует прото-буфер, который является лучшим методом двоичной сериализации для передачи структурированных данных на провод. Прото-буфер также помогает в разработке агностического подхода к языку. Я согласен с этим, и я могу реализовать ту же функцию в REST, используя graphQL. Но моя озабоченность связана с сериализацией: Вопрос № 2: Когда HTTP/2 реализует эту двоичную функцию, использует ли прото-буфер дополнительное преимущество поверх HTTP/2?
Вопрос № 3: Что касается потоковых, двунаправленных прецедентов, как сравнить gRPC (HTTP/2) с (REST и HTTP/2 )?
В Интернете существует так много блогов/видео, которые сравнивают gRPC (HTTP/2) с (REST и HTTP/1.1), например это. Как уже говорилось ранее, я хотел бы знать различия, преимущества при сравнении GRPC (HTTP/2) и (REST с HTTP/2).