由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一道分布式设计题
相关主题
G家电面题google 电面题
设计一个类似dropbox的web server[BSSD]学土木的怎么进Google?诚意给建议的有包子
问一道screen的题请教一道经典的dropbox面试题~感谢!
ebay search组面经,估计要挂base system kernel bug 如何patch?
一个cc150里面的题目,不解一道系统设计题求思路
请教精通WCF的技术大牛。google phone interview question
问一个google面经题【地里转得】贡献些电话面试题目
google phone (failed)Amazon电话面试
相关话题的讨论汇总
话题: chunk话题: checksum话题: 文件话题: 同步话题: master
进入JobHunting版参与讨论
1 (共1页)
z*****n
发帖数: 447
1
Vmware的电面题,有一个分布式FTP Cluster,包含N台FTP服务器,一台为Master,上
面存放了一个很大的文件,比如10T, 剩下的N-1台是Slave,问你如何设计一个同步算
法,把Master上的文件同步到Slave上,要求cost越小越好?
我回答的是,把Master上的文件分成一个个的小Chunk,给每个Chunk算一个checksum,
然后每次同步的时候,再算一遍并检查checksum,如果某chunk的checksum变了,就把
这个chunk同步到Slave上。
Interviewer对此表示赞同,但是又追问了一个问题,他说,如果文件中的某一部分被
删掉了,比如第一个chunk删掉了1个Byte,但是这个删除的操作和位置你是不知道的,
如果还按照原来的chunk size计算checksum,会发现所有chunk的chunksum都改变了,
而实际上只有一个改了;这种情况下,怎么解决?
这部分我没有答出来,有谁能够帮忙分析一下?
s******n
发帖数: 3946
2
create a patch and send patch
w****x
发帖数: 2483
3
是不是像svn那样每个操作都记录下来, 包括删除操作.
或者真的把10T的大文件分成10000000个小文件, 记录每次修改的小文件编号, 然后以
后只替换对应编号的小文件??
z**********g
发帖数: 209
4
请问你的回答是不是和下面的介绍rsync一样?
rsync算法要解决的问题很简单:A和B两个文件在两台服务器中,要将A同步到与B一致
,要求尽量减少同步带来的网络传输开销。
rsync基本算法
先说基本的rsync算法,并不复杂,简单的说是三步:
1、按固定大小将A分为多块,每块都计算出一个32位的滚动哈希值和一个128位的MD4(
有些也用MD5),发给B一端。
2、B一端从位置0开始按的同样块大小的滚动哈希值,查找看是否命中A给的某个滚动哈
希值,若匹配,则表明B文件中的这块内容与对应的A中的那块内容很可能是一致的,但
由于32位的哈希值强度不够,因此再计算MD4,若还是匹配,则确认是一致内容,这时B
发给A端匹配的段号。对于那些不能匹配的内容,则发给A端原始内容。
3、A端得到B端给的匹配信息,构造一个与B一致的复本,若是匹配的块,则拷贝原A文
件中对应的块,若是不匹配内容则追加之。
滚动哈希值的设计基于Adler32算法,使得2~K+1字节的哈希可以根据1~K字节哈希和1、
K+1字节的内容快速计算得到,这可以提高从位置0开始依次计算滚动哈希值的效率。
据试验一般来说块大小取500~1000字节效果比较好。
z*****n
发帖数: 447
5
当时我没有回答出来,interviewer也没告诉具体答案,只说用一种特殊的Hash 函数,
然后用sliding window一个个的滑动计算相邻的chunk的checksum,最后可以比较出来
。结果面挂了。。。:(
我感觉rsync和这个思路很一致,应该就是这样!好像dropbox也是这样做同步的。

时B

【在 z**********g 的大作中提到】
: 请问你的回答是不是和下面的介绍rsync一样?
: rsync算法要解决的问题很简单:A和B两个文件在两台服务器中,要将A同步到与B一致
: ,要求尽量减少同步带来的网络传输开销。
: rsync基本算法
: 先说基本的rsync算法,并不复杂,简单的说是三步:
: 1、按固定大小将A分为多块,每块都计算出一个32位的滚动哈希值和一个128位的MD4(
: 有些也用MD5),发给B一端。
: 2、B一端从位置0开始按的同样块大小的滚动哈希值,查找看是否命中A给的某个滚动哈
: 希值,若匹配,则表明B文件中的这块内容与对应的A中的那块内容很可能是一致的,但
: 由于32位的哈希值强度不够,因此再计算MD4,若还是匹配,则确认是一致内容,这时B

g*****i
发帖数: 2162
6
mark

时B

【在 z**********g 的大作中提到】
: 请问你的回答是不是和下面的介绍rsync一样?
: rsync算法要解决的问题很简单:A和B两个文件在两台服务器中,要将A同步到与B一致
: ,要求尽量减少同步带来的网络传输开销。
: rsync基本算法
: 先说基本的rsync算法,并不复杂,简单的说是三步:
: 1、按固定大小将A分为多块,每块都计算出一个32位的滚动哈希值和一个128位的MD4(
: 有些也用MD5),发给B一端。
: 2、B一端从位置0开始按的同样块大小的滚动哈希值,查找看是否命中A给的某个滚动哈
: 希值,若匹配,则表明B文件中的这块内容与对应的A中的那块内容很可能是一致的,但
: 由于32位的哈希值强度不够,因此再计算MD4,若还是匹配,则确认是一致内容,这时B

1 (共1页)
进入JobHunting版参与讨论
相关主题
Amazon电话面试一个cc150里面的题目,不解
amazon电面请教精通WCF的技术大牛。
问一下LA和湾区工作比较问一个google面经题【地里转得】
Arista Networks面经google phone (failed)
G家电面题google 电面题
设计一个类似dropbox的web server[BSSD]学土木的怎么进Google?诚意给建议的有包子
问一道screen的题请教一道经典的dropbox面试题~感谢!
ebay search组面经,估计要挂base system kernel bug 如何patch?
相关话题的讨论汇总
话题: chunk话题: checksum话题: 文件话题: 同步话题: master