热门标签 | 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情况下.


推荐阅读
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • Hyperledger Fabric 1.4 节点 SDK 快速入门指南
    本文将详细介绍如何利用 Hyperledger Fabric 1.4 的 Node.js SDK 开发应用程序。通过最新版本的 Fabric Node.js SDK,开发者可以更高效地构建和部署基于区块链的应用,实现数据的安全共享和交易处理。文章将涵盖环境配置、SDK 安装、示例代码以及常见问题的解决方法,帮助读者快速上手并掌握核心功能。 ... [详细]
  • 本文全面解析了 gRPC 的基础知识与高级应用,从 helloworld.proto 文件入手,详细阐述了如何定义服务接口。例如,`Greeter` 服务中的 `SayHello` 方法,该方法在客户端和服务器端的消息交互中起到了关键作用。通过实例代码,读者可以深入了解 gRPC 的工作原理及其在实际项目中的应用。 ... [详细]
  • Day17_16_SpringCloud教程之Feign高级功能详解
    Feign高级功能详解注意:本篇Feign的高级功能实现请参考上一篇博客.Feign的高级功能实现以上一篇博客代码为基础,我们主要修改service_feign_consume ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本教程详细介绍了如何使用 Spring Boot 创建一个简单的 Hello World 应用程序。适合初学者快速上手。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 成都服务器租赁适用于哪些网站业务部署——Vecloud专业解析
    成都,作为四川省的省会,不仅是西南地区唯一的副省级城市,也是国家重要的高新技术产业基地和商贸物流中心。Vecloud专业解析指出,成都服务器租赁服务特别适合各类网站业务的部署,尤其是需要高效、稳定和安全的在线应用。无论是电子商务平台、内容管理系统还是大数据分析,成都的服务器租赁都能提供强大的支持,满足不同企业的需求。 ... [详细]
  • 网站前端开发的核心理念与必备技能解析 ... [详细]
  • 简介最近一直在纯手工搭建自己的个人博客,其中用到了 ... [详细]
  • java电商,java电商项目面试题
    本文目录一览:1、为什么很多商家选择Java商城系统? ... [详细]
  • react的导出是怎么实现的_22 个让 React 开发更高效更有趣的工具
    英文|https:dev.tojsmanifest22-miraculous-tools-for-react-developers-in-2019-4i46翻译|https:www ... [详细]
  • IIS启用Gzip的方法与优缺点分析是千自学中一篇关于Discuz论坛的文章简介:现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的C ... [详细]
  • 【SpringCloud】 第九篇: 服务链路追踪(Spring Cloud Sleuth)
    前言:必需学会SpringBoot基础知识简介:springcloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总 ... [详细]
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社区 版权所有