Pike-HTTPCache高效簡單的 HTTP 緩存服務(wù)
Pike:HTTP緩存服務(wù),提供高效簡單的HTTP緩存服務(wù),類似于varnish但配置更簡單。
Pike由最開始基于fasthttp,fasthttp的性能的確很高效,但該項目在2017年底之后就沒有commit,提的issue也沒有反饋,BUG只能自己修復(fù),因此后續(xù)切換至echo。echo的大部分增強的功能都基本沒使用到,自帶的http已足夠滿足現(xiàn)有的業(yè)務(wù)場景,最終選擇了直接使用自帶的http,版本1.0.0也正式發(fā)布。
簡潔的配置:
# HTTP response header 中的 Pike name: Pike # 程序監(jiān)聽的端口,默認為 :3015 listen: :3015 # 數(shù)據(jù)緩存的db文件(必須指定) db: /tmp/pike.cache directors: - # 名稱 name: tiny # backend的健康檢測,如果不配置,則默認判斷該端口是否被監(jiān)聽 ping: /ping # prefix與host是AND的關(guān)系 # 判斷請求url的是否包含該前綴,如果是,則是此director prefixs: - /api # backend列表 backends: - http://127.0.0.1:5018 - name: npmtrend ping: /ping hosts: - npmtrend.com backends: - http://127.0.0.1:5020 - http://127.0.0.1:5021
特性
-
基于yaml的配置,簡潔易懂
-
WEB管理后臺,提供節(jié)點監(jiān)控、系統(tǒng)性能、緩存清理功能
-
標準化的基于HTTP頭Cache-Control緩存控制
-
壓縮保存的響應(yīng)數(shù)據(jù),避免每次響應(yīng)時重新壓縮(如果客戶端不支持壓縮則解壓)
-
自定義日志格式,支持二十多種placeholder,如:cookie,請求頭字段,響應(yīng)頭字段,響應(yīng)時間等
-
訪問日志支持以文件(按天分隔)或者UDP的形式輸出
-
支持自定義HTTP請求、響應(yīng)頭配置
-
支持自定義最小壓縮長度,對于內(nèi)網(wǎng)之間的訪問,避免壓縮、解壓的時間損耗
-
支持自定義文本壓縮級別與指定壓縮數(shù)據(jù)類型
-
根據(jù)客戶端智能選擇響應(yīng)數(shù)據(jù)壓縮方式:
gzip或者brotli
性能
測試機器:8核 8GB內(nèi)存,測試環(huán)境有限,wrk與測試程序均在同一機器上運行
wrk -H 'Accept-Encoding: gzip, deflate' -t10 -c2000 \ -d1m 'http://127.0.0.1:3015/api/i18ns' --latency --timeout 3s Running 1m test @ http://127.0.0.1:3015/api/i18ns 10 threads and 2000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 203.61ms 226.35ms 3.00s 85.52% Req/Sec 1.31k 240.96 3.15k 74.11% Latency Distribution 50% 157.26ms 75% 315.03ms 90% 506.21ms 99% 963.79ms 785711 requests in 1.00m, 4.13GB read Requests/sec: 13075.99 Transfer/sec: 70.40MB
安裝
因為pike支持br的壓縮處理,此功能需要依賴于動態(tài)庫,建議直接使用打包好的docker鏡像:vicanso/pike:1.0.0,相應(yīng)編譯好的動態(tài)庫(ubuntu)也可以在github中的release中下載。
docker run -d --restart=always \ -p 3015:3015 \ -v /data/pike/config.yml:/etc/pike/config.yml \ --name=pike \ vicanso/pike
結(jié)語
Pike在性能已超過10k/rps,對于大部分的網(wǎng)站已經(jīng)能滿足性能上的需求,如果對于性能有更高要求的可以不使用docker的形式執(zhí)行,或者直接使用varnish。Pike性能雖然比不上varnish,但它的配置更簡單,而且也有直觀的管理后臺功能,如果有興趣試用,可以在github上向我反饋。在此,感恩不言謝!
注:管理后臺體驗http://xs.aslant.site:3000/pike/index.html#/,token是abcd
