最近優化了通訊錄拉取的實現方式,對它進行整理。
通訊錄涉及用戶的關系鏈,用戶的具體數據,包括頭像,昵稱,戰績,在線狀態等信息。
之前的實現方式如下:
統一的協議,定義TID字段,由客戶端填充具體的TID,來拉取用戶的信息,由于數據庫不屬于我們,客戶端又需要排序等信息,所以每次拉取,都必須全量拉取。
結果:
協議失敗率高,客戶端經常要等比較久的時間,才能拉取完整。消耗客戶端的流量,其中有很多不必要的信息,沒必要重復拉取。
優化后的方式:
將協議一分為三,包括關系鏈信息,用戶的動態信息(經常變換的信息,如在線狀態),用戶的靜態信息(如昵稱,性別等)。
關系鏈信息,由于我們只有備份數據庫,所以無法完整的了解關系鏈的變化情況(增加,修改,可以通過時間戳了解,但是刪除好友,無法事實的知道。),所以,我們統一采用MD5值的方式進行比較。
用戶端請求上來,會帶上次的MD5值,服務器進行對比,如果MD5值有變化,則把新的關系鏈信息壓縮,傳送給客戶端。
動態信息,我們獲取用戶的在線狀態,只返回在線的用戶數據,因為離線的好友,肯定比在線的好友數量多,所以降低了拉取的數據。
靜態信息,客戶端隔一段時間定時拉?。壳笆且惶欤?,除非用戶主動來拉取,不然不會有變化。
通過這個優化,協議的成功率,提高了5%,還是蠻有成就感的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。