自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Snapchat QUIC實(shí)踐:小協(xié)議解決大問題在

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
我們都知道UDB協(xié)議似乎無序不可靠的協(xié)議,但是其傳輸高效,可以并行傳輸可以極大提高傳輸性能,那么在HTTP3下傳輸?shù)目煽啃跃鸵蠶UIC來保證。本文我們就來學(xué)習(xí)一下Snapchat的QUIC實(shí)踐。

熟悉網(wǎng)絡(luò)的小伙伴,應(yīng)該都知道下一代的應(yīng)用層網(wǎng)絡(luò)傳輸協(xié)HTTP3將有重大轉(zhuǎn)變底層網(wǎng)絡(luò)層的傳輸協(xié)議將會由目前的TCP變成UDP,并基于谷歌開源的QUIC協(xié)議為中間層。我們都知道UDB協(xié)議似乎無序不可靠的協(xié)議,但是其傳輸高效,可以并行傳輸可以極大提高傳輸性能,那么在HTTP3下傳輸?shù)目煽啃跃鸵蠶UIC來保證。QUIC也從最初的實(shí)驗(yàn),到實(shí)際使用,逐漸成了一個眾所矚目的協(xié)議,谷歌,臉書,亞馬遜,Cloudflare等都有在線上嘗試和使用。本文我們就來學(xué)習(xí)一下Snapchat的QUIC實(shí)踐。

[[407507]]

現(xiàn)狀

Snapchat(色拉布)是由Stanford兩位學(xué)生開發(fā)“閱后即焚”照片分享應(yīng)用站點(diǎn)。使用Snapchat用戶可以拍照、錄制視頻、增加文字描述和圖片,并可以通過網(wǎng)絡(luò)分享給自己好友和粉絲。在其中服務(wù)性能,尤其是網(wǎng)絡(luò)性能是關(guān)鍵,在分享東西時如果延遲就會有很大影響。

根據(jù)他們的分析:在Snapchat 的服務(wù)流程中UI渲染和數(shù)據(jù)磁盤持久化寫入都可以在幾毫秒內(nèi)實(shí)現(xiàn),而其中瓶頸在于網(wǎng)絡(luò)上的延遲,可能需要幾秒鐘,而且錯誤率和對硬件設(shè)備限制都很高。為了減少網(wǎng)絡(luò)延遲和錯誤,在通過使用減少請求包和響應(yīng)包,減少不必要的同步,利用全球內(nèi)容分發(fā)CDN廠商加速等常規(guī)的做法。當(dāng)然他們也使用了新的傳輸技術(shù),下一代高速UDP Internet網(wǎng)絡(luò)協(xié)議QUIC 。

老架構(gòu)

Snapchatter使用QUIC之前的網(wǎng)絡(luò)棧。以發(fā)送Snap為例,在應(yīng)用層,Snap媒體通過入HTTP2請求傳輸中。使用TLS 在安全層 來保證連接的安全,利用TCP將請求拆分成chunk上傳Snap到服務(wù)器。然而,TCP+TLS+HTTP2 堆棧對于移動網(wǎng)絡(luò)環(huán)境來說并不是最理想的。 例如,如果 Snapchatter 在WiFi和 WAN之間切換,TCP 請求將失敗。對于與朋友聊天的用戶,由于連接斷開而無法發(fā)送消息會導(dǎo)致體驗(yàn)下降。

QUIC優(yōu)勢

QUIC是一種互聯(lián)網(wǎng)傳輸協(xié)議,由谷歌的工程師開發(fā)。QUIC 是HTTP3的基礎(chǔ),底層基于UDP,用來取代HTTP2的TCP+TLS+。 QUIC 解決了許多傳輸層和應(yīng)用層問題,同時幾乎不需要應(yīng)用程序開發(fā)人員進(jìn)行更改。如上圖所示,QUIC沒有改變網(wǎng)絡(luò)層網(wǎng)絡(luò)協(xié)議,也無需更改高層的HTTP協(xié)議。

與HTTP2的TCP+TLS+協(xié)議棧相比,QUIC在以下幾個方面做了改進(jìn):

  • 更快的連接建立:QUIC 握手支持零往返與,在發(fā)送有效載荷之減少TCP+TLS 的1-3 次往返交互 。
  • 改進(jìn)的擁塞控制:QUIC具有可插拔的擁塞控制,并且為擁塞控制算法提供比TCP 更豐富的信息。 例如QUIC BBR v1 和QUIC BBR v2 。
  • 無隊頭阻塞的多路復(fù)用:對于HTTP2連接,當(dāng)TCP 數(shù)據(jù)包丟失時,該連接上的任何流都無法前進(jìn),直到數(shù)據(jù)包被遠(yuǎn)端重新傳輸和接收。這會導(dǎo)致延遲增加,并可能降低移動網(wǎng)絡(luò)連接上的用戶體驗(yàn)。 QUIC 消除了在同一連接上復(fù)用的其他流的這種停滯。
  • 跨IP地址的連接遷移: 如果IP更改,TCP請求會失敗。 而QUIC連接由QUIC 協(xié)議層隨機(jī)生成的64位標(biāo)識符識別,因此使用QUIC的客戶端可以繼續(xù)進(jìn)行中的請求,在IP地址更改時不會中斷,從而實(shí)現(xiàn)不受干擾的用戶體驗(yàn)。
  • 連接丟失檢測: QUIC可以快速檢測連接丟失,避免長時間請求被掛起。
  • QUIC的這些優(yōu)勢,非常適合有解決Snapchat的問題,極大地提高了其用戶體驗(yàn)。
  • 更快的連接建立:在采用QUIC之前,p90 連接建立需要長達(dá)300毫秒。這種連接設(shè)置延遲轉(zhuǎn)化為用戶等待延遲,并阻止用戶接收快照和查看信息。QUIC更快的連接直接減少了用戶等待延遲并改善了用戶體驗(yàn)。
  • 改進(jìn)的堵塞控制:Snapchat上傳的Snap媒體大小可以能會達(dá)到10MB以上。更好的擁塞控制算法可提高吞吐量、降低延遲和錯誤率,尤其是對于大型媒體。
  • 多路復(fù)用,無隊頭阻塞: Snapchat具有豐富的短內(nèi)容用例,包括Snaps、Stories、Discover內(nèi)容等。通常有多個下載流使用同一連接。 QUIC消除了HTTP2頭阻塞問題,例如避免發(fā)送消息請求阻塞聚光燈請求。
  • 跨 P地址的連接遷移:與朋友一起時,由于wifi連接中斷而無法發(fā)送消息可能會導(dǎo)致體驗(yàn)下降。連接遷移解決了這個痛點(diǎn)。
  • 檢測連接丟失: 由于連接丟失而導(dǎo)致的長時間加載微調(diào)器令人不安,尤其是當(dāng) Snapchatter 處于全屏模式欣賞內(nèi)容時。使用 QUIC,當(dāng)請求因連接丟失而失敗時,我們可以檢測并重試,同時提供用戶友好的UI。

效果

Snapchat 的客戶端網(wǎng)絡(luò)堆棧建立在開源移動網(wǎng)絡(luò)庫Cronet之上。Snap利用Cronet實(shí)現(xiàn)QUIC,還通過豐富的指標(biāo)和日志提高了服務(wù)可觀察性,構(gòu)建了客戶端和服務(wù)器網(wǎng)絡(luò)性能的統(tǒng)一視圖。

根據(jù)Snapchat不同地區(qū)不同協(xié)議對比。總體上來說,啟用QUIC將 p90/P99 網(wǎng)絡(luò)延遲提高了6-20%,網(wǎng)絡(luò)錯誤降低了3%-8%。對低網(wǎng)絡(luò)連接用戶群還有更多改進(jìn)。

Snapchat于2019年10月廣告服務(wù)上啟用了QUIC。可以觀察到 P90/P99 的延遲和錯誤率大有改善。

如上面所示,所有錯誤代碼的錯誤率都有所改善,包括連接超時、連接丟失、請求超時。在按國家和地區(qū)對延遲改進(jìn)進(jìn)行的進(jìn)一步細(xì)分中,可以觀察到網(wǎng)絡(luò)質(zhì)量相對較差且與服務(wù)的地理距離較遠(yuǎn)的國家和地區(qū)的延遲改進(jìn)更高。

在第二個示例中,在QUIC的基礎(chǔ)上,在客戶端到服務(wù)器路徑上啟用BBR擁塞控制也帶來了顯著的延遲改進(jìn)。更大的請求有效負(fù)載還有更多改進(jìn)。

在最后一個示例中,通過在安卓啟用連接遷移,丟失wifi連接時的網(wǎng)絡(luò)請求成功率提高了20%。

總結(jié)

Snapchat的QUIC實(shí)踐嘗試取得了很好的效果,通過使用新技術(shù),解決了服務(wù)上的痛點(diǎn),提高性能,極大提高了用戶的使用體驗(yàn)。通過小協(xié)議解決大問題,這樣的案例,可以直接拿來使用,或者用來作為調(diào)研報告說服領(lǐng)導(dǎo)進(jìn)行架構(gòu)完善。

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2012-06-01 11:05:40

攜號轉(zhuǎn)網(wǎng)

2018-09-21 14:27:05

云計算SAAS工具

2022-12-02 14:42:37

2017-07-20 07:30:16

大數(shù)據(jù)數(shù)據(jù)互聯(lián)網(wǎng)

2010-03-17 16:06:08

Java線程同步

2011-04-28 15:35:38

打印驅(qū)動

2018-12-26 09:25:30

SQL ServerSQL語句數(shù)據(jù)庫

2009-07-01 18:05:54

JSP中文亂碼

2022-04-28 15:34:00

應(yīng)用優(yōu)化實(shí)踐

2011-05-06 10:29:07

內(nèi)存筆記本

2010-06-29 10:28:14

Wi-Fi干擾

2019-10-17 09:19:24

云計算行業(yè)科技

2013-09-04 11:15:14

用友用友U8+

2021-01-26 10:18:32

邊緣計算物聯(lián)網(wǎng)IOT

2020-03-16 10:56:06

大數(shù)據(jù)IT安全

2010-01-08 14:22:00

VB.NET精度問題

2013-02-28 09:50:39

戴爾問題私有化

2009-07-16 10:04:56

Java語言

2025-02-04 17:40:44

2013-02-21 12:32:20

點(diǎn)贊
收藏

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