核心特性php
1.基於swoole和inotify實現分佈式文件服務 2.採用協議包來實時同步文件、性能很高,採用sendfile傳送文件,內存、cpu佔有率不多 3.文件實時監控及監控子目錄服務 4.自動斷線重連服務 5.自動掃描本地已存在的文件目錄實時同步服務redis
須要php以cli模式運行/server.php服務器
php server.php start
php server.php stop
php server.php restartswoole
composer 安裝composer
{框架
"require": { "qieangel2013/dfs": "0.1.6" }
}分佈式
安裝swoole擴展和inotify擴展
修改/config/config.php文件相應的配置性能
原理
dfs是基於swoole和inotify實現的分佈式文件同步服務器框架,他藉助於inotify實現實時對文件及其目錄進行監控,基於swoole的事件驅動讀取inotify的事件來作相應的邏輯處理,dfs框架的服務一旦啓動,他會經過redis獲取遠程服務器在線列表而後自身啓動客戶端來鏈接遠程服務器,每個服務器都有一個服務端和多個客戶端,這樣每臺服務器都能互通互聯了,而且支持熱拔,一旦服務器不提供服務了都會觸發別的服務器跟其斷開鏈接實現高可用!ui
DFS 配置
define('ServerIp',"0.0.0.0"); 配置服務器監聽ip地址
define('ServerPort',"9508");配置服務器監聽端口
define('ServerLog',dirname(DIR).'/log/FileDistributed.log');配置服務器日誌路徑
define('redis_server','192.168.102.163');配置redis鏈接ip,注意redis啓動時bind的ip不能爲127.0.0.1
define('redis_port','6379');配置redis的端口號
define('redis_auth','123qwe');redis認證密碼
define('LISTENPATH',dirname(DIR).'/img');配置監聽目錄,dfs支持無限子目錄監聽
define('allsysnc',true);是否容許掃描本地已存在的文件或者目錄同步
define('maxpackage', 1024 1024 200);配置協議包的最大長度
define('Bincmd', '/usr/local/php/bin/php');配置php的絕對路勁
define('file_arg', 'dfs');配置項目名稱spa
dfs的使用其實很簡單,就是隻要配置好配置文件,啓動服務就能夠了
在使用dfs框架時注意swoole的版本最好爲1.8.9以上,由於以前的版本有sendfile的部分bug, 若是單個文件大於20m,請修改文件裏的package_max_length的值,可是這個值不要設置太大