背景
文件网关提供与OSS对象1:1映射的文件服务,从文件网关挂载点写入的文件可以快速上传到OSS,但是OSS反向同步一直是个痛点。用户通过云控制台,OSS传输工具或者SDK上传变更了一个对象文件,如何让网关以及客户端的挂载点快速的感知到呢?
文件网关之前提供的解决方案是定时按需触发扫描,也即用户主动进入目录,会去扫描OSS对应的同步当前目录和次级目录下的文件,并且反向同步到网关侧,每个时间周期内只触发一次扫描。该解决方案在简单的交互场景下可以满足用户的基本需求,但是存在两个缺点。首先是扫描周期不能设的太短,不然用户浏览文件夹的时候会频繁触发OSS扫描增加时延,影响了浏览体验,同时也会增加OSS请求量,产生一定的费用。目前控制台上允许的最小值是15s,对于反向同步敏感的客户来讲就无法满足了。其次是扫描对海量文件目录结构很不友好,即便是海量文件里变更了少数几个文件,也需要全量扫描,造成的开销很大。
用户需要一种更加友好彻底的解决方案,以极小的开销去获取增量变化信息。网关在此背景下推出了极速同步功能,能够帮助用户秒级获取OSS的增量变化,并在网关侧上及时更新。
极速同步原理
文件网关为用户配置了OSS事件规则,利用MNS消息队列服务获取OSS的变更事件,并对这些增量文件去OSS获取最新的元数据信息,有效的避免了之前的扫描开销,让秒级同步成为了现实。
在开启网关极速同步功能时,网关控制台会预先获得用户的授权访问MNS服务,创建对应的事件通知规则,消息主题和消息队列,用户不需要做额外的MNS操作。
创建同步组
在网关控制台左边栏新增了“极速同步”标签页,选中之后会看到已经创建的各个区域的全局同步组列表。在创建同步组的页面里填入与文件共享相同的Bucket和子目录信息,为了优化交互,Bucket下拉框只会列出已经存在共享的Bucket,而不是该region下的所有Bucket,所以创建同步组时,请确保目标Bucket至少有一个文件共享已经存在。
如下图所示,未加入同步组的共享详情如下,可以通过该链接快速跳转到极速同步标签页。
在同步组设置中,左边框会列出该Bucket下适配同步组的所有共享,在共享名称旁边是网关名称/网关region信息,方便用户定位,选中共享移到右边框即可加入同步组。
加入同步组成功之后,可以在同步组的详情页里看到已经创建的消息主题和消息队列等信息。
也可以通过共享详情页看到该同步组ID信息。
体验极速同步
笔者在OSS控制台上做了几组操作包括上传/删除文件,创建/删除目录,通过SMB挂载在Windows客户机器上即刻可以看到,妥妥的秒级同步。通过NFS挂载访问共享时,使用默认挂载参数时会有20s左右的时延才可以看到OSS
的变化,这是由于NFS客户端缓存了元数据导致,添加上noac这个挂载参数就可以禁掉客户端缓存,实时去获取网关最新的元数据,也能够达到秒级同步的效果。
小结
本文详细介绍了文件网关的极速同步功能以及操作,并且重点介绍了OSS反向同步这个场景下的初体验,总体来讲体验是比较惊艳的,后面还会从其他场景的视角去解读这个新特性,敬请期待。