nginx proxy_store文件管理實現方案

1。源碼下載地址:    nginx

        https://github.com/cxwshawn/ngx_proxy_store_file_mgrgit

2。介紹:github

    1)、nginx-conf目錄:主要實現基於nginx.conf中操做redis數據庫代碼,基於lua實現;大體流程:
golang

            獲取cache鎖是不是locked -> 若是是locked,說明文件管理進程正在作lru策略,直接proxy到上游,不操做本地文件;
redis

                                                      -> 非locked, 那麼設置redis中sorted set文件訪問時間(即score)
數據庫

        redis結構採用hash+sorted set; hash爲md5(uri)->filepath, sortedset 爲:md5(uri)+ngx.now()(score)排序;併發

    2)、src目錄:主要採用golang實現的nginx proxy_store的文件管理,主要思想:
lua

            目前只統計當磁盤剩餘不超過20%時,經過redis中的sorted set排序結果取百分比的數量依次進行刪除;
spa

    3)、配置項:
.net

        

    {

        "MaxFileLimit" : 100000,        最大文件數量,超過該數量時作LRU(未實現)

        "CheckInterval" : 20,    檢測作LRU的時間間隔 

        "ExpireDays" : 7,  過時時間超過7day的文件均會刪除

        "ErrorLog": true,  是否輸出錯誤日誌

        "AccessLog": false,  是否輸入調試日誌

        "SortedSetName": "defset",  redis中sortedset的名字與access_file.lua文件中的sorte set名字一致

        "HashName": "defhash",   redis中hash名字與access_file.lua文件中的hash名字一致

        "RedisAddr" : "127.0.0.1:6379", redis數據庫的地址

        "RoutineCount" : 32   go lru的併發數

    }

    4)、若有問題,mail到cxwshawn@yeah.net

相關文章
相關標籤/搜索