Mic*_*ael 5 language-agnostic architecture algorithm autocomplete distributed-computing
这是一个面试问题:为自动完成设计一个分布式后端.
我会回答如下:
自动完成是通过给定后缀在字典中搜索.字典应该可以组织成一个特里.字典是根据最常见的查询构建的,但它是另一个故事.
现在我假设字典没有经常更改(例如每天一次而不是每毫秒一次).因此,我们可以在多个处理自动完成查询的服务器上复制字典(例如,使用负载均衡器和循环策略).
我们也应该考虑字典,但这也是另一个故事.
是否有意义?我错过了什么吗?
这看起来是正确的问题。trie 的想法非常好,可以帮助您在log(n). 更改频率取决于信息,所以我不会确切地说时间,但我会动态调整它。假设您每天更改一次,那么树更改了多少就很好了。并且你可以给出一个界限(例如10%)。如果超出边界,您可以更频繁地更新字典树。它还取决于保持最新状态的重要性,因为在大多数情况下并非如此。负载均衡器的想法也不错。