偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

開發(fā) 前端
Go HTTP/3 的推進(jìn),可以說是 "起了個(gè)大早,趕了個(gè)晚集"。2019 年就有人提議,2025 年提案又被擱置,這個(gè)過程確實(shí)有點(diǎn)魔幻。但換個(gè)角度想,這也是 Go 一貫的風(fēng)格:穩(wěn)字當(dāng)頭,又或是 ”less is more“。至于什么時(shí)候能在標(biāo)準(zhǔn)庫(kù)中用上 HTTP/3,就看 Go 核心團(tuán)隊(duì)的魄力和資源分配了。

2024 年,Go 核心團(tuán)隊(duì)成員 @neild 提交了一個(gè)新提案 #70914[1],打算在 x/net/http3 中添加 HTTP/3 的實(shí)驗(yàn)性實(shí)現(xiàn)。

圖片圖片

本以為這次也算是正式啟動(dòng)了。能有些苗頭。結(jié)果萬萬沒想到,這個(gè)提案能又被半路擱置了!

圖片圖片

要知道,這已經(jīng)不是 Go HTTP/3 第一次 "跳票" 了。

背景:多年的苦等

說起來挺無奈的,Go 社區(qū)對(duì) HTTP/3 的呼聲由來已久。早在 2019 年 5 月,社區(qū)就開了 Issue #32204[2] 來追蹤 HTTP/3 在標(biāo)準(zhǔn)庫(kù)中的實(shí)現(xiàn)進(jìn)度。那時(shí)候 HTTP/3 還只是 IETF 的草案,大家也能理解官方的謹(jǐn)慎態(tài)度。

圖片圖片

但是現(xiàn)在都 2025 年了!HTTP/3 早在 2022 年 6 月就被 IETF 正式發(fā)布為提議標(biāo)準(zhǔn)(RFC 9114)了,主流瀏覽器的支持率已經(jīng)超過 95%,全球前 1000 萬網(wǎng)站中也有 34%支持了 HTTP/3。

圖片圖片

簡(jiǎn)單來說,HTTP/3 已經(jīng)不是什么"新鮮玩意兒"了,它是實(shí)打?qū)嵉纳a(chǎn)級(jí)協(xié)議。可 Go 官方在標(biāo)準(zhǔn)庫(kù)層面,依然沒有動(dòng)靜。

提案內(nèi)容:看似穩(wěn)妥的方案

我們來看看 @neild 這次提出的方案到底是什么。

這個(gè)提案的思路其實(shí)挺保守的,和之前被接受的 QUIC 提案 #58547[3] 基本一致:

  1. 先在 x/net/internal/http3 中實(shí)驗(yàn)性開發(fā)
  2. 等 API 穩(wěn)定后,再移到 x/net/http3 供外部測(cè)試
  3. 最后提交正式的 API 審查提案

這個(gè)策略看起來很穩(wěn)妥對(duì)吧?先內(nèi)部折騰,等成熟了再放出來。照理說應(yīng)該問題不大。

但是很無奈的是,就是這么個(gè)穩(wěn)妥的方案,也被擱置了!也是絕了。

社區(qū)討論:無奈與不解

在 Issue #32204 的討論中,我們能看到社區(qū)對(duì)這個(gè)問題的長(zhǎng)期關(guān)注。

主要包含以下幾種態(tài)度/想法:

1、時(shí)間線: 2020 年,Brad Fitzpatrick 就在評(píng)論中提到過,Go 團(tuán)隊(duì)在觀望 HTTP/3 的成熟度。現(xiàn)在 5 年過去了,HTTP/3 早就從草案變成了正式標(biāo)準(zhǔn),主流語(yǔ)言和框架也都有了成熟實(shí)現(xiàn)。

2、生態(tài)問題: 目前想在 Go 中使用 HTTP/3,只能依賴第三方庫(kù) quic-go[4]。這個(gè)庫(kù)做得確實(shí)不錯(cuò),實(shí)現(xiàn)了完整的 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!"))
    })

    // 啟動(dòng) HTTP/3 服務(wù)器
    log.Fatal(http3.ListenAndServeQUIC(
        "0.0.0.0:8443",
        "/path/to/cert.pem",
        "/path/to/key.pem",
        mux,
    ))
}

但問題在于:

  • 第三方庫(kù)的維護(hù)周期和 Go 官方不一致
  • 沒有標(biāo)準(zhǔn)庫(kù)的背書,企業(yè)級(jí)項(xiàng)目用起來總是有顧慮
  • API 設(shè)計(jì)上無法和 net/http 無縫集成

3、多語(yǔ)言對(duì)比:隔壁 Rust、C++、Java、C# 等語(yǔ)言,人家早就把 HTTP/3 支持做進(jìn)標(biāo)準(zhǔn)庫(kù)或官方庫(kù)了。Go 作為云原生時(shí)代的代表語(yǔ)言,在網(wǎng)絡(luò)協(xié)議支持上反而顯得保守,這確實(shí)讓人有點(diǎn)心里不平衡。

為什么又又被擱置?

那問題來了,為什么一個(gè)看起來如此合理的提案,會(huì)被擱置呢?

根據(jù) Go 團(tuán)隊(duì)的處理風(fēng)格,我推測(cè)可能有這么幾個(gè)原因:

1. API 設(shè)計(jì)的復(fù)雜性

HTTP/3 基于 QUIC 協(xié)議,和傳統(tǒng)的 TCP 有本質(zhì)區(qū)別。要讓它和現(xiàn)有的 net/http 優(yōu)雅地集成,不是簡(jiǎn)單加幾個(gè)接口就能搞定的。

舉個(gè)例子,HTTP/3 的連接是基于 UDP 的,這意味著:

  • TLS 握手方式不同(使用 QUIC 的 TLS 1.3)
  • 連接遷移特性需要特殊處理
  • 流控機(jī)制完全不同

這些都需要在 API 設(shè)計(jì)上仔細(xì)考慮。

2. 向后兼容的壓力

Go 一直以向后兼容聞名,這是好事,但也帶來了設(shè)計(jì)上的約束。HTTP/3 的 API 怎么設(shè)計(jì),既要考慮現(xiàn)有 net/http 用戶的習(xí)慣,又要支持 HTTP/3 的新特性,這是個(gè)難題。

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

type Protocol uint64

const (
    HTTP1 Protocol = (1 << iota)
    HTTP2
    // HTTP3 還沒有...
)

// Server 可以選擇支持的協(xié)議
s := &http.Server{}
s.Protocols = HTTP1 | HTTP2

// Transport 也可以選擇
tr := &http.Transport{}
tr.Protocols = HTTP1 | HTTP2

這個(gè) API 預(yù)留了擴(kuò)展空間,但 HTTP3 的位置還是空著的。為什么?因?yàn)楣俜竭€沒想好怎么搞!

3. 資源分配問題

Go 核心團(tuán)隊(duì)人手有限,他們現(xiàn)在的重點(diǎn)在:

  • 把 x/net/http2 移到標(biāo)準(zhǔn)庫(kù) #67810[6]。預(yù)計(jì)在 Go1.26 版本支持。
  • 支持明文 HTTP/2 #67816[7]。這個(gè)特性在 Go1.24 版本支持了。
  • 完善 HTTP/2 的一系列雜七雜八的問題。

說白了,HTTP/2 都還沒徹底搞定,甚至都還沒有進(jìn)入標(biāo)準(zhǔn)庫(kù)(尷尬了),可能他們認(rèn)為哪有精力去搞 HTTP/3?

4. 實(shí)用主義的考量

有個(gè)不得不承認(rèn)的事實(shí):雖然 HTTP/3 很先進(jìn),但在實(shí)際生產(chǎn)環(huán)境中,HTTP/2 已經(jīng)夠用了。大多數(shù)場(chǎng)景下,HTTP/3 帶來的性能提升并不是質(zhì)的飛躍。

所以從實(shí)用主義角度看,Go 團(tuán)隊(duì)可能覺得 HTTP/3 不是當(dāng)務(wù)之急。資源就沒有分配在這里。

總結(jié)

Go HTTP/3 的推進(jìn),可以說是 "起了個(gè)大早,趕了個(gè)晚集"。2019 年就有人提議,2025 年提案又被擱置,這個(gè)過程確實(shí)有點(diǎn)魔幻。

但換個(gè)角度想,這也是 Go 一貫的風(fēng)格:穩(wěn)字當(dāng)頭,又或是 ”less is more“。至于什么時(shí)候能在標(biāo)準(zhǔn)庫(kù)中用上 HTTP/3,就看 Go 核心團(tuán)隊(duì)的魄力和資源分配了。

在那之前,可以先繼續(xù)使用 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

責(zé)任編輯:武曉燕 來源: 腦子進(jìn)煎魚了
相關(guān)推薦

2021-09-09 18:12:22

內(nèi)存分段式網(wǎng)絡(luò)

2025-09-17 08:02:09

2025-09-08 09:10:18

Go網(wǎng)絡(luò)HTTP/3

2025-07-01 07:53:47

2023-03-06 07:50:19

內(nèi)存回收Go

2024-11-05 08:16:04

HTTP/3HTTP 2.0QUIC

2023-07-19 21:48:45

2020-10-08 15:39:08

大數(shù)據(jù)殺熟

2021-04-27 19:23:47

服務(wù)器工具redis

2023-07-18 19:11:21

配置信令系統(tǒng)

2025-10-31 09:01:37

2025-04-29 08:59:37

2021-11-05 11:10:13

MyBatisSQL查詢

2014-07-23 10:19:02

小米4

2017-12-28 10:44:08

JavaScript瀏覽器網(wǎng)頁(yè)

2020-03-31 16:02:23

戴爾

2022-10-17 10:13:58

谷歌云游戲

2022-12-07 07:35:20

B站裁員隱情

2023-10-30 22:23:12

Cacherkube版本

2023-03-10 08:24:27

OOMdump線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)