国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于HAProxy的高性能緩存服務器nuster

URLOS / 3249人閱讀

摘要:是一個基于的高性能緩存服務器介紹是一個基于的高性能緩存服務器??梢詾槎鄠€代理添加,并多帶帶設置某個代理的緩存是否開啟。默認秒如果不希望失效則設為默認只緩存的響應,如果需要緩存其他的則可以添加,會緩存任何狀態碼。

Nuster是一個基于HAProxy的高性能緩存服務器

https://github.com/jiangwenyu...

介紹

Nuster是一個基于HAProxy的高性能緩存服務器。Nuster完全兼容HAProxy,并且利用
HAProxy的ACL功能來提供非常細致的緩存規則,比如

請求地址為某某時緩存

請求參數中的X為Y時緩存

響應頭中的X為Y時緩存

請求速率超過多少時緩存

等等

性能

非??? 單進程模式下是nginx的3倍,多進程下nginx的2倍,varnish的3倍。

詳見benchmark

安裝
make TARGET=linux2628
make install

具體參照HAProxy README

使用方法

global中添加cache on, 然后在backendlisten中添加cache filter和cache rule

指令 cache

syntax: cache on|off [data-size size]

default: none

context: global

控制是否開啟緩存。
可以設置data-size來控制緩存數據的內存使用量??梢允褂?b>m, M, gG.
默認是1MB,同時也是最小使用量。只有http內容計算在內,并不包括使用緩存帶來的內存開銷。

filter cache

syntax: filter cache [on|off]

default: on

context: backend, listen

定義一個cache filter, 另外cache-rule也需要添加。
可以為多個代理添加,并多帶帶設置某個代理的緩存是否開啟。
如果定義了多個filter,需要把cache filter放在最后。

cache-rule

syntax: cache-rule name [key KEY] [ttl TTL] [code CODE] [if|unless condition]

default: none

context: backend, listen

定義緩存規則。可以同時定義多個,但是需要注意順序,匹配則會停止測試。

acl pathA path /a.html
filter cache
cache-rule all ttl 3600
cache-rule path01 ttl 60 if pathA

path01這條規則永遠不會執行,因為all會匹配所有的規則。

name

定義一個名字。

key KEY

定義key,由以下關鍵字組成:

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

默認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)

所以默認的key就會得到GEThttpwww.example.com/qname=X&type=Y, 而
key method.scheme.host.path.header_ASDF.cookie_user.param_type則會生成
GEThttpwww.example.com/qZnusterY

一個請求的key能在緩存中找到則返回緩存內容。

ttl TTL

定義key的失效時間,可以使用 d, h, m and s。默認3600秒.
如果不希望失效則設為0

code CODE1,CODE2...

默認只緩存200的響應,如果需要緩存其他的則可以添加,all會緩存任何狀態碼。

cache-rule only200
cache-rule 200and404 code 200,404
cache-rule all code all
if|unless condition

定義ACL條件
詳見HAProxy configuration的7. Using ACLs and fetching samples

FAQ 如何調試?

global添加debug, 或者帶-d啟動haproxy

緩存相關的調試信息以[CACHE]開頭

如何緩存POST請求?

添加option http-buffer-request

如果自定義了key的話需要使用body關鍵字

請求body可能不完整,詳見HAProxy configuration 的
option http-buffer-request小節

另外可以為post請求多帶帶設置一個后端

Example
global
    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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39675.html

相關文章

  • 基于HAProxy性能HTTP緩存務器和RESTful NoSQL緩存務器

    摘要:中文日本語基于的高性能緩存服務器和緩存服務器。定義條件詳見的也可以用作類似或者那樣的緩存服務器,來緩存動態或者靜態的資源。 NuSTER Wiki | English | 中文 | 日本語 基于HAProxy的高性能HTTP緩存服務器和RESTful NoSQL緩存服務器。 中文版更新可能不及時,最新版請參照英文版README.md 目錄 介紹 性能 入門指南 使用方法 指令 C...

    mmy123456 評論0 收藏0
  • 性能緩存務器 nuster v1.7.10.1 發布

    摘要:高性能緩存服務器已發布。本次更新主要升級到更改了配置文件關鍵字,刪除了關鍵字為升級到進行了代碼重構。項目主頁本次更新介紹是一個基于的高性能緩存服務器。完全兼容,并且利用的功能來提供非常細致的緩存規則。 高性能緩存服務器 nuster v1.7.10.1 已發布。本次更新主要升級到HAProxy v1.7.10, 更改了配置文件關鍵字,刪除了share關鍵字, 為升級到HAProxy v...

    binta 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<