我们在使用Redis,Memcached等缓存系统时,当数据量增长到单机内存无法容纳时,我们需要搭建集群,将数据分布式存储到多台服务器。对于给定的Key,我们如何决定哪台服务器来存储呢?我们可以采用中心化的方法,使用一个中心节点来存储全局的信息。但如果我们不想维护一个中心节点,还有什么方法吗?一种简单的解决方法是取模哈希(mod-N hasing)取模哈希如上图,集群里有n台服务器,取模哈希...
实际场景:网页爬虫爬取网站时,需要对URL去重,避免对相同URL的网页进行爬取。你会如何快速地判断一个URL已经被爬取过?集合(Set)很多人,包括我,马上会想到使用集合,将爬取过的URL加入到集合,每次爬取前,在集合里判断是否已经存在。时间复杂度是O(1)。但使用集合有一个很大的问题,假设集合内有100亿条URL,每条URL平均64字节,整个集合的大小就达到了640G。位图(BitMap)...