由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一道系统设计题目
相关主题
发2道面试设计题求教一道算法题
怎么设计Google Calendar和Docs?问一个算法题
A probabilistic question问个简单清楚的google题,但我不会...
急问!编程实现数学运算相关面试题an old problem on algorithm
问一个题目,谢谢。一个图论题
问一道精华帖的老题报G的offer,咨询一下各位G大神关于offer细节
programming pearl看不懂这个题google phone interview
a question regarding finding all paths with a common sum问个Facebook 电面题
相关话题的讨论汇总
话题: alice话题: bob话题: 更新话题: 用户
进入JobHunting版参与讨论
1 (共1页)
g***j
发帖数: 1275
1
在google doc的spreadsheet中,如何实现实时的更新。
就是用户Alice在机器A上开了一个spreadsheet a, 用户Bob在机器B上开了一个
spreadsheet b, Alice在a上输入一个数据,要求Bob能够尽可能实时看到。
k******4
发帖数: 94
2
说个粗略的想法。Alice 和 Bob之间通过P2P连接,互相之间保持文件的一致性。同时
把文件的定期push到server上去。
暂时想到的几个讨论的点,更新文件的时候,可以发送对文件的update或者整个文件,
二者之间怎么选择。Alice和Bob是通过tcp还是udp连接。如果用户输入的比较快的时候
,是输入之后立马更新还是有一小段延迟之后再给对方发送update。如果断网了怎么处
理。
当然上面那些问题说出来都很容易回答,不知道在讨论的时候提出这些是否对面试有帮
助,还请大牛给点意见。

【在 g***j 的大作中提到】
: 在google doc的spreadsheet中,如何实现实时的更新。
: 就是用户Alice在机器A上开了一个spreadsheet a, 用户Bob在机器B上开了一个
: spreadsheet b, Alice在a上输入一个数据,要求Bob能够尽可能实时看到。

p*****3
发帖数: 488
3

是不是可以这样,
如果有额外的server的话把所有的修改push到server上,然后server本地记录后再把修
改push到Alice和Bob的机器,重新连接的话再sync所有内容。如果不是重新连接的话不
用sync, 以log的形式更新,比如在pos i上insert了string x, pos j上删除了长度为z
的string。

【在 k******4 的大作中提到】
: 说个粗略的想法。Alice 和 Bob之间通过P2P连接,互相之间保持文件的一致性。同时
: 把文件的定期push到server上去。
: 暂时想到的几个讨论的点,更新文件的时候,可以发送对文件的update或者整个文件,
: 二者之间怎么选择。Alice和Bob是通过tcp还是udp连接。如果用户输入的比较快的时候
: ,是输入之后立马更新还是有一小段延迟之后再给对方发送update。如果断网了怎么处
: 理。
: 当然上面那些问题说出来都很容易回答,不知道在讨论的时候提出这些是否对面试有帮
: 助,还请大牛给点意见。

k******4
发帖数: 94
4
关于update的问题,个人觉得不一定要把所有的修改都push上去。比如现在文件size是
1KB,然后我觉得写错了,全部删除,再写上一个10B的字符串。这个时候可能push上文
件最后的内容就好了。总之文件的操作是个删除,增加,修改的过程。每隔一段时间,
计算文件上个push过的版本和现在版本之间的不同,数据量为Delta,还有当前文件的
大小S,比较Delta和S的大小,决定是push update还是全部文件。

为z

【在 p*****3 的大作中提到】
:
: 是不是可以这样,
: 如果有额外的server的话把所有的修改push到server上,然后server本地记录后再把修
: 改push到Alice和Bob的机器,重新连接的话再sync所有内容。如果不是重新连接的话不
: 用sync, 以log的形式更新,比如在pos i上insert了string x, pos j上删除了长度为z
: 的string。

w****e
发帖数: 23
5
P2P显然是不合适的:
1. 用户的数量其实是没有限制的。同时编辑的用户越多,P2P导致复杂度与单纯的连服
务器差距越大。
2. 在遇到网络异常等意外时,P2P各个端点很难处理。这个时候由服务端来运算,就简
化很多。
3. google doc的spreadsheet要支持所有的浏览器和平台,不是所有的用户都支持HTTP
以外的协议。
另外云平台当然要云计算,否则Google要去做的就是桌面软件了。
从通讯上来讲,我觉得就简单的假设用HTTP协议的,具体是用Ajax还是客户端呼叫Web
Service都无所谓。
从更新内容上来讲,我认为参考数据库的增量备份模式,更新的是操作而非内容现状,
这样的优点是:
1. 减少通讯量;
2. 操作作为内容的一部分存储在服务器,支持版本恢复;
3. 给了服务器足够的信息来处理各种意外,比如用户因断网而导致的输入冲突。
同步处理与意外:
1. 提交数据:用户的任何输入都要及时提交服务器,以提交同步效率。(你在一个单
元格内不停的输入但是不回车,算不上完成输入)
2. 更新数据:任何提交的时候都更新数据,另外如果没有提交数据,也必须保障每隔
固定间隔刷新数据。
3. 更新数据:与提交数据每步骤都提交不同,更新来的数据是别人的操作经过服务器
合并的结果,既不是每隔步骤的操作,也不是整个文档的Reload。
4. 锁机制:在单元格或者区域被选中状态,其他用户可以更新为此区域被锁的状态。
5. 离线操作与冲突: 这个可以参考其他的版本控制工具中的Merge。
z*********8
发帖数: 2070
6
这个我觉得不对, 这些doc操作都有version的, 比如还是该把每次操作记录下来

【在 k******4 的大作中提到】
: 关于update的问题,个人觉得不一定要把所有的修改都push上去。比如现在文件size是
: 1KB,然后我觉得写错了,全部删除,再写上一个10B的字符串。这个时候可能push上文
: 件最后的内容就好了。总之文件的操作是个删除,增加,修改的过程。每隔一段时间,
: 计算文件上个push过的版本和现在版本之间的不同,数据量为Delta,还有当前文件的
: 大小S,比较Delta和S的大小,决定是push update还是全部文件。
:
: 为z

k******4
发帖数: 94
7
考虑到前面大牛提到的版本回复,确实需要保存。另外,再多个用户的情况下。确实通
过服务器更新更好。

这个我觉得不对, 这些doc操作都有version的, 比如还是该把每次操作记录下来

【在 z*********8 的大作中提到】
: 这个我觉得不对, 这些doc操作都有version的, 比如还是该把每次操作记录下来
p*****2
发帖数: 21240
8
websocket就可以了
c***d
发帖数: 26
9
socket.io.
还有我觉得需要提一下pub-sub.

【在 p*****2 的大作中提到】
: websocket就可以了
p*****2
发帖数: 21240
10

pub-sub你想怎么提?

【在 c***d 的大作中提到】
: socket.io.
: 还有我觉得需要提一下pub-sub.

1 (共1页)
进入JobHunting版参与讨论
相关主题
问个Facebook 电面题问一个题目,谢谢。
微软SDE onsite面经及咨询问一道精华帖的老题
问道F 的题programming pearl看不懂这个题
问一个关于区间的问题a question regarding finding all paths with a common sum
发2道面试设计题求教一道算法题
怎么设计Google Calendar和Docs?问一个算法题
A probabilistic question问个简单清楚的google题,但我不会...
急问!编程实现数学运算相关面试题an old problem on algorithm
相关话题的讨论汇总
话题: alice话题: bob话题: 更新话题: 用户