TypeAhead

什么地方会用到type ahead:

google suggestion
Twitter typeahead

如何估算

假设 500M user DAU
Search 4 * 6 * 500m = 12b (每个用户搜6次,输入4个字母)
QPS = 12b / 86400 ~= 138k
Peak QPS = QPS * 2 ~= 276k

需要什么Service

查询 Query Service
输入 Data Collection Service

用数据库

Select * From hit_stats
Where keyword LIKE ""
ORDER BY hit_count DESC
Limit 10
Like太费时间了
要用空间换时间

用prefix做,

把每个单词的每个前缀都放进去

Trie

最好是用Trie
Trie
prefix -> hot keyword

持久化

Trie只能存在内存里面, 当然内存也有可能放不下
但要持久化, Serialize, DeSerialize 放在disk上

数据的更新:

不能更新正在实时服务的server
要离线更新 ,比如两周更新一次
也要用到consistency hashing

Log文件太大的问题,

可能太大
不是每次搜索都存下来,概率

如何加速:
  1. 缓存
  2. 每次多要一点. 用javascript处理

你可能感兴趣的:(TypeAhead)