-
因为dropbox是个文件系统,如果对于某个文件夹重命名了呢 ? 那在这个设计里面是不是要扫描所有类似的prefix进行重命名?
-
我们在用 HTTP Post 更新block的时候,实际的block数据是放在协议的那里的呀?
-
如果两个client 修改同一个file呢?这里是last write wins,因为有version history?
-
这里相当于自己实现了一个简易版的amzon S3,那面试的时候可以说文件数据存在S3吗?我记得dropbox在创业初期,貌似文件数据就是存在S3里面的。
同问文件重命名问题 - 我猜应该是找到所有relative path是这个文件的journal,然后统一把他们的relative path修改成新的文件名。
编辑 - 才发现你问的是文件夹。。估计也是relative path统一修改吧
感觉全部修改这个操作有些expensive啊
- 我觉得只能修改所有跟这个改动有关的文件的 relative path,是挺费资源的,但我想不出还有什么其他好办法。
- 是的。数据在 Request body 里。
- Last Write Wins
- S3 是 object storage。这里用的是 Block Storage。这个选择是出于优化的考虑。S3 用也是可以用的,但比如 S3 immutable 有些情况就不好处理。
谢谢老师的回答,我一点我还是不太明白,S3 immutable 有些情况就不好处理对应这里的情况具体指的是什么呢?可以举个例子吗
举个例子,上传了一个大文件,之后做了小修改。这个大文件 a.mp4 100MB,按照每个 block 4MB 来算,要分成 25 块,b01-b25。修改是针对某一块的,b01 变成了 b01’。这个修改在 Block Storage 里只需要再存一份 b01’, 而在 object storage 里,这整个的 100MB 就是一整个 object,如果修改的话,需要存一整个 object’。
当然,如果你把 object 用来只存储 4MB 的文件分块,两者就很近似了,但 object storage 一般用法是每个 object 就是用户最后读的文件,而不是文件的一部分。
(写完以后发现跟 immutable 没什么关系,应该说成是 S3分块不好处理)
谢谢老师的回答,这回搞明白了。
我之前想用S3就是用来把整个File存进去,得到一个url,不是分开存block,所以这里存储的浪费比用block storage要大一些。