FastDFS V6.09 發(fā)布,主要改進:引入網(wǎng)絡框架庫 libserverframe,替換原有的 tracker nio 和 storage nio 兩個模塊。 2015 年 libserverframe 從 FastDFS 的 nio 模塊抽取出來,現(xiàn)在 FastDFS 使用 libserverframe,使得代碼更加簡潔高效,并解決了由來已久的一個 bug:網(wǎng)絡線程接收到客戶端請求,把文件讀寫交給磁盤 IO 線程后,在磁盤線程處理過程中如果客戶端斷開連接,對應的網(wǎng)絡線程將空轉導致 CPU 跑滿。解決方法是 task 對象使用引用計數(shù)器,網(wǎng)絡線程和磁盤線程分別持有 task 對象(引用計數(shù)加一),各自處理完成后釋放該 task 對象(引用計數(shù)減一),當引用計數(shù)為零時,才能將該 task 放回對象池。 V6.09 另外兩點改進: 1)tracker server 和 storage server 均支持 -N 選項,表示程序在前臺運行,而不采用傳統(tǒng)的 daemon 運行方式,以方便和其他運維工具整合; 2)文件上傳次數(shù)、文件下載次數(shù)等計數(shù)器不再采用線程鎖,而是使用原子操作,這樣代碼更加簡潔且性能更高。 FastDFS V6.09 依賴 libfastcommon 和 libserverframe 這兩個基礎庫,歡迎大家下載使用,建議已有用戶盡快升級到最新版本。
|