摘要:是一個(gè)基于的高性能緩存服務(wù)器介紹是一個(gè)基于的高性能緩存服務(wù)器??梢詾槎鄠€(gè)代理添加,并多帶帶設(shè)置某個(gè)代理的緩存是否開啟。默認(rèn)秒如果不希望失效則設(shè)為默認(rèn)只緩存的響應(yīng),如果需要緩存其他的則可以添加,會緩存任何狀態(tài)碼。
Nuster是一個(gè)基于HAProxy的高性能緩存服務(wù)器
https://github.com/jiangwenyu...
介紹Nuster是一個(gè)基于HAProxy的高性能緩存服務(wù)器。Nuster完全兼容HAProxy,并且利用
HAProxy的ACL功能來提供非常細(xì)致的緩存規(guī)則,比如
請求地址為某某時(shí)緩存
請求參數(shù)中的X為Y時(shí)緩存
響應(yīng)頭中的X為Y時(shí)緩存
請求速率超過多少時(shí)緩存
等等
性能非常快, 單進(jìn)程模式下是nginx的3倍,多進(jìn)程下nginx的2倍,varnish的3倍。
詳見benchmark
安裝make TARGET=linux2628 make install
具體參照HAProxy README
使用方法在global中添加cache on, 然后在backend或listen中添加cache filter和cache rule
指令 cachesyntax: cache on|off [data-size size]
default: none
context: global
控制是否開啟緩存。
可以設(shè)置data-size來控制緩存數(shù)據(jù)的內(nèi)存使用量??梢允褂?b>m, M, g 和 G.
默認(rèn)是1MB,同時(shí)也是最小使用量。只有http內(nèi)容計(jì)算在內(nèi),并不包括使用緩存帶來的內(nèi)存開銷。
syntax: filter cache [on|off]
default: on
context: backend, listen
定義一個(gè)cache filter, 另外cache-rule也需要添加。
可以為多個(gè)代理添加,并多帶帶設(shè)置某個(gè)代理的緩存是否開啟。
如果定義了多個(gè)filter,需要把cache filter放在最后。
syntax: cache-rule name [key KEY] [ttl TTL] [code CODE] [if|unless condition]
default: none
context: backend, listen
定義緩存規(guī)則??梢酝瑫r(shí)定義多個(gè),但是需要注意順序,匹配則會停止測試。
acl pathA path /a.html filter cache cache-rule all ttl 3600 cache-rule path01 ttl 60 if pathA
path01這條規(guī)則永遠(yuǎn)不會執(zhí)行,因?yàn)閍ll會匹配所有的規(guī)則。
name定義一個(gè)名字。
key KEY定義key,由以下關(guān)鍵字組成:
method: http method, GET/POST...
scheme: http or https
host: the host in the request
path: the URL path of the request
query: the whole query string of the request
header_NAME: the value of header NAME
cookie_NAME: the value of cookie NAME
param_NAME: the value of query NAME
body: the body of the request
默認(rèn)key是method.scheme.host.path.query.body
Example
GET http://www.example.com/q?name=X&type=Y http header: GET /q?name=X&type=Y HTTP/1.1 Host: www.example.com ASDF: Z Cookie: logged_in=yes; user=nuster;
會得到:
method: GET
scheme: http
host: www.example.com
path: /q
query: name=X&type=Y
header_ASDF: Z
cookie_user: nuster
param_type: Y
body: (empty)
所以默認(rèn)的key就會得到GEThttpwww.example.com/qname=X&type=Y, 而
key method.scheme.host.path.header_ASDF.cookie_user.param_type則會生成
GEThttpwww.example.com/qZnusterY
一個(gè)請求的key能在緩存中找到則返回緩存內(nèi)容。
ttl TTL定義key的失效時(shí)間,可以使用 d, h, m and s。默認(rèn)3600秒.
如果不希望失效則設(shè)為0
默認(rèn)只緩存200的響應(yīng),如果需要緩存其他的則可以添加,all會緩存任何狀態(tài)碼。
cache-rule only200 cache-rule 200and404 code 200,404 cache-rule all code allif|unless condition
定義ACL條件
詳見HAProxy configuration的7. Using ACLs and fetching samples
在global添加debug, 或者帶-d啟動haproxy
緩存相關(guān)的調(diào)試信息以[CACHE]開頭
如何緩存POST請求?添加option http-buffer-request
如果自定義了key的話需要使用body關(guān)鍵字
請求body可能不完整,詳見HAProxy configuration 的
option http-buffer-request小節(jié)
另外可以為post請求多帶帶設(shè)置一個(gè)后端
Exampleglobal cache on data-size 100m #daemon ## to debug cache #debug defaults retries 3 option redispatch timeout client 30s timeout connect 30s timeout server 30s frontend web1 bind *:8080 mode http acl pathPost path /search use_backend app1a if pathPost default_backend app1b backend app1a balance roundrobin # mode must be http mode http # http-buffer-request must be enabled to cache post request option http-buffer-request acl pathPost path /search # enable cache for this proxy filter cache # cache /search for 120 seconds. Only works when POST/PUT cache-rule rpost ttl 120 if pathPost server s1 10.0.0.10:8080 backend app1b balance roundrobin mode http filter cache on # cache /a.jpg, not expire acl pathA path /a.jpg cache-rule r1 ttl 0 if pathA # cache /mypage, key contains cookie[userId], so it will be cached per user acl pathB path /mypage cache-rule r2 key method.scheme.host.path.query.cookie_userId ttl 60 if pathB # cache /a.html if response"s header[cache] is yes http-request set-var(txn.pathC) path acl pathC var(txn.pathC) -m str /a.html acl resHdrCache1 res.hdr(cache) yes cache-rule r3 if pathC resHdrCache1 # cache /heavy for 100 seconds if be_conn greater than 10 acl heavypage path /heavy acl tooFast be_conn ge 100 cache-rule heavy ttl 100 if heavypage tooFast # cache all if response"s header[asdf] is fdsa acl resHdrCache2 res.hdr(asdf) fdsa cache-rule resCache ttl 0 if resHdrCache1 server s1 10.0.0.10:8080 frontend web2 bind *:8081 mode http default_backend app2 backend app2 balance roundrobin mode http # disable cache on this proxy filter cache off cache-rule all server s2 10.0.0.11:8080 listen web3 bind *:8082 mode http filter cache cache-rule everything server s3 10.0.0.12:8080
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/61919.html
摘要:中文日本語基于的高性能緩存服務(wù)器和緩存服務(wù)器。定義條件詳見的也可以用作類似或者那樣的緩存服務(wù)器,來緩存動態(tài)或者靜態(tài)的資源。 NuSTER Wiki | English | 中文 | 日本語 基于HAProxy的高性能HTTP緩存服務(wù)器和RESTful NoSQL緩存服務(wù)器。 中文版更新可能不及時(shí),最新版請參照英文版README.md 目錄 介紹 性能 入門指南 使用方法 指令 C...
摘要:高性能緩存服務(wù)器已發(fā)布。本次更新主要升級到更改了配置文件關(guān)鍵字,刪除了關(guān)鍵字為升級到進(jìn)行了代碼重構(gòu)。項(xiàng)目主頁本次更新介紹是一個(gè)基于的高性能緩存服務(wù)器。完全兼容,并且利用的功能來提供非常細(xì)致的緩存規(guī)則。 高性能緩存服務(wù)器 nuster v1.7.10.1 已發(fā)布。本次更新主要升級到HAProxy v1.7.10, 更改了配置文件關(guān)鍵字,刪除了share關(guān)鍵字, 為升級到HAProxy v...
閱讀 2791·2021-11-17 09:33
閱讀 4455·2021-09-22 15:57
閱讀 2866·2019-08-30 14:16
閱讀 3133·2019-08-29 14:07
閱讀 2413·2019-08-26 11:55
閱讀 3415·2019-08-23 17:07
閱讀 1725·2019-08-23 16:50
閱讀 2535·2019-08-23 16:08