这是一个面试问题:设计一个自动完成的分布式后端。
我会回答如下:
自动完成是按给定后缀在字典中进行搜索。这本词典可能应该被组织为trie。该词典是根据最常见的查询构建的,但这是另一回事了。
现在我假设字典不会经常更改(例如每天一次而不是每毫秒一次)。因此,我们可以在处理自动完成查询的多个服务器之间复制字典(例如使用负载均衡器和循环策略)。
我们还应该考虑字典,但这也是另一个故事了。
是否有意义?我错过了什么吗?
这看起来是正确的问题。 trie 的想法非常好,可以帮助您搜索log(n)
。更改频率取决于信息,所以我不会确切地说时间,但我会动态调整它。假设您每天更改一次,那么树更改了多少就很好了。并且你可以给出一个界限(例如10%)。如果超出边界,您可以更频繁地更新字典树。它还取决于保持最新状态的重要性,因为在大多数情况下并非如此。负载均衡器的想法也不错。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)