尬住了,Go HTTP/3 又又被搁置了!

Go HTTP/3 的推进,可以说是 "起了个大早,赶了个晚集"。2019 年就有人提议,2025 年提案又被搁置,这个过程确实有点魔幻。但换个角度想,这也是 Go 一贯的风格:稳字当头,又或是 ”less is more“。至于什么时候能在标准库中用上 HTTP/3,就看 Go 核心团队的魄力和资源分配了。

2024 年,Go 核心团队成员 @neild 提交了一个新提案 #70914[1],打算在 x/net/http3 中添加 HTTP/3 的实验性实现。

图片

图片

本以为这次也算是正式启动了。能有些苗头。结果万万没想到,这个提案能又被半路搁置了!

图片

图片

要知道,这已经不是 Go HTTP/3 第一次 "跳票" 了。

背景:多年的苦等

说起来挺无奈的,Go 社区对 HTTP/3 的呼声由来已久。早在 2019 年 5 月,社区就开了 Issue #32204[2] 来追踪 HTTP/3 在标准库中的实现进度。那时候 HTTP/3 还只是 IETF 的草案,大家也能理解官方的谨慎态度。

图片

图片

但是现在都 2025 年了!HTTP/3 早在 2022 年 6 月就被 IETF 正式发布为提议标准(RFC 9114)了,主流浏览器的支持率已经超过 95%,全球前 1000 万网站中也有 34%支持了 HTTP/3。

图片

图片

简单来说,HTTP/3 已经不是什么"新鲜玩意儿"了,它是实打实的生产级协议。可 Go 官方在标准库层面,依然没有动静。

提案内容:看似稳妥的方案

我们来看看 @neild 这次提出的方案到底是什么。

这个提案的思路其实挺保守的,和之前被接受的 QUIC 提案 #58547[3] 基本一致:

  1. 先在 x/net/internal/http3 中实验性开发
  2. 等 API 稳定后,再移到 x/net/http3 供外部测试
  3. 最后提交正式的 API 审查提案

这个策略看起来很稳妥对吧?先内部折腾,等成熟了再放出来。照理说应该问题不大。

但是很无奈的是,就是这么个稳妥的方案,也被搁置了!也是绝了。

社区讨论:无奈与不解

在 Issue #32204 的讨论中,我们能看到社区对这个问题的长期关注。

主要包含以下几种态度/想法:

1、时间线: 2020 年,Brad Fitzpatrick 就在评论中提到过,Go 团队在观望 HTTP/3 的成熟度。现在 5 年过去了,HTTP/3 早就从草案变成了正式标准,主流语言和框架也都有了成熟实现。

2、生态问题: 目前想在 Go 中使用 HTTP/3,只能依赖第三方库 quic-go[4]。这个库做得确实不错,实现了完整的 QUIC 和 HTTP/3 支持:

复制

package main

import (
    "github.com/quic-go/quic-go/http3"
    "log"
    "net/http"
)

func main() {
    mux := http.NewServeMux()
    mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello, HTTP/3!"))
    })

    // 启动 HTTP/3 服务器
    log.Fatal(http3.ListenAndServeQUIC(
        "0.0.0.0:8443",
        "/path/to/cert.pem",
        "/path/to/key.pem",
        mux,
    ))
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

但问题在于:

  • 第三方库的维护周期和 Go 官方不一致
  • 没有标准库的背书,企业级项目用起来总是有顾虑
  • API 设计上无法和 net/http 无缝集成

3、多语言对比:隔壁 Rust、C++、Java、C# 等语言,人家早就把 HTTP/3 支持做进标准库或官方库了。Go 作为云原生时代的代表语言,在网络协议支持上反而显得保守,这确实让人有点心里不平衡。

为什么又又被搁置?

那问题来了,为什么一个看起来如此合理的提案,会被搁置呢?

根据 Go 团队的处理风格,我推测可能有这么几个原因:

1. API 设计的复杂性

HTTP/3 基于 QUIC 协议,和传统的 TCP 有本质区别。要让它和现有的 net/http 优雅地集成,不是简单加几个接口就能搞定的。

举个例子,HTTP/3 的连接是基于 UDP 的,这意味着:

  • TLS 握手方式不同(使用 QUIC 的 TLS 1.3)
  • 连接迁移特性需要特殊处理
  • 流控机制完全不同

这些都需要在 API 设计上仔细考虑。

2. 向后兼容的压力

Go 一直以向后兼容闻名,这是好事,但也带来了设计上的约束。HTTP/3 的 API 怎么设计,既要考虑现有 net/http 用户的习惯,又要支持 HTTP/3 的新特性,这是个难题。

看看在 Go1.24 加入的 HTTP 版本选择 API te'xing #67814[5] 就知道了:

复制

type Protocol uint64

const (
    HTTP1 Protocol = (1 << iota)
    HTTP2
    // HTTP3 还没有...
)

// Server 可以选择支持的协议
s := &http.Server{}
s.Protocols = HTTP1 | HTTP2

// Transport 也可以选择
tr := &http.Transport{}
tr.Protocols = HTTP1 | HTTP2
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

这个 API 预留了扩展空间,但 HTTP3 的位置还是空着的。为什么?因为官方还没想好怎么搞!

3. 资源分配问题

Go 核心团队人手有限,他们现在的重点在:

  • 把 x/net/http2 移到标准库 #67810[6]。预计在 Go1.26 版本支持。
  • 支持明文 HTTP/2 #67816[7]。这个特性在 Go1.24 版本支持了。
  • 完善 HTTP/2 的一系列杂七杂八的问题。

说白了,HTTP/2 都还没彻底搞定,甚至都还没有进入标准库(尴尬了),可能他们认为哪有精力去搞 HTTP/3?

4. 实用主义的考量

有个不得不承认的事实:虽然 HTTP/3 很先进,但在实际生产环境中,HTTP/2 已经够用了。大多数场景下,HTTP/3 带来的性能提升并不是质的飞跃。

所以从实用主义角度看,Go 团队可能觉得 HTTP/3 不是当务之急。资源就没有分配在这里。

总结

Go HTTP/3 的推进,可以说是 "起了个大早,赶了个晚集"。2019 年就有人提议,2025 年提案又被搁置,这个过程确实有点魔幻。

但换个角度想,这也是 Go 一贯的风格:稳字当头,又或是 ”less is more“。至于什么时候能在标准库中用上 HTTP/3,就看 Go 核心团队的魄力和资源分配了。

在那之前,可以先继续使用 quic-go。

参考资料

[1] #70914: https://github.com/golang/go/issues/70914

[2] Issue #32204: https://github.com/golang/go/issues/32204

[3] #58547: https://github.com/golang/go/issues/58547

[4] quic-go: https://github.com/quic-go/quic-go

[5] #67814: https://github.com/golang/go/issues/67814

[6] #67810: https://github.com/golang/go/issues/67810

[7] #67816: https://github.com/golang/go/issues/67816

AI大模型学习福利

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。


因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

四、AI大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值