<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] * * * * * ### 1. FastDFS介紹 FastDFS( Fast Distributed file system)是一款輕量級的、高性能的、阿里巴巴開源的分布式文件系統。該系統的作者是余慶 (happyfish100),github地址:https://github.com/happyfish100 ,使用Fastdfs可以解決大規模數據存儲和負載均衡問題。該文件系統主要提供了一下功能: * 文件存儲 * 文件同步 * 文件訪問(文件上傳、下載和刪除等功能) fastdfs的設計充分考慮到了冗余備份、負載均衡、線性擴容等機制,并注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集群提供文件上傳、下載等服務。適合于在線的圖片和視頻分享的網站。 以其出色的表現,FastDFS已經在許多互聯網公司得到了應用,其中包括京東、阿里巴巴、Lockbur等。 ### 2. FastDFS架構 FastDFS文件系統結構示意圖: ![](https://box.kancloud.cn/2016-07-22_5791e8035b51e.png) ### 2.1 系統服務角色 如上圖,文件系統主要分為Tracker(跟蹤器)和Storage(存儲節點)兩種角色,且兩種節點都支持單節點和多節點部署。tracker和storage中的多個節點是對等關系并無沒有主從之分,所以不存在大部分分布式系統中的單點問題。 1. tracker(跟蹤器節點) 1)控制文件訪問任務的調度和訪問的負載均衡。系統運行時記錄中所有存儲組和存儲服務器的狀態信息, 是客戶端和數據服務器交互的紐帶。 2)tracker可以是單點和集群模式-多個tracker節點。系統運行時可以隨時添加和移出tracker節點,不會影響線上服務。 2. storage(存儲節點) 1)storage提供對文件的管理,包括文件存儲、文件同步和文件訪問功能,同時也提供對文件元數據(文件的屬性的鍵值對列表)的管理,例如width=1024, 鍵是"width",值為 "1024". 2)定時主動向Tracker server報告其狀態信息,包括磁盤剩余空間、文件同步狀況、文件上傳下載次數等統計信息 3)Storage支持集群模式,集群由多個group組成,而一個group由一個或者多個storage組成,這些storage具體體現為具有相同的group_name。 storage server具有以下七種狀態: ~~~ FDFS_STORAGE_STATUS_INIT :初始化,尚未得到同步已有數據的源服務器 FDFS_STORAGE_STATUS_WAIT_SYNC :等待同步,已得到同步已有數據的源服務器 FDFS_STORAGE_STATUS_SYNCING :同步中 FDFS_STORAGE_STATUS_DELETED :已刪除,該服務器從本組中摘除(注:本狀態的功能尚未實現) FDFS_STORAGE_STATUS_OFFLINE :離線 FDFS_STORAGE_STATUS_ONLINE :在線,尚不能提供服務 FDFS_STORAGE_STATUS_ACTIVE :在線,可以提供服務 ~~~ ### 2.2 數據存儲 #### 2.2.1 存儲架構 1. 文件的存儲服務是由Storage server提供。 2. Storage集群由多個volume(卷)或稱group(組)構成,volume/group之間的文件是獨立的,整個系統的存儲能力由這些volume/group的存儲能力的總合決定。 3. 一個volume/group可以包含一個或者多個storage節點,這些storage節點之間的數據是相同的,起到容災備份和負載均衡等功能。當向volume/group中添加storage server,volume中的文件會被自動地復制到這個新storage server當中,當數據復制完成后,系統會把該storage server轉換為上線狀態提供文件服務。 4. 當整個系統存儲容量不足時,可以添加volume來擴容,文件的標識有volume名稱和文件名確定。 #### 2.2.1 數據交互 配合架構圖,更好理解交互過程。 1. 客戶端上傳文件 1. client詢問tracker可以把文件上傳哪個storage,不需要附加參數; 2. tracker通過負載均衡策略返回一臺可用的storage信息(ip、port); 3. client利用tracker返回的信息與storage建立完成文件上傳。 2. 客戶端下載文件 1. client詢問tracker到哪個storage上去下載文件,參數為文件標識(卷名和文件名); 2. tracker通過負載均衡策略返回一臺可用的storage信息(ip、port); 3. client利用tracker返回的信息與storage建立連接,完成文件下載。 ### 3. 同步機制 #### 3.1 storage server信息同步 1. storage server信息存在于tracker server和storage之中,且兩者之間的信息時相互同步的。 2. tracker運行時會把storage server信息放在內存中,并且會把數據持久化到磁盤文件中,以免重啟后數據丟失。 3. storage會記錄本組所有的storage server信息,并且也會進行持久化。 ##### 3.1.1 何時發生storage信息同步? 當新增storage server實例或者系統中的storage server狀態發生變化時: 1. storage server主動連接tracker server 2. tracker server發現有新的storage server連接,將所在組的所有storage返回給新的storage,然后將最新的所有列表同步給組內其他storage。 當新增tracker時: 1. storage server連接該tracker server,發現該tracker server返回的本組storage server列表比本機記錄的要少,就會將該tracker server上沒有的storage server同步給該tracker server。 #### 3.2 數據同步 1. 當上傳新文件時 前邊講到,客戶端上傳文件時首先會和tracker server通信,獲得一個可用的storage server信息,接著與這臺storage server進行文件上傳(此時稱這臺服務器為源服務器),這時源服務器會將數據以push的方式同步給組內其他storage server(目標服務器)。數據同步按照以下規則: 1)數據同步是發生在同一組內的所有storage server之間 2)源頭數據(client端最開始上傳到系統的文件)需要同步,其他數據不需要,以免發生環路 2. 當有新storage加入時 由組中某一storage server將其所有的數據,同步給新storage。待同步完成后,系統將新storage server的轉態轉換為在線,此時該storage server可以提供服務。 因為文件同步采用的是異步的方式,所以可能會出現剛剛上傳的文件client訪問不到的問題
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看