第三章、 系統設計與架構
2、 系統架構
國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
2、 系統架構
本系統架構設計考量了,使用者本地端、私有雲端以及公有雲端提供商的混 合雲環境,並可根據該架構來彈性擴充介接的私有雲和公有雲儲存服務,圖十三 為本系統之 UML 部署圖,詳細各元件功能描述以下分述。
圖 十三:系統部署圖
2.1 系統元件說明 ( 1 ). Client
系統中的客戶端(Client)端為 Linux 和 Windows 桌面應用程式,需要由使用 者自行安裝於本地端電腦上,程式啟動時會要求使用者以現有雲端帳號登入而不 需要註冊。登入成功後,系統會把相關使用者資料寫進 SQLite 資料庫,並在本 地端檔案系統新建一個系統專屬的監控資料夾,裡面會預設有目前已登入的雲端
‧
夾、刪除資料夾,這些操作皆會被客戶端程式攔截並通知同步伺服器(Sync Server),以及進行後續的檔案同步工作。
( 2 ). Web Server
網站伺服器(Web Server)角色定位為系統的入口網站(Portal),為系統提供了 單一驗證窗口和檔案同步以及管理,單一驗證窗口除了允許使用者以 OpenID 方
同步伺服器(Sync Server)主要負責把檔案同步到雲端儲存服務上。當使用者 從客戶端進行的檔案和資料夾異動操作,同步伺服器會把相對應的變動透過雲端 服務所提供的 API,對雲端服務進行檔案和資料夾異動。在同步伺服器上,同步 程式會根據使用者所要同步的目的地端來進行區隔,例如:使用者在本地端的系 統監控資料夾,對裡面的 Google Drive 資料夾進行新建檔案操作,同步程式則會 把該檔案也新建到使用者的 Google Drive 雲端硬碟服務上;對裡面的 Dropbox 資 料夾進行刪除檔案操作,同步程式也會把使用者在 Dropbox 服務上對應的檔案 刪除。
同步程式會把使用者每次異動的檔案版本最新資訊寫進資料庫,以維持使用
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
者檔案清單的更新。由於同步程式的設計方式,同步請求的通知主要透過統一的 通訊伺服器,和系統整體架構規劃上的考量,因此同步伺服器是可以進行彈性水 平擴充的,把同步程式部署在多台同步伺服器上,來分擔使用者同步要求,彼此 增進同步工作處理速度。
( 4 ). Messaging Server
通訊伺服器(Messaging Server)為系統溝通的橋樑,在上面會架設 RabbitMQ 來負責客戶端、網頁伺服器和同步伺服器三者之間的訊息傳遞。訊息傳遞會以 AMQP 來進行,而訊息內容會以 JSON 資料格式來進行資料交換。
( 5 ). Database Server
資 料 庫 伺 服 器 (Database Server) 上 架 有 MongoDB , 其 設 計 主 要 有 兩 種 Collection 為 User 和 Files,User 存有系統上使用者資訊,Files 存有使用者擁有 檔案清單和相關檔案權限資訊。
( 6 ). OpenStack Swift
OpenStack Swift 在系統架構上部署為代理節點(Proxy Node)和儲存節點 (Storage Node),其主要作為系統上檔案同步的儲存伺服器,以及擔任檔案備援機 制。使用者在客戶端或網站上進行的檔案和資料夾異動操作,都會透過代理節點 上的 Swift API 進行檔案同步,而同步程式進行同步工作時,可以從 Swift 上取 得相關檔案資料。
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University