Pike-HTTPCache高效簡(jiǎn)單的 HTTP 緩存服務(wù)
Pike:HTTP緩存服務(wù),提供高效簡(jiǎn)單的HTTP緩存服務(wù),類似于varnish但配置更簡(jiǎn)單。
Pike由最開始基于fasthttp,fasthttp的性能的確很高效,但該項(xiàng)目在2017年底之后就沒(méi)有commit,提的issue也沒(méi)有反饋,BUG只能自己修復(fù),因此后續(xù)切換至echo。echo的大部分增強(qiáng)的功能都基本沒(méi)使用到,自帶的http已足夠滿足現(xiàn)有的業(yè)務(wù)場(chǎng)景,最終選擇了直接使用自帶的http,版本1.0.0也正式發(fā)布。
簡(jiǎn)潔的配置:
# HTTP response header 中的 Pike name: Pike # 程序監(jiān)聽的端口,默認(rèn)為 :3015 listen: :3015 # 數(shù)據(jù)緩存的db文件(必須指定) db: /tmp/pike.cache directors: - # 名稱 name: tiny # backend的健康檢測(cè),如果不配置,則默認(rèn)判斷該端口是否被監(jiān)聽 ping: /ping # prefix與host是AND的關(guān)系 # 判斷請(qǐng)求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的配置,簡(jiǎn)潔易懂
-
WEB管理后臺(tái),提供節(jié)點(diǎn)監(jiān)控、系統(tǒng)性能、緩存清理功能
-
標(biāo)準(zhǔn)化的基于HTTP頭Cache-Control緩存控制
-
壓縮保存的響應(yīng)數(shù)據(jù),避免每次響應(yīng)時(shí)重新壓縮(如果客戶端不支持壓縮則解壓)
-
自定義日志格式,支持二十多種placeholder,如:cookie,請(qǐng)求頭字段,響應(yīng)頭字段,響應(yīng)時(shí)間等
-
訪問(wèn)日志支持以文件(按天分隔)或者UDP的形式輸出
-
支持自定義HTTP請(qǐng)求、響應(yīng)頭配置
-
支持自定義最小壓縮長(zhǎng)度,對(duì)于內(nèi)網(wǎng)之間的訪問(wèn),避免壓縮、解壓的時(shí)間損耗
-
支持自定義文本壓縮級(jí)別與指定壓縮數(shù)據(jù)類型
-
根據(jù)客戶端智能選擇響應(yīng)數(shù)據(jù)壓縮方式:
gzip或者brotli
性能
測(cè)試機(jī)器:8核 8GB內(nèi)存,測(cè)試環(huán)境有限,wrk與測(cè)試程序均在同一機(jī)器上運(yùn)行
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
安裝
因?yàn)?code>pike支持br的壓縮處理,此功能需要依賴于動(dòng)態(tài)庫(kù),建議直接使用打包好的docker鏡像:vicanso/pike:1.0.0,相應(yīng)編譯好的動(dòng)態(tài)庫(kù)(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é)語(yǔ)
Pike在性能已超過(guò)10k/rps,對(duì)于大部分的網(wǎng)站已經(jīng)能滿足性能上的需求,如果對(duì)于性能有更高要求的可以不使用docker的形式執(zhí)行,或者直接使用varnish。Pike性能雖然比不上varnish,但它的配置更簡(jiǎn)單,而且也有直觀的管理后臺(tái)功能,如果有興趣試用,可以在github上向我反饋。在此,感恩不言謝!
注:管理后臺(tái)體驗(yàn)http://xs.aslant.site:3000/pike/index.html#/,token是abcd
