日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

项望烽:移动 IM 开发之登录优化

發布時間:2025/3/8 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 项望烽:移动 IM 开发之登录优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:項望烽

網易杭州研究院·網易云信 iOS端負責人

【往期回顧】項望烽:移動 IM 開發之心跳

源起


在移動 IM 模塊中,最核心最復雜的模塊莫過于登錄模塊。一個沒有經過很好優化的登錄模塊往往耗時久且浪費流量:一次登錄短則數十秒,長則幾分鐘,同時同步下幾百 KB 甚至幾M的數據。

一個簡單的登錄步驟可以分為如下幾步:

  • 請求 lbs

  • 連接 link

  • 收發登錄請求

  • 同步 IM 數據

而這里的每一步都是有優化的可能性。(事實上下面的很多思路都是普適的,不是只有 IM APP 才用得到)

優化 lbs 請求


在 PC 時代,我們往往將請求 lbs 和連接服務器做一個串聯,畢竟只有先請求完畢 lbs 才能夠拿到真正的 link 服務器地址,從而進行連接操作。在具體操作上,一般 lbs 請求就是一次 HTTP 請求,這里的耗時可想而知。所以一個樸素的優化想法就是從登錄流程中移除這個環節。

然而直接粗暴去除 lbs 請求并不可取,如果我們直接內置域名或 ip,帶來最大問題自然是無法做負載均衡。所以更推薦將 lbs 請求異步化:不在登錄時做 lbs 請求,而在網絡空閑和發生變化時進行請求并緩存,每次登錄則直接從本地緩存獲取 link 地址。

DNS 優化


使用 TCP 時不可避免會碰到 DNS 解析的問題,畢竟我們不可能一直使用 IP 作為服務器地址。在 PC 時代,DNS 解析幾乎不費事。但進入無線時代后,DNS 相關問題越來越嚴重。一方面,在移動網絡下,DNS 解析速度無比龜速,一次 DNS 解析的時間甚至能趕上一次 TCP 連接的時間,幾秒,十幾秒,甚至三,四十秒的請求時間都很常見。另一方面,由于運營商的不作為和作為,移動網絡下 DNS 也呈現了解析準確度低和經常被劫持的狀態。

針對這些情況可以考慮使用 HTTP DNS,github 也有很多開源的實現,比如HttpDNSLib。而最激進的方法自然是像前面優化 lbs 一樣,在個個環節中避免 DNS 解析:

  • lbs 返回服務器 ip 而非域名

  • 本地緩存 lbs ip 地址備用,請求 lbs 時優先使用 ip 而非域名

這種方式不僅可以避免 DNS 請求的耗時,也可以一定程度上規避 DNS 被劫持的問題。而弊端是針對這種情況需要在客戶端考慮一系列的其他問題:如何從 ip list 選擇有效地址,確定重新請求時機,負載均衡,節約流量等。

登錄請求


事實上,登錄請求環節其實并沒有多大的優化空間。一旦你連接上了服務器,接下去要做的事無非是加密當前連接和發送并接收登錄反饋。這兩步缺一不可。而如何優化又往往會和具體的業務相關:假如我們使用類似于 HTTPS 一般的三步協商的加密流程,安全性的確可以得到保證,但是一來一回的次數過多,整個登錄耗時就會增加。取巧的方法自然是將加密和登錄請求合并,而這往往會涉及到對登錄請求的改造。

同步策略優化


登錄完畢后,客戶端需要從服務器同步,一個常規的 IM APP 需要同步如下數據:

  • 好友列表

  • 好友個人信息

  • 群組列表

  • 群成員列表

  • 群成員個人信息

  • 離線消息

假設一個用戶有 1000 個好友, 20 個 50 人群,平均每一項大約 200 個字節,那么一次全同步大約需要 0.2 * (1000 + 1000 + 20 + 1000 * 2) = 800 KB 的數據,這對于一個移動 IM 是無法接受的,更何況這還是一個較輕度用戶的數據量。

顯然全同步是無法接受的,改進的方法自然是按時間戳同步。客戶端永遠只更新比本地緩存數據新的數據。這是一個常規的優化方向,還有一些根據業務需求可以實施的優化:延遲更新和按需更新。以群成員個人信息為例,其實用戶并不關心其實時性,畢竟這些群成員并不一定是用戶好友,他們的信息變動完全可以在用戶進行查看時再更新(微信的策略)。而好友個人信息也是同理,對于大部分界面而言,他們只關心用戶 Id,頭像和昵稱這三個基礎信息,而一些錦上添花的 Profile 信息完全可以在用戶查看相應界面時進行一次按時間戳的更新。

·?END

【精彩回顧】

項望烽:移動 IM 開發之心跳

項望烽:移動IM開發那些事兒

項望烽:iOS App開發那些事兒

網易云信|真正穩定的IM云服務

http://netease.im ?長按關注,干貨不斷

總結

以上是生活随笔為你收集整理的项望烽:移动 IM 开发之登录优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。