背景
檔案網關提供與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反向同步這個場景下的初體驗,總體來講體驗是比較驚豔的,後面還會從其他場景的視角去解讀這個新特性,敬請期待。