[LNMP]twemproxy緩存代理在memcached 緩存環(huán)境應(yīng)用

twemproxy是Twitter開(kāi)源的一個(gè)輕量級(jí)的緩存代理,支持memcached和redis,官網(wǎng):https://github.com/twitter/twemproxy,以下主要介紹是在memcached環(huán)境下的應(yīng)用:

應(yīng)用需求


  1. memcached 部署分散,主要以本地緩存為主,在性能壓力不大情況下,做統(tǒng)一集中的緩存池;
  2. 提高memcached 的可用性,避免單臺(tái)memcached崩潰導(dǎo)致緩存失效;
  3. memcache服務(wù)的負(fù)載均衡;

另:nutcracker 的目的是 減少客戶(hù)端對(duì)memcached的連接,但目前應(yīng)用規(guī)模,連接數(shù)沒(méi)達(dá)到瓶頸,對(duì)這個(gè)優(yōu)化效果不大

安裝


安裝過(guò)程比較簡(jiǎn)單,依賴(lài)包比較少,編譯安裝,去官網(wǎng)下載源碼包,解壓,進(jìn)入根目錄:(debug模式)
<pre>
./configure --bindir=/usr/bin/--sbindir=/usr/sbin/ --sysconfdir=/etc/nutcracker/ --enable-debug=full
make
make install
</pre>

配置


默認(rèn)配置文件在 /安裝目錄/conf/nutcracker.yml,配置字段說(shuō)明可看官網(wǎng)
配置demo(可多個(gè)實(shí)例,下面為其中一個(gè)實(shí)例):
<pre>
MemcachedProxy01:
listen:0.0.0.0:12000 #監(jiān)聽(tīng)ip、端口
hash:fnv1a_64 #hash 算法
distribution:ketama #分布算法
auto_eject_hosts:true #是否自動(dòng)剔除down掉的節(jié)點(diǎn)
redis: false #是否redis,如果是memcache 為false
preconnect: true#長(zhǎng)連接
timeout: 400 #超時(shí)
server_retry_timeout: 10000 #失敗節(jié)點(diǎn)重連間隔
server_failure_limit: 2 #失敗n次剔除
servers:
-192.168.94.101:11211:1 #后端緩存服務(wù)1(ip、端口、權(quán)重)
-192.168.94.102:11211:1 #后端緩存服務(wù)2(ip、端口、權(quán)重)
</pre>

運(yùn)行


  1. 啟動(dòng)
    <pre>
    /安裝目錄/src/nutcracker -d -c /安裝目錄/conf/nutcracker.yml
    </pre>
  2. 用netstat 查看運(yùn)行狀態(tài)


    狀態(tài)
  3. 應(yīng)用通過(guò) memcache 客戶(hù)端連接(demo中端口為 12000)
  4. 終止
    <pre>
    ps -ef|grep nutcracker |grep -v grep |cut -c 9-15|xargs kill -9
    </pre>

監(jiān)控


<pre>
默認(rèn)監(jiān)控端口是 ip:22222 指標(biāo)如下,
server_eof "# eof on serverconnections"
server_err "# errors on serverconnections"
server_timedout "# timeouts on serverconnections"
server_connections "# active server connections"
requests "# requests"
request_bytes "total request bytes"
responses "# responses"
response_bytes "total response bytes"
in_queue "# requests in incomingqueue"
in_queue_bytes "current request bytes in incomingqueue"
out_queue "# requests in outgoingqueue"
out_queue_bytes "current request bytes in outgoing queue"
</pre>

缺點(diǎn)和不足


  1. 管理命令實(shí)在是少,連基本的start、restart、reload 都沒(méi)有,目前要重載配置,先kill,再運(yùn)行啟動(dòng)命令
  2. memcache緩存性能有些損耗,官方介紹說(shuō)在 20%左右
  3. 高并發(fā)下,nutcracker 代理機(jī)的cpu占用高,估計(jì)一致性hash計(jì)算有關(guān)
  4. 代理本身變成單點(diǎn)故障,雖然nutcracker 可以啟動(dòng)多個(gè)實(shí)例,需引入keepalived的雙機(jī)熱備機(jī)制避免單點(diǎn)的問(wèn)題;

整理于2014/07

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、memcache的概念? Memcache是一個(gè)高性能的分布式的內(nèi)存對(duì)象緩存系統(tǒng),通過(guò)在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨...
    桖辶殤閱讀 2,358評(píng)論 2 12
  • 一、MemCache簡(jiǎn)介 session MemCache是一個(gè)自由、源碼開(kāi)放、高性能、分布式的分布式內(nèi)存對(duì)象緩存...
    李偉銘MIng閱讀 4,002評(píng)論 2 13
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評(píng)論 19 139
  • 【轉(zhuǎn)】緩存在分布式系統(tǒng)中的應(yīng)用 緩存在分布式系統(tǒng)中的應(yīng)用 摘要 緩存是分布式系統(tǒng)中的重要組件,主要解決高并發(fā),大數(shù)...
    武漢蘇乞兒閱讀 947評(píng)論 0 10
  • 緩存在分布式系統(tǒng)中的應(yīng)用 摘要 緩存是分布式系統(tǒng)中的重要組件,主要解決高并發(fā),大數(shù)據(jù)場(chǎng)景下,熱點(diǎn)數(shù)據(jù)訪問(wèn)的性能問(wèn)題...
    garyond閱讀 1,708評(píng)論 0 12

友情鏈接更多精彩內(nèi)容