《胡凱_2023RustChinaConf大會.pdf》由會員分享,可在線閱讀,更多相關《胡凱_2023RustChinaConf大會.pdf(26頁珍藏版)》請在三個皮匠報告上搜索。
1、第三屆中國Rust開發者大會Rust HTTP 協議棧在終端通信場景的實踐協議棧在終端通信場景的實踐胡凱華為 公共開發部 嵌入式軟件能力中心什么是 HTTP 協議?HTTP 協議介紹目錄終端場景下 HTTP 協議的主要使用場景,以及需要思考的問題。終端 HTTP 通信場景淺析我們當前結合 Rust 和終端通信場景的實踐的簡單介紹。Rust 與終端 HTTP 通信場景結合介紹 Rust 與 HTTP 協議棧結合的業界實現。Rust 與 HTTP 協議HTTP 協議介紹協議介紹Part 01什么是 HTTP 協議?Rust China Conf 2022 2023,Shanghai,ChinaRu
2、st China Conf 2022 2023,Shanghai,ChinaHTTP 協議協議介紹介紹HTTP 協議,即超文本傳輸協議(HyperText Transfer Protocol)是一種用于分布式、協作式和超媒體信息系統的應用層協議。HTTP 是一個客戶端(用戶)和服務端(網站)之間請求和應答的標準。Rust China Conf 2022 2023,Shanghai,ChinaHTTP 協議協議介紹介紹HTTP 協議主要具有以下特點:支持客戶/服務器模式。簡單快速:客戶向服務器請求服務時,只需傳送請求方法、路徑和請求頭。HTTP 協議簡單、HTTP 服務器的程序規模小,因而通信速
3、度很快。靈活:HTTP 支持傳輸任意類型的數據對象。無連接:HTTP 限制每次連接只處理一個請求,節省傳輸時間。(在 HTTP/1.1 之后變更)無狀態:HTTP 協議對于事務處理沒有記憶能力,每個請求/應答之間相互獨立。Rust China Conf 2022 2023,Shanghai,ChinaHTTP 協議協議介紹介紹HTTP 協議的版本演化如下:GETContentrequestresponseHTTP/0.9 早期的 HTTP 協議 請求方法僅能使用 GET 響應僅含有文檔內容,且僅支持htmlMethodContentrequestresponseHTTP/1.0 新的請求方法
4、發送請求時附帶版本信息 支持標頭字段 支持請求上傳內容 支持傳輸多種格式的內容。Req-LineHeadersContentHeadersSta-LineStatusHTTP/1.1 連接可以復用 管線化技術 支持響應分塊 引入額外的緩存控制機制 引入內容協商機制 報文基本格式不再變化HTTP/2 二進制協議 支持多路復用 支持響應分塊 支持標頭壓縮 支持服務端推送 報文基本格式不再變化HTTP/3 基于 UDP 連接 報文基本格式不再變化Rust China Conf 2022 2023,Shanghai,ChinaHTTP 協議協議介紹介紹HTTPS 協議=HTTP 協議+TLS超文本傳輸
5、安全協議(英語:HyperText Transfer Protocol Secure,縮寫:HTTPS)是一種通過計算機網絡進行安全通信的傳輸協議。HTTPS經由HTTP進行通信,但利用SSL/TLS來加密數據包。Rust 與與 HTTP 協議協議Part 02介紹 Rust 與 HTTP 協議棧結合的業界實現Rust China Conf 2022 2023,Shanghai,ChinaRust China Conf 2022 2023,Shanghai,ChinaRust Rust 與與 HTTP HTTP 協議協議Rust 對于 HTTP 協議有良好支持:HTTP 協議是以 TCPTLS
6、UDP 等各種連接為基礎的,非常依賴于高性能的 IO 操作。利用 Rust 異步實現 HTTP 協議和各種應用程序能得到十分可觀的性能提升,并且能降低用戶編碼的難度。Rust China Conf 2022 2023,Shanghai,ChinaRust Rust 與與 HTTP HTTP 協議協議借助于 Rust 異步能力的熱門 Rust HTTP 協議庫或應用庫:Hyperreqwestactix-webaxumRust China Conf 2022 2023,Shanghai,ChinaRust Rust 與與 HTTP HTTP 協議協議hyper 是一個高效且功能完整的HTTP 協
7、議底層庫,可以支持高層的應用軟件使用 HTTP 協議。Rust 異步實現支持 HTTP/1.1 和 HTTP/2支持 Client 和 Server高性能高可擴展性Rust China Conf 2022 2023,Shanghai,ChinaRust Rust 與與 HTTP HTTP 協議協議reqwest 是基于 hyper 實現的高性能、易用的HTTP 客戶端庫。Rust 異步實現支持明文、JSON、Multipart 的 body 類型支持 HTTP Proxy支持 HTTPS支持 CookiesRust China Conf 2022 2023,Shanghai,ChinaRust
8、 Rust 與與 HTTP HTTP 協議協議actix_web 是一個強大、實用且速度極快的Rust 網絡框架。Rust 異步實現支持 HTTP/1 和 HTTP/2 支持 HTTPS支持消息路由支持 body 自動解壓縮支持 multipartRust China Conf 2022 2023,Shanghai,ChinaRust Rust 與與 HTTP HTTP 協議協議以上 Rust HTTP 庫主要支持的場景特點:并發量、吞吐量需求較高網絡環境穩定不太需要體現交互界面不太關注資源使用比較適合構建瀏覽器、大型WEB 服務器等。終端終端 HTTP 通信場景淺析通信場景淺析Part 03
9、探討終端場景下 HTTP 協議的主要使用場景,以及需要思考的問題Rust China Conf 2022 2023,Shanghai,ChinaRust China Conf 2022 2023,Shanghai,China終端終端 HTTP HTTP 協議場景淺析協議場景淺析在終端上大多數使用HTTP 協議的應用,主要是運用HTTP 客戶端的能力,向指定網址發起請求來獲取服務器上的資源。例如使用瀏覽器 APP 訪問網頁,使用視頻APP 觀看視頻和直播,電商APP 瀏覽商品頁面等。Rust China Conf 2022 2023,Shanghai,China終端終端 HTTP HTTP 協議
10、場景淺析協議場景淺析終端的網絡環境特點:弱網環境:移動端網絡整體處于弱網環境,網絡時延較高。網絡不穩定:移動端網絡經常受到用戶或者環境影響而產生波動。流量限制:移動端網絡流量受到用戶的限制。設備資源有限:移動端設備CPU、內存等資源較少。Rust China Conf 2022 2023,Shanghai,China終端終端 HTTP HTTP 協議場景淺析協議場景淺析從用戶使用的角度出發:下載進度:對于一些涉及上傳或下載的應用軟件,進度顯示能夠給用戶及時性的反饋。速度和流量限制:受到資費和網絡狀況的影響,傳輸速度和流量需要提供給用戶設置。暫停和重試:網絡傳輸需要提供給用戶控制啟動和暫停的控制
11、手段。功耗:網絡傳輸需要消耗終端設備資源,需要盡可能平衡功耗和傳輸速度。性能表現:網絡傳輸不能影響到和用戶直接交互的前臺應用的表現。Rust 與終端與終端 HTTP 通信場景結合通信場景結合Part 04我們當前結合 Rust 和終端通信場景的實踐的簡單介紹Rust China Conf 2022 2023,Shanghai,ChinaRust China Conf 2022 2023,Shanghai,ChinaRust Rust 與終端與終端 HTTP HTTP 通信場景結合通信場景結合我們 Ylong HTTP 客戶端庫當前實現的基礎功能:支持同步邏輯和異步邏輯支持 HTTP/1.1、H
12、TTP/2、HTTP/3 協議及其組件支持 HTTPS支持客戶端代理支持自動重定向支持連接管理和復用支持進度顯示支持發送 Multipart/Chunk 格式 body Rust China Conf 2022 2023,Shanghai,ChinaRust Rust 與終端與終端 HTTP HTTP 通信場景結合通信場景結合針對弱網環境的處理舉例:支持上層自定義 DNS 解析邏輯:利用Rust 的 trait 實現繼承關系,方便用戶根據自身需求自定義 DNS 解析器。DNS 操作也是 IO 操作,可以使用Rust 異步 IO 邏輯來提升性能。支持高版本的 HTTP 協議,如 HTTP/2、H
13、TTP/3。利用 IO 復用機制或 UDP 連接可以提高弱網環境下的傳輸性能。Rust China Conf 2022 2023,Shanghai,ChinaRust Rust 與終端與終端 HTTP HTTP 通信場景結合通信場景結合針對網絡不穩定場景:支持用戶設置速度限制范圍:給消息 body 讀取邏輯增加速度的上下限,以及時根據網絡變化做出操作。支持用戶設置連接和請求的超時時間:給請求的各個區間設置定時器,以及時檢測網絡變化。Rust China Conf 2022 2023,Shanghai,ChinaRust Rust 與終端與終端 HTTP HTTP 通信場景結合通信場景結合提供用戶界面表現的相關接口:暫停、停止、重試、顯示回調:利用 Rust 閉包、trait 實現下載操作回調。方便上層在傳輸過程中操作傳輸行為。Rust China Conf 2022 2023,Shanghai,ChinaRust Rust 與終端與終端 HTTP HTTP 通信場景結合通信場景結合功耗和性能表現:使用 Rust 異步 IO 可以充分利用線程資源,帶來穩定的性能表現。針對 HTTP 協議層的解析邏輯進行優化,使用狀態機和可復用內存減少運行內存占用。管理和復用已有連接,減少連接的反復創建。Thank you!