AnyBackup
性能爆表
AnyShare
如何购买
我已是Anyshare 客户
AnyRobot
如何购买
购买 AnyRobot 订阅服务
我已是 AnyRobot 客户
一对一在线咨询
我是 AnyRobot 新客户
一对一在线咨询
AnyDATA

爱数博客

全部 AnyBackup AnyShare AnyRobot AnyDATA AnyFabric

AnyShare 7客户端文件锁模型解读

2023-12-28 974 0

AnyShare 7客户端文件锁模型解读

一、自动锁

自动锁是一种在计算机系统中用于防止多个用户或进程同时修改同一文件的技术。在文件系统中,当一个用户或进程尝试访问已被其他用户或进程锁定的文件时,系统会返回一个错误消息。

1.1  Windows 自动锁原理

在线双击打开文件时,若异步检测到文件句柄被占用(即无法删除被打开的文件),则异步加锁,若异步检测到已加锁文件句柄被释放,则异步解锁。



显示流:
1、客户端在线时,双击打开云图标文件或对勾图标文件,编辑过程中可能文件未加锁
2、文件编辑过程中可能文件被加锁
3、关闭文件后依然处于加锁状态
4、等待一段时间后,文件状态更新

隐示流:
1、文件被打开时可能有句柄被占用,客户端检测该句柄是否被占用,占用则向服务器请求加锁
2、加锁成功后,探测更新该文件状态图标
3、文件被关闭时可能句柄被释放,客户端轮询检测到句柄被释放则向云端请求解锁;否则客户端向云端请求刷新锁
4、等待一段时间后,文件状态更新

1.2 Mac 自动锁原理




显示流:
1、客户端在线时,双击打开云图标文件或对勾图标文件,编辑过程中可能文件未加锁
2、文件编辑过程中可能文件被加锁
3、关闭文件后依然处于加锁状态
4、等待一段时间后,文件状态更新

隐示流:
1、文件被打开时可能有句柄被占用,客户端检测该句柄是否被占用,占用则向服务器请求加锁
2、加锁成功后,探测更新该文件状态图标
3、文件被关闭时可能句柄被释放,客户端轮询检测到句柄被释放则向云端请求解锁;否则客户端向云端请求刷新锁
4、等待一段时间后,文件状态更新

1.3 自动锁缺陷


无技术支撑自动锁机制
  •  Windows
离线打开场景:离线打开后,在线不会上锁
不支持格式场景:无句柄占用,不会上锁(打开文件后删除时,Windows无占用提示,则属于无句柄占用)
锁滞后场景:异步检测句柄占用,异步向云端请求加锁
  • Mac
不支持格式场景:无~$临时文件产生(打开Office系列文件会有临时文件产生)
锁滞后场景:异步检测临时文件产生,异步向云端请求加锁


二、手动锁


手动锁原理:Android/iOS/Mac/Windows/Web:选中文件点击按钮触发加解锁



显示流:
1、客户端在线时,点击侧边栏锁定按钮
2、客户端在线时,点击侧边栏取消锁定按钮

隐示流:
1、点击侧边栏锁图标按钮,向服务端请求加锁。
2、加锁成功后,客户端探测到,更新该文件状态图标
3、点击侧边栏锁图标按钮,向服务端请求解锁。
4、解锁成功后,客户端探测到,更新该文件状态图标

 

三、版本冲突

版本冲突机制是一种解决协作编辑过程中由于文件版本不一致导致的数据冲突的方法。在AnyShare中,当两个或更多用户同时编辑同一个文件时,可能会出现版本冲突。为了避免这种情况,AnyShare引入了版本冲突机制。

当用户A和用户B同时编辑同一个文件时,他们会各自携带所编辑文件的版本ID。云端会检查这个版本ID是否为云端的最新版本,如果是则生成新版本,否则不生成新版本。这样,如果两个用户同时修改同一个地方,由于他们的版本ID不同,云端会检测到版本冲突并阻止覆盖操作。

然而,这种机制并不能完全解决所有版本的覆盖问题。例如,当用户A和用户B同时上传同一个文件时,云端会有很小概率检测不到版本冲突,导致版本覆盖。为了解决这个问题,AnyShare支持手动锁机制。手动锁机制可以让用户在检测到版本冲突时手动选择保留哪个版本的文件,从而避免版本的丢失。
 

版本冲突原理:

Android/iOS/Mac/Windows:编辑后开始上传时携带所编辑文件的版本id,云端拿到版本id后,判断是否是基于当前最新的版本的修改,上传过程不会检查版本,上传结束后再检查版本id,之所以要结束后检查版本id,是因为多人同时编辑并上传大文件时,云端尚未产生新的版本,只有等其中一个人上传结束后才会产生新版本。


四、自动锁与手动锁对比

自动锁

优点:
1. 用户无需关心锁概念,自动解锁

缺点:
1、Windows客户端只有句柄被占用打开,才会自动加锁
2、全终端未统一
3、仅查看文件诉求也会加锁,影响其他用户编辑
4、某些场景下句柄被占用会导致加锁,用户不知道为什么会锁定且无法解锁
5、某些场景下用户加锁后未解锁,必须联系该用户解锁
6、海量数据场景下会有性能问题

手动锁

优点:

1、独立模块不会有性能影响
2、全终端统一考虑加/解/抢锁
3、只是打开文件不会加锁,有协作并需要编辑可自主控制锁
4、所有类型文件都支持锁
5、不受系统影响

缺点:
1、需要手动加锁,增加了用户操作复杂度







 
 

请就本文对您的益处进行评级:

标签

产品技术

相关文章

热门标签

版本发布 在线教学

拨打400

免费销售咨询热线

400 8216055

7*24 小时免费售后服务热线

400 880 1569

购买咨询

购买咨询

售后服务

售后服务

返回顶部

为了给您提供更优质的服务,请您先完善以下信息:
确认提交

扫码关注

爱数技术支持中心公众号