<a href="#_Toc26174%20">目錄 1</a>
<a href="#_Toc25485%20">1. 一般方案 1</a>
<a href="#_Toc18733%20">1.1. 使用者資料構成 1</a>
<a href="#_Toc2897%20">1.2. 互動邏輯 2</a>
<a href="#_Toc2254%20">1.3. 方案特點 2</a>
<a href="#_Toc11726%20">2. 新方案 2</a>
<a href="#_Toc27355%20">2.1. 資料組織 2</a>
<a href="#_Toc25148%20">2.2. 互動邏輯 3</a>
<a href="#_Toc6252%20">2.3. 大并發 4</a>
<a href="#_Toc26896%20">2.4. 核心思想 4</a>
1) 使用者名
具有唯一性,由使用者在注冊時由使用者自己确定,如各類郵箱使用者名; 或者由系統配置設定,如QQ号。
2) 使用者ID
也具有唯一性,使用者在注冊時由系統配置設定。
3) 使用者屬性
用來描述使用者的,如性别、年齡等。
4) 使用者行為
對使用者活動的記錄,如最近一個月的淘寶消費記錄。
一般方案的有點是實作簡單,效率還不錯,記憶體成本效益不高。
資料組織的目的是為了更高效更經濟的提供資料服務。可以達到O(1)查找,和無鎖化查詢更新。
資料的組織采取經典的“image+editlog(也可叫binlog)”。離線處理放在每天通路量最小的時間段。
顯然,取得使用者ID後的後續操作都是O(1),這樣具備極佳的性能。基于數組,還可以實作無鎖化查詢。
按使用者ID垂直切片,如切分成100片。20台機器時,每台加載5片;共10台機器時,每台加載10片。如此多叢集服務,即可實作上億同時線上服務。
數組化是新方案的核心。基于數組,不但提供了最快的查詢,而且不浪費記憶體,“image+editlog”使得資料更新高效簡單,且不需要中斷服務。
x