【发布时间】:2019-05-12 04:21:08
【问题描述】:
我只是想知道 HTTP 框架在 Rails 中的什么位置,以及如何使用不同的网络层为 客户端-服务器通信 实现不同的协议?
有一个名为 QUIC 的新协议具有低延迟,如果 有人想在 Rails 应用程序中实现它,有人是如何做到的? 我几乎找不到任何与实施相关的资源 互联网。
【问题讨论】:
-
QUIC 仍在标准化中。它将于今年 7 月完成(尽管之前已经推迟),之后将提交 IETF 正式批准互联网标准化。在那之后,它需要一点时间才能变得普遍。谷歌在他们的服务器和 Chrome 中都有一个 QUIC 版本,但它与标准版本不同,一旦标准化,它很可能会被弃用。 HTTP/2 具有 QUIC 的大部分优点,并且 QUIC 扩展了这一点,所以如果不在 HTTP/2 上,那么在等待它的同时先移动到它。
-
UDP 没有保证,因此它没有 TCP 的开销,但这并不意味着它“更快”。尤其是 QUIC 必须在 UDP 之上构建 TCP 保证。它必须在应用层执行此操作,这将比操作系统内置的 TCP 效率更低且资源消耗更大。 QUIC 带来的是它允许在 TCP 中很难做到的更改和改进,因为它已经融入了生态系统。但是对于大多数用例来说,QUIC 将类似于 TCP,至少在最初是这样。它确实解决了 HTTP/2 在较差的网络上比 HTTP/1.1 慢的一个问题。
-
它具有前向纠错、连接迁移且无需等待确认。我猜它很轻?
-
两者都不会出现在 QUIC 的初始版本中:datatracker.ietf.org/wg/quic/about。当然它必须等待确认,因为它仍然是像 TCP 一样的有保证的协议。与 TCP 的连接级别不同,它只是在流级别得到保证。 QUIC 将会是大的恕我直言,但需要很长时间才能到达那里。当然不会担心 Rails 还不支持它。
-
有一个支持QuiC的服务器。或者我们可以编写自己的服务器,我想如果我们真的想利用 QUIC 的功能,我认为 QUIC 现在可以比其他人更具优势。正如你所说,谷歌也使用 QUIC。存在可靠性问题,但我猜在这个过程中丢失的数据报并不重要?
标签: ruby-on-rails http network-protocols quic