TypeAhead
2019-03-15 本文已影响0人
尚无花名
什么地方会用到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文件太大的问题,
可能太大
不是每次搜索都存下来,概率
如何加速:
- 缓存
- 每次多要一点. 用javascript处理