思考gRPC :为什么是HTTP/2

  • 时间:
  • 浏览:1
  • 来源:幸运飞艇_幸运飞艇官方

HTTP/2是先有实践再有标准,一些一阵一阵要。所以有不成功的标准全是先有一大堆厂商讨论出标准后有实现,意味 混乱而不可用,比如CORBA。HTTP/2的前身是Google的SPDY,这样 Google的实践和推动,意味 全是会有HTTP/2。

HTTP/2里的Stream还还能否 设置优先级,尽管在rpc里意味 用的比较少,而且一些繁杂的场景意味 会用到。

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

简而言之,gGRPC把元数据塞进去去去HTTP/2 Headers里,请求参数序列化已经 塞进去去去 DATA frame里。

gRPC选则基于HTTP/2,这样 它的性能肯定不与非 最顶尖的。而且对于rpc来说中庸的qps还能否 接受,通用和兼容性才是最重要的事情。

HTTP/2 标准两种是要能另有一个多 TCP连接,而且实际在gRPC里是会有多个TCP连接,使用时前要注意。

尽管gRPC它意味 替换不了內部的RPC实现,而且在开放互通的时代,不止在k8s上,gRPC会有不多的舞台还能否 施展。

我各自 虽然 官方的文章令人印象深刻的点:

HTTP/2 里一次gRPC调用前要解码两次

还能否 看多下面那先 Header:

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

rpc的元数据的传输缺陷高效

而且大多数清况 下,讨论全是基于gRPC over HTTP2。

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

在正式讨论gRPC为那先 选则HTTP/2已经 ,亲戚亲戚朋友先来简单了解下HTTP/2。

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

Google两种把一些事情想清楚了,它并这样 把內部的Stubby开源,已经 选则重新做。现在技术这样 开放,私有协议的空间这样 小。

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

HTTP/2还能否 简单用另有一个多 图片来介绍:

还能否 看多:

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

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

比如传统的rpc dubbo,前要写另有一个多 dubbo filter,前要考虑把鉴权相关的信息通过thread local传递进去。rpc协议两种也前要支持。总之,非常繁杂。实际上绝大每项公司里的rpc全是这样 鉴权的,还能否 随便调。

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

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

在业界,有所以有支持stream的方案,比如基于websocket的,意味 rsocket。而且那先 方案全是是通用的。

我各自 认为另有一个多 重要的意味 是,在Cloud Native的潮流下,开放互通的需求必然会产生基于HTTP/2的RPC。即使这样 gRPC,也会有其它基于HTTP/2的RPC。

近10年来,Google制定标准的能力这样 强。下面列举一些标准:

当然google也并非全是成功,所以有事情它想推也失败了,比如Chrome的Native Client。

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

目前所以有网站都意味 跑在HTTP/2上了,包括alibaba。

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

尽管HPAC还能否 压缩HTTP Header,而且对于rpc来说,选则另有一个多 函数调用,还能否 繁杂为另有一个多 int,假若两端去协商过一次,里面直接查表就还能否 了,不前要像HPAC那样编码解码。

还能否 考虑专门对gRPC做另有一个多 优化过的HTTP/2解析器,减少一些通用的正确处理,感觉还能否 提升性能。

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

来自:https://hpbn.co/

而且请求的参数在DATA frame里: