热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用HTTP/2,gRPC(HTTP/2)比REST快吗?

如何解决《使用HTTP/2,gRPC(HTTP/2)比REST快吗?》经验,为你挑选了2个好方法。

目标是引入更好的延迟网络吞吐量的传输和应用层协议.目前,该应用程序使用RESTHTTP/1.1,我们遇到高延迟.我需要解决这个延迟问题,我可以使用gRPC(HTTP/2)REST/HTTP2.

HTTP/2:

    单TCP连接

    二进制而不是文本

    标头压缩

    服务器推送

我知道上述所有优点.问题1:如果我使用REST/HTTP/2,我相信,与使用HTTP/1.1的REST相比,我将获得显着的性能提升,但这与gRPC(HTTP/2)相比如何?

我也知道gRPC使用proto buffer,这是用于在线路上传输结构化数据的最佳二进制序列化技术.Proto缓冲区还有助于开发一种与语言无关的方法.我同意这一点,我可以使用graphQL在REST中实现相同的功能.但我关注的是序列化问题:问题2:HTTP/2实现这个二进制特性时,使用proto缓冲区是否在HTTP/2之上提供了额外的优势?

问题3:流媒体,双向用例方面,gRPC(HTTP/2)如何与(REST和HTTP/2)进行比较?

有这么多的博客/视频出在与像(REST和HTTP/1.1)比较GRPC(HTTP/2)互联网这个.如前所述,我想知道比较GRPC(HTTP/2)和(REST与HTTP/2)的差异和好处.



1> Carl Mastran..:

默认情况下,gRPC并不比REST over HTTP/2更快,但它为您提供了使其更快的工具.使用REST有些事情很难或不可能.

选择性消息压缩.在gRPC中,流式RPC可以决定压缩或不压缩消息.例如,如果您通过单个流(或实际上任何混合的可压缩内容)传输混合文本和图像,则可以关闭图像的压缩.这样可以避免压缩已压缩的数据,这些数据不会变小,但会烧毁CPU.

一流的负载均衡.虽然点对点连接没有改进,但gRPC可以智能地选择要向其发送流量的后端.(这是库功能,而不是有线协议功能).这意味着您可以将请求发送到负载最少的后端服务器,而无需使用代理.这是一个延迟胜利.

重新优化.gRPC(图书馆)处于连续基准测试中,以确保没有速度回归.这些基准正在不断改进.同样,这与gRPC协议没有任何关系,但是你的程序使用gRPC会更快.

正如nfirvine所说,您将通过使用Protobuf看到您的大部分性能提升.虽然你可以将proto与REST一起使用,但它与gRPC非常完美地集成在一起.从技术上讲,您可以将JSON与gRPC一起使用,但大多数人在习惯protos之后不想支付性能成本.


我更新了响应以链接到仪表板。我没有直接解释这些内容的文档,但我是核心贡献者。

2> nfirvine..:

我无论如何都不是这方面的专家,我没有任何数据支持这一点.

您正在谈论的"二进制功能"是HTTP/2帧的二进制表示.内容本身(JSON有效负载)仍然是UTF-8.您可以压缩该JSON并进行设置Content-Encoding: gzip,就像HTTP/1一样.

但gRPC也进行gzip压缩.实际上,我们正在谈论gzip压缩的JSON与gzip压缩的protobufs之间的区别.

可以想象,压缩的protobufs应该以各种方式击败压缩的JSON,否则protobufs就会失败.

除了无处不在的JSON与protobufs之外,我可以看到使用protobufs的唯一缺点是你需要.proto来解码它们,比如在tcpdump情况下.


推荐阅读
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • 本文全面解析了 gRPC 的基础知识与高级应用,从 helloworld.proto 文件入手,详细阐述了如何定义服务接口。例如,`Greeter` 服务中的 `SayHello` 方法,该方法在客户端和服务器端的消息交互中起到了关键作用。通过实例代码,读者可以深入了解 gRPC 的工作原理及其在实际项目中的应用。 ... [详细]
  • 深入解析SSL Strip攻击机制
    本文详细介绍了SSL Strip(一种网络攻击形式)的工作原理及其对网络安全的影响。通过分析SSL与HTTPS的基本概念,探讨了SSL Strip如何利用某些网站的安全配置不足,实现中间人攻击,以及如何防范此类攻击。 ... [详细]
  • 使用LVS与ldirectord实现高可用负载均衡
    本文介绍了如何通过LVS(Linux Virtual Server)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。 ... [详细]
  • 深入分析十大PHP开发框架
    随着PHP技术的发展,各类开发框架层出不穷,成为了开发者们热议的话题。本文将详细介绍并对比十款主流的PHP开发框架,旨在帮助开发者根据自身需求选择最合适的工具。 ... [详细]
  • Web前端性能提升指南:简化JavaScript与消除重复脚本
    本文为Web前端性能优化系列的第七篇,重点探讨简化JavaScript代码及清除重复脚本的方法。通过这些技术,可以显著提高网页加载速度和用户体验。了解更多信息,请参阅我们的完整指南:Web前端性能优化。 ... [详细]
  • 本文详细介绍了Linux操作系统中的cp和scp命令,包括它们的基本使用方法、常见选项以及如何通过scp命令安全地在不同主机之间传输文件。 ... [详细]
  • 本文详细介绍了如何使用 PHP 编程语言输出 99 乘法表,包括使用不同的循环结构如 do-while、for 循环等方法,并提供了具体的代码示例。 ... [详细]
  • 本文探讨了前端包管理器的核心功能,包括注册机制、文件存储、上传下载、以及依赖分析等关键特性,并介绍了几种流行的前端包管理工具。 ... [详细]
  • 本文记录了Android学习的初期阶段,包括Android的基本架构、Dalvik虚拟机与JVM的区别、ADB工具的使用以及应用程序的打包安装流程。 ... [详细]
  • PHP调用Shell命令的多种方法及环境配置指南
    本文详细介绍了在PHP中调用Shell命令的不同方式及其应用场景,同时提供了在Ubuntu系统中配置PHP以支持Shell命令执行的具体步骤。此外,还涵盖了安装与配置Apache服务器及PHP环境的过程,以便于开发者能够顺利地在Web环境中执行Shell脚本。 ... [详细]
  • 本文深入探讨了Redis中的两种主要持久化方式——RDB(Redis Database)和AOF(Append Only File),并详细解析了两者的实现机制、优缺点以及在实际应用中的选择策略。 ... [详细]
author-avatar
Ms丶娇丶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有