摘要:一概念簡述是由淘寶開發(fā)平臺部資深架構(gòu)師余慶開發(fā),是一個輕量級高性能的開源分布式文件系統(tǒng),用純語言開發(fā),包括文件存儲文件同步文件訪問上傳下載存取負載均衡在線擴容相同內(nèi)容只存儲一份等功能,適合有大容量存儲需求的應用或系統(tǒng)。故障恢復后,再次奪回。
一、概念簡述
FastDFS 是由淘寶開發(fā)平臺部資深架構(gòu)師余慶開發(fā),是一個輕量級、高性能的開源分布式文件系統(tǒng)( Distributed File System ),用純 C 語言開發(fā),包括文件存儲、文件同步、文件訪問(上傳、下載)、存取負載均衡、在線擴容、相同內(nèi)容只存儲一份等功能,適合有大容量存儲需求的應用或系統(tǒng)。
它對文件進行管理,充分考慮了冗余備份、負載均衡、線性擴容等機制,并注重高可用、高性能等指標。解決了大容量存儲和負載均衡的問題。特別適合以中小文件( 建議范圍:4KB < file_size <500MB )為載體的在線服務,如相冊網(wǎng)站、視頻網(wǎng)站等等具有顯著的效果。
同類的分布式文件系統(tǒng)有谷歌的 GFS、HDFS(Hadoop)、TFS(淘寶)等。
二、FastDFS架構(gòu)FastDFS 服務端有三個角色:客戶端(client),跟蹤器(tracker)和存儲器(storage)構(gòu)成。基本架構(gòu)如下圖所示
跟蹤器(tracker)Tracker 是 FastDFS 的 協(xié)調(diào)者,負責管理所有的 storage server 和 group,每個 storage 在啟動后會連接 Tracker,告知自己所屬的 group 等信息,并保持周期性的心跳,tracker 根據(jù) storage 的心跳信息,建立 group ==> [storage serverlist] 的映射表。
Tracker 需要管理的元信息很少,會全部存儲在內(nèi)存中;另外 tracker 上的元信息都是由 storage 匯報的信息生成的,本身不需要持久化任何數(shù)據(jù),這樣使得 tracker 非常容易擴展,直接增加 tracker 機器即可擴展為 tracker cluster 來服務,cluster 里每個 tracker 之間是完全對等的,所有的 tracker 都接受 stroage 的心跳信息,生成元數(shù)據(jù)信息來提供讀寫服務。
跟蹤器在訪問上起負載均衡的作用??梢噪S時增加或下線而不會影響線上服務。存儲節(jié)點(storage)
存儲系統(tǒng)(Storage server)由以組 group(或卷 volume)為單位組成。一個 group 內(nèi)包含多臺 storage 機器,數(shù)據(jù)互為備份,存儲空間以 group 內(nèi)容量最小的 storage為準。
存儲節(jié)點中的服務器均可以隨時增加或下線而不會影響線上服務。客戶端(client)
客戶端(client),作為業(yè)務請求的發(fā)起方,通過專有接口,使用TCP/IP協(xié)議與跟蹤器服務器或存儲節(jié)點進行數(shù)據(jù)交互。
三、FastDFS 的存儲策略為了支持大容量,存儲系統(tǒng)由一個或多個卷組成,卷與卷之間的文件是相互獨立的,所有卷的文件容量累加就是整個存儲系統(tǒng)中的文件容量。一個卷可以由一臺或多臺存儲服務器組成,一個卷下的存儲服務器中的文件都是相同的(同步已有的文件由系統(tǒng)自動完成同步),卷中的多臺存儲服務器起到了冗余備份和負載均衡的作用。
在卷中增加服務器時,同步已有的文件由系統(tǒng)自動完成,同步完成后,系統(tǒng)自動將新增服務器切換到線上提供服務。
當存儲空間不足或即將耗盡時,可以 動態(tài) 添加卷。只需要增加一臺或多臺服務器,并將它們配置為一個新的卷,這樣就擴大了存儲系統(tǒng)的容量。
四、FastDFS 的文件同步寫文件時,客戶端將文件寫至 group 內(nèi)一個 storage server 即認為寫文件成功,storage server 寫完文件后,會由后臺線程將文件同步至同 group 內(nèi)其他的 storage server。
每個 storage 寫文件后,同時會寫一份 binlog,binlog 里不包含文件數(shù)據(jù),只包含文件名等元信息,這份 binlog 用于后臺同步,storage 會記錄向 group 內(nèi)其他 storage 同步的進度,以便重啟后能接上次的進度繼續(xù)同步;進度以時間戳的方式進行記錄,所以最好能保證集群內(nèi)所有 server 的時鐘保持同步。
storage 的同步進度會作為元數(shù)據(jù)的一部分匯報到 tracker 上,tracker 在選擇讀 storage 的時候會以同步進度作為參考。這樣就避免文件同步完成之前訪問文件不存在的問題,就是 tracker 會告訴 client 去訪問執(zhí)行存儲的那臺 storage。
五、FastDFS 整體流程圖從 client 發(fā)起請求,由跟蹤器(tracker,主)來處理,查詢可用的存儲器(storage),返回給 client storage 的 ip 和端口;client 根據(jù) ip 和端口訪問 storage 完成上傳圖片等服務;成功后返回地址,如:group1/M00/00/01/wKgBwFkueeWAU81OAADxa3SgCic420.png六、結(jié)合 keepalived keepalived 概念
keepalived 是以 VRRP( Virtual Router Redundancy Protocol )協(xié)議為實現(xiàn)基礎(chǔ)的,即虛擬路由冗余協(xié)議,實現(xiàn)路由器高可用的協(xié)議。
工作原理Keepalived 的作用是檢測服務器的狀態(tài),如果有一臺 web 服務器宕機,或工作出現(xiàn)故障,Keepalived 將檢測到,并將有故障的服務器從系統(tǒng)中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常后 Keepalived 自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的服務器。
將 N 臺提供相同功能的路由器組成一個路由器組,這個組里面有一個 master 和多個 backup ,master 上面有一個對外提供服務的 vip(該路由器所在局域網(wǎng)內(nèi)其他機器的默認路由為該 vip),master 會發(fā)組播,當 backup 收不到 vrrp 包時就認為 master 宕掉了,這時就需要根據(jù) VRRP 的優(yōu)先級來選舉一個 backup 當 master。這樣的話就可以保證路由器的高可用了。
主從模式Keepalived 通過請求一個 vip 來達到請求真實 IP 地址的功能,而 VIP 能夠在一臺機器發(fā)生故障時候,自動漂移到另外一臺機器上,從來達到了高可用。
一主多從模式:七、FastDFS插件
在當前架構(gòu)中僅允許存在一臺 master,其他均為 backup。當 backup 接收不到 vrrp 消息時,會根據(jù)權(quán)重來選舉一個 backup 出來代替 master。
master 故障恢復后,再次奪回 master。
fastdfs-nginx-module:
在大多數(shù)業(yè)務場景中,往往需要為 FastDFS 存儲的文件提供 http 下載服務,而盡管 FastDFS 在其 storage 及 tracker 都內(nèi)置了 http 服務, 但性能表現(xiàn)卻不盡如人意;作者余慶在后來的版本中增加了基于當前主流 web 服務器的擴展模塊(包括 nginx/apache ),其用意在于利用 web 服務器直接對本機 storage 數(shù)據(jù)文件提供 http 服務,以提高文件下載的性能。
fastdfs_client_php:
FastDFS 的 PHP 擴展,用于和 PHP 進行交互。
FastDFS + Keepalived + Nginx 架構(gòu)注意:千萬不要使用 kill -9 命令強殺 FastDFS 進程,否則可能會導致 binlog 數(shù)據(jù)丟失。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/31609.html
摘要:可以將稱為追蹤服務器或調(diào)度服務器。實際保存文件分為多個組,每個組之間保存的文件是不同的。虛擬磁盤路徑配置的虛擬路徑,與磁盤選項對應。數(shù)據(jù)兩級目錄服務器在每個虛擬磁盤路徑下創(chuàng)建的兩級目錄,用于存儲數(shù)據(jù)文件。1.什么是FastDFS FastDFS是用 c 語言編寫的一款開源的分布式文件系統(tǒng)。FastDFS 為互聯(lián)網(wǎng)量身定制, 充分考慮了冗余備份、負載均衡、線性擴容等機制,并注重高可用、高性能等...
摘要:的存儲策略為了支持大容量,存儲節(jié)點服務器采用了分卷或分組的組織方式。的文件下載客戶端成功后,會拿到一個生成的文件名,接下來客戶端根據(jù)這個文件名即可訪問到該文件。一、FastDFS介紹FastDFS開源地址:https://github.com/happyfish100參考:分布式文件系統(tǒng)FastDFS設(shè)計原理參考:FastDFS分布式文件系統(tǒng)個人封裝的FastDFS Java API:htt...
閱讀 1640·2021-10-25 09:46
閱讀 3235·2021-10-08 10:04
閱讀 2383·2021-09-06 15:00
閱讀 2784·2021-08-19 10:57
閱讀 2088·2019-08-30 11:03
閱讀 989·2019-08-30 11:00
閱讀 2389·2019-08-26 17:10
閱讀 3559·2019-08-26 13:36