什麼是高可用?通俗講就是在任何異常情況下,系統依然能正常提供服務。儘量縮短系統不可用時間,以提高系統的可用時間。大多按照年可用時間99.99%為標準。平攤到每個月不可用時間在幾十分鐘內。如何做到高可用?1,系統設計上避免使用單點。2,自動故障轉移。
我們下面來看看FastDFS是如何做到這兩點的。透過下圖來了解下FastDFS的架構。
Tracker server主要作用是負載均衡和排程,透過Tracker server在檔案上傳時可以根據一些策略找到Storage server提供檔案上傳服務。Tracker server可以由一臺或者N臺伺服器組成。可以隨時增加或者下線不會影響線上服務,同時可以根據線上伺服器的壓力情況隨時增加或者減少。
Tracker負責管理Storage和group。每個storage會去連結Tracker,並切報告自己所屬的group等資訊,並保持和Tracker週期性的心跳。tracker根據storage的心跳資訊建立 group-storage server list的對映表。所有的元資訊很少,都儲存在記憶體中。這樣就使Tracker非常容易擴充套件。
Storage server:可以稱為儲存伺服器。客戶端上傳的檔案最終儲存在Storage伺服器上,Storage server沒有實現自己的檔案系統而是利用作業系統 的檔案系統來管理檔案。儲存系統由一個或多個組組成,組與組之間的檔案是相互獨立的,所有組的檔案容量累加就是整個儲存系統中的檔案容量。
檔案上傳流程
1,Client想上傳圖片,它先向Tracker進行詢問,Tracker檢視一下登記資訊之後,告訴Client哪個storage當前空閒,Tracker會把IP和埠號都返回給Client,Client在拿到IP和埠號之後,便不再需要透過Tracker,直接便向Storage進行上傳圖片,Storage在儲存圖片的同時,會向Tracker進行彙報,告訴Tracker它當前是否還留有剩餘空間,以及剩餘空間大小。彙報完之後,Storage將伺服器上儲存圖片的地址返回給Client,Client可以拿著這個地址進行訪問圖片。
我們來了解下檔案索引資訊。主要包括:組名,虛擬磁碟路徑,資料兩級目錄,檔名。如下所示:
我們來看看檔案索引的具體解釋和組成部分:
組名:檔案上傳後所在的storage組名稱,在檔案上傳成功後由storage伺服器返回,需要客戶端自行儲存。
虛擬磁碟路徑:storage配置的虛擬路徑,與磁碟選項store_path*對應。如果配置了store_path0則是M00,如果配置了store_path1則是M01,以此類推。
資料兩級目錄:storage伺服器在每個虛擬磁碟路徑下建立的兩級目錄,用於儲存資料檔案。檔名:與檔案上傳時不同。是由儲存伺服器根據特定資訊生成,
檔名包含:源儲存伺服器IP地址、檔案建立時間戳、檔案大小、隨機數和檔案拓展名等資訊
檔案下載流程
如圖所示FastDFS下載的時序圖
圖解如下
Storage Server啟動後會主動去連結Tracker Server,週期性向Tracker Server傳送心跳。
然後client詢問tracker下載檔案的storage,引數為檔案標識(組名和檔名),tracker返回一臺可用的storage。
最後client直接和storage通訊完成檔案下載。
我們在來看看FastDFS下載的執行的示意圖
FastDFS高可用架構實踐。
如果FastDFS壓力過大此時我們如何在對這個架構進行最佳化呢?我們可以使用ATS做檔案快取服務。
我們透過對FastDFS中的Tracker server和Storage server 的工作流程的瞭解,以及上傳和下載的具體場景圖列,可以發現它做到了冗餘,做到了自動故障轉移。以上就是我這個問題的理解。
什麼是高可用?通俗講就是在任何異常情況下,系統依然能正常提供服務。儘量縮短系統不可用時間,以提高系統的可用時間。大多按照年可用時間99.99%為標準。平攤到每個月不可用時間在幾十分鐘內。如何做到高可用?1,系統設計上避免使用單點。2,自動故障轉移。
我們下面來看看FastDFS是如何做到這兩點的。透過下圖來了解下FastDFS的架構。
Tracker server主要作用是負載均衡和排程,透過Tracker server在檔案上傳時可以根據一些策略找到Storage server提供檔案上傳服務。Tracker server可以由一臺或者N臺伺服器組成。可以隨時增加或者下線不會影響線上服務,同時可以根據線上伺服器的壓力情況隨時增加或者減少。
Tracker負責管理Storage和group。每個storage會去連結Tracker,並切報告自己所屬的group等資訊,並保持和Tracker週期性的心跳。tracker根據storage的心跳資訊建立 group-storage server list的對映表。所有的元資訊很少,都儲存在記憶體中。這樣就使Tracker非常容易擴充套件。
Storage server:可以稱為儲存伺服器。客戶端上傳的檔案最終儲存在Storage伺服器上,Storage server沒有實現自己的檔案系統而是利用作業系統 的檔案系統來管理檔案。儲存系統由一個或多個組組成,組與組之間的檔案是相互獨立的,所有組的檔案容量累加就是整個儲存系統中的檔案容量。
檔案上傳流程
1,Client想上傳圖片,它先向Tracker進行詢問,Tracker檢視一下登記資訊之後,告訴Client哪個storage當前空閒,Tracker會把IP和埠號都返回給Client,Client在拿到IP和埠號之後,便不再需要透過Tracker,直接便向Storage進行上傳圖片,Storage在儲存圖片的同時,會向Tracker進行彙報,告訴Tracker它當前是否還留有剩餘空間,以及剩餘空間大小。彙報完之後,Storage將伺服器上儲存圖片的地址返回給Client,Client可以拿著這個地址進行訪問圖片。
我們來了解下檔案索引資訊。主要包括:組名,虛擬磁碟路徑,資料兩級目錄,檔名。如下所示:
我們來看看檔案索引的具體解釋和組成部分:
組名:檔案上傳後所在的storage組名稱,在檔案上傳成功後由storage伺服器返回,需要客戶端自行儲存。
虛擬磁碟路徑:storage配置的虛擬路徑,與磁碟選項store_path*對應。如果配置了store_path0則是M00,如果配置了store_path1則是M01,以此類推。
資料兩級目錄:storage伺服器在每個虛擬磁碟路徑下建立的兩級目錄,用於儲存資料檔案。檔名:與檔案上傳時不同。是由儲存伺服器根據特定資訊生成,
檔名包含:源儲存伺服器IP地址、檔案建立時間戳、檔案大小、隨機數和檔案拓展名等資訊
檔案下載流程
如圖所示FastDFS下載的時序圖
圖解如下
Storage Server啟動後會主動去連結Tracker Server,週期性向Tracker Server傳送心跳。
然後client詢問tracker下載檔案的storage,引數為檔案標識(組名和檔名),tracker返回一臺可用的storage。
最後client直接和storage通訊完成檔案下載。
我們在來看看FastDFS下載的執行的示意圖
FastDFS高可用架構實踐。
如果FastDFS壓力過大此時我們如何在對這個架構進行最佳化呢?我們可以使用ATS做檔案快取服務。
我們透過對FastDFS中的Tracker server和Storage server 的工作流程的瞭解,以及上傳和下載的具體場景圖列,可以發現它做到了冗餘,做到了自動故障轉移。以上就是我這個問題的理解。