第三章、 研究方法: 系統設計與架構
2、 系統架構
本系統架構設計考量了,使用者本地端、私有雲端以及公有雲端提供商的混 合雲環境,並可根據該架構來彈性擴充介接的私有雲和公有雲儲存服務,圖十九 為本系統之 UML 部署圖,詳細各元件功能描述以下分述。
圖 十九:系統部署圖
2.1 系統元件說明 ( 1 ). Client
系統中的客戶端(Client)端為 Linux 和 Windows 桌面應用程式,需要由使用 者自行安裝於本地端電腦上,程式啟動時會要求使用者以現有雲端帳號登入而不 需要註冊。登入成功後,系統會把相關使用者資料寫進 SQLite 資料庫,並在本 地端檔案系統新建一個系統專屬的監控資料夾,裡面會預設有目前已登入的雲端 服務資料夾。使用者可以再手動進行連結其他雲端服務,登入成功後同樣會在系 統專屬監控資料夾內建立連結的雲端服務資料夾,並啟用同步。
使用者在監控目錄內進行的檔案異動操作,例如:新增檔案、修改檔案、重 新命名檔案以及刪除檔案和資料夾異動操作,例如:新增資料夾、重新命名資料 夾、刪除資料夾,這些操作皆會被客戶端程式攔截並通知同步伺服器(Sync Server),
以及進行後續的檔案同步工作。
( 2 ). Web Server
網站伺服器(Web Server)角色定位為系統的入口網站(Portal),為系統提供了 單一驗證窗口和檔案同步以及管理,單一驗證窗口除了允許使用者以 OpenID 方 式登入外,也提供讓客戶端應用程式使用網頁介面進行登入。入口網站彙整了登 入使用者所有已連結雲端服務,並提供使用者進行和客戶端程式一樣的檔案同步 功能和額外的檔案下載功能。網站伺服器上也提供了檔案操作相關的 REST API,
允許有權限的第三方程式或用戶來介接。
在入口網站上,檔案管理服務讓使用者可以進行檔案分享功能,並且可以設 定檔案存取權限,例如:公開或是私人,透過由系統所提供的檔案存取網址,只 要得到該網址並符合權限的用戶就可以進行檔案下載。
( 3 ). Sync Server
同步伺服器(Sync Server)主要負責把檔案同步到雲端儲存服務上。當使用者 從客戶端進行的檔案和資料夾異動操作,同步伺服器會把相對應的變動透過雲端 服務所提供的 API,對雲端服務進行檔案和資料夾異動。在同步伺服器上,同步 程式會根據使用者所要同步的目的地端來進行區隔,例如:使用者在本地端的系 統監控資料夾,對裡面的 Google Drive 資料夾進行新建檔案操作,同步程式則會 把該檔案也新建到使用者的 Google Drive 雲端硬碟服務上;對裡面的 Dropbox 資料夾進行刪除檔案操作,同步程式也會把使用者在 Dropbox 服務上對應的檔案 刪除。
同步程式會把使用者每次異動的檔案版本最新資訊寫進資料庫,以維持使用 者檔案清單的更新。由於同步程式的設計方式,同步請求的通知主要透過統一的 通訊伺服器,和系統整體架構規劃上的考量,因此同步伺服器是可以進行彈性水 平擴充的,把同步程式部署在多台同步伺服器上,來分擔使用者同步要求,彼此 增進同步工作處理速度。
( 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 上 取得相關檔案資料。
( 7 ). Identity Server
系統透過獨立建置 Keystone 驗證元件(Identity Server),作為帳號驗證之基礎,
並透過此元件管理使用者的系統帳號與密碼,以及頒發系統 Token,並分別將系 統帳號與密碼儲存於 OpenLDAP,而系統 Token 儲存於 MySQL 中。
( 8 ). Authentication Server
Authentication Server 分別介接 OpenID 提供商(Google、Dropbox、Amazon、
Facebook、Microsoft)與 OpenStack、Hadoop 所提供之驗證接口,來整合不同雲 服務的驗證機制,並透過網頁自動化的方式(Web Automation),於伺服器端以程 式去控制 Headless Browser,遵循 OpenID Connect 機制來模擬使用者於公有雲驗 證頁面進行登入,以及公有雲資源授權同意的行為,或直接相關驗證介面(API) 進行驗證,來完成多個雲的單一登入,並取得使用者於各雲服務之存取權杖 (Token)。