首页 > 试题广场 >

有100亿个url,要求设计一个系统,能实现url的添加、删

[问答题]
有100亿个url,要求设计一个系统,能实现url的添加、删除、更新,并能查看url的内容
感觉和搜索引擎有点关系。可以先用Hash把这100亿个URL均匀的分布到不同的结点上,取模即可。把URL看成是一个一个的字符串。首先选择Hash表这样的数据结构来存储这些URL,Hash码相同的URL采取链地址法解决碰撞。然后添加,删除,更新查看均可以模拟HashMap的实现原理进行设计。当然100亿个URL估计内存很大,如果有必要,设计分布式的存储系统。后面的balabalabalabala........



发表于 2015-03-09 15:37:48 回复(0)
需要解决的问题:URL数量多,查询受到内存限制。
系统设计:
由于URL数目比较多,自然联想到使用分布式存储,根据内存大小,通过hash将这些URL分布到M个不同的文件中,这里根据需求控制粒度M,保证文件小于内存大小。如果文件大小超过内存大小,可以通过再hash法继续分成合适的小文件。由于hash的特点,相同的URL不会分到不同的文件中。
既然采用分布式存储,可以使用一个dispatcher来分发查询增删等任务操作,锁的粒度可以控制在文件级别。另外,由于采用了hash策略,所以更新操作应该由删增操作组合来完成。
发表于 2015-08-05 17:39:24 回复(0)