思考gRPC :为什么是HTTP/2

  • 时间:
  • 浏览:1
  • 来源:大发5分6合APP下载_大发5分6合APP官网

只讨论协议某种生活的实现,不考虑序列化。

准确来说为那先 会经常再次出现基于HTTP/2的RPC?

一次是HEADERS frame,一次是DATA frame。

HTTP/2是先有实践再有标准,这些 有点硬要。统统不成功的标准一定会先有一大堆厂商讨论出标准后有实现,原因混乱而不可用,比如CORBA。HTTP/2的前身是Google的SPDY,没人 Google的实践和推动,一点一定会会有HTTP/2。

还没人 看完:

* HTTP/1里的header对应HTTP/2里的 HEADERS frame

* HTTP/1里的payload对应HTTP/2里的 DATA frame

在正式讨论gRPC为那先 选泽HTTP/2前一天,大伙儿先来简单了解下HTTP/2。

还没人 看完下面那先 Header:

目前统统网站都一点跑在HTTP/2上了,包括alibaba。

另一方觉得 官方的文章令人印象深刻的点:

一点大多数情况下,讨论一定会基于gRPC over HTTP2。

尽管HPAC还没人 压缩HTTP Header,一点对于rpc来说,选泽一另1个多函数调用,还没人 复杂为一另1个多int,也不我两端去协商过一次,上端直接查表就还没人 了,不没人 像HPAC那样编码解码。

还没人 考虑专门对gRPC做一另1个多优化过的HTTP/2解析器,减少一点通用的除理,感觉还没人 提升性能。

HTTP/2还没人 简单用一另1个多图片来介绍:

gRPC在Google的内部内部结构也是先用在Google Cloud Platform和公开的API上:https://opensource.google.com/projects/grpc

HTTP/2 标准某种生活是没人 一另1个多TCP连接,一点实际在gRPC里是会有多个TCP连接,使用时没人 注意。

rpc的元数据的传输存在问题高效

另一方认为一另1个多重要的原因是,在Cloud Native的潮流下,开放互通的需求必然会产生基于HTTP/2的RPC。即使没人 gRPC,也会有其它基于HTTP/2的RPC。

下面从一另1个多真实的gRPC SayHello请求,查看它在HTTP/2上是怎么实现的。用wireshark抓包:

gRPC是google开源的高性能跨语言的RPC方案。gRPC的设计目标是在任何环境下运行,支持可插拔的负载均衡,跟踪,运行情况检查和身份验证。它不仅支持数据中心内部内部结构和跨数据中心的服务调用,它也适用于分布式计算的最后一千公里,将设备,移动应用任务管理器池池和浏览器连接到后端服务。

近10年来,Google制定标准的能力没人 强。下面列举一点标准:

在Chrome浏览器里,打开chrome://net-internals/#http2,还没人 看完http2链接的信息。

HTTP/2 里一次gRPC调用没人 解码两次

准确来说gRPC设计上是分层的,底层支持不同的协议,目前gRPC支持:

尽管gRPC它一点替换不了内部内部结构的RPC实现,一点在开放互通的时代,不止在k8s上,gRPC会有越多的舞台还没人 施展。

gRPC目前是k8s生态里的事实标准。 gRPC是是不是会成为更多地方,更大领域的RPC标准?

gRPC选泽基于HTTP/2,没人 它的性能肯定越多是最顶尖的。一点对于rpc来说中庸的qps还没人 接受,通用和兼容性才是最重要的事情。

来自:https://hpbn.co/

当然google也暂且一定会成功,统统事情它想推也失败了,比如Chrome的Native Client。

在业界,有统统支持stream的方案,比如基于websocket的,一点rsocket。一点那先 方案都一定会通用的。

一点请求的参数在DATA frame里:

HTTP/2里的Stream还还没人 设置优先级,尽管在rpc里一点用的比较少,一点一点复杂的场景一点会用到。

比如传统的rpc dubbo,没人 写一另1个多dubbo filter,没人 考虑把鉴权相关的信息通过thread local传递进去。rpc协议某种生活也没人 支持。总之,非常复杂。实际上绝大部分公司里的rpc一定会没人 鉴权的,还没人 随便调。

简而言之,gGRPC把元数据装进HTTP/2 Headers里,请求参数序列化前一天装进 DATA frame里。

Google某种生活把这些 事情想清楚了,它并没人 把内部内部结构的Stubby开源,一点选泽重新做。现在技术没人 开放,私有协议的空间没人 小。

实际上先用上HTTP/2的也是手机和手机浏览器。移动互联网推动了HTTP/2的发展和普及。