请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,我想了解下在云盘这个场景下锁的问题。

老师,我想大概了解下云盘这个业务场景下会用到锁吗?一般会是哪些场景。比如:

  1. mysql已经产生文件记录,但是文件并没有上传完成,这时候获取文件会需要锁吗?
  2. 一个文件被大并发读取会有问题吗?

我想了解下,在企业级应用这块对于保持文件的一致性又没什么需要注意的。

正在回答

1回答

xiaomo 2019-04-08 08:43:49

同学你好,加锁的情况一般会涉及到资源竞争的场景.在云盘场景里,必要用到锁的情况应该不多,因为很多时候用户的资源都是隔离存储的.在同一个用户的多终端发起的请求间,可能会用到锁,比如用户A的终端a正在请求修改一些文件资源,终端b同时请求删除这些资源.

1)对于1,一般情况下是,先把文件上传完成,再写mysql文件记录.

如果多个用户上传同一个文件,mysql中文件表(tbl_file)会先写入先上传完成的文件的记录;

这个阶段去获取文件的话,只有那些已经完成了写用户文件表(tbl_user_file)的用户才能够进行下载的,

下载的文件就是第一个完成上传的用户的文件.一般情况下不用加锁.

2)一个文件被高并发读取,其他文件低频访问的话,可能会造成系统负载的不均衡;

一般来说可以通过缓存加速来减缓这种问题,比如经常访问的文件会被缓存到多个下载节点中,这样可以分散下载流量;这个也是CDN的工作原理之一哦.

0 回复 有任何疑惑可以回复我~
  • 提问者 Luke__Lu #1
    多谢老师的解答,希望老师可以多多讲解实际应用中的一些经验。
    回复 有任何疑惑可以回复我~ 2019-04-08 09:12:56
  • xiaomo 回复 提问者 Luke__Lu #2
    多谢建议哈,在把基础功能都基本实现后,我会持续将这些内容都整理出来.在后续的课程中也尽量加多一些实际应用经验的讲解!
    回复 有任何疑惑可以回复我~ 2019-04-08 09:17:48
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信