我只是好奇,如果我在http2中遗漏某些内容会使其在服务到服务通信中更有效率,例如在微服务架构中。
它的改进是否与最终用户(浏览器)有关?
答案 0 :(得分:5)
如果您在微服务之间发出许多并发请求,那么connection multiplexing会带来好处。您无需在客户端上管理TCP连接池,并限制服务端的传入TCP连接数。
某些服务可能会受益于服务器推送,但这实际上取决于服务的功能。 如果具有重复元数据的服务具有高流量,则标头压缩可能很有用。可以找到更多信息here。
总之,是的,它的设计考虑了最终用户,但RESTful微服务也很有价值,特别是由于连接多路复用。
答案 1 :(得分:3)
HTTP / 2为服务到服务通信添加了一个额外的方面,这对HTTP / 1.1不是必需的。这就是SSL / TLS形式的安全性。
虽然RFC标准不要求,但几乎所有HTTP / 2服务器和客户端都将only support HTTP/2 over TLS,这使得加密事实上是强制性的。
因此,如果您想通过HTTP / 2提供和使用微服务,您必须考虑如何创建,管理和分发SSL证书到服务器和客户端。
因此,转向HTTP / 2意味着引入一堆新技术,例如公共密钥基础设施,到您的服务生态系统。
为服务使用者提供HTTP / 2服务的另一种方法是在启用HTTP / 2的使用者和HTTP / 1.1服务之间放置反向代理。
代理将终止来自使用者的HTTP / 2连接并将其转换为服务器的HTTP / 1.1请求(反之亦然)。
这将实现关注点的分离,其中您的服务只负责其业务逻辑内容,而代理将处理证书和加密。但同样,您会为系统增加更多的复杂性。
更复杂,但也更好地利用网络资源
您付出的代价更加复杂。但是,您可以更智能地消耗网络资源。使用HTTP / 1.1,您可以在一个客户端和服务器之间建立多个TCP连接。并且几乎总是需要打开多个连接来克服HTTP / 1.1的性能缺陷。
但建立TCP连接是一项昂贵的任务。为了创建DNS查找,必须进行TCP握手和SSL握手。
HTTP / 2将一个客户端和一个服务器之间的打开TCP连接数限制为恰好一(1)。但与此同时,HTTP / 2为我们带来了连接多路复用,即您可以在同一TCP连接上同时进行多个HTTP对话(HTTP / 1.1:1 TCP连接= 1 HTTP连接)。