[LNMP]twemproxy缓存代理在memcached 缓存环境应用

twemproxy是Twitter开源的一个轻量级的缓存代理,支持memcached和redis,官网:https://github.com/twitter/twemproxy,以下主要介绍是在memcached环境下的应用:

应用需求


  1. memcached 部署分散,主要以本地缓存为主,在性能压力不大情况下,做统一集中的缓存池;
  2. 提高memcached 的可用性,避免单台memcached崩溃导致缓存失效;
  3. memcache服务的负载均衡;

另:nutcracker 的目的是 减少客户端对memcached的连接,但目前应用规模,连接数没达到瓶颈,对这个优化效果不大

安装


安装过程比较简单,依赖包比较少,编译安装,去官网下载源码包,解压,进入根目录:(debug模式)
<pre>
./configure --bindir=/usr/bin/--sbindir=/usr/sbin/ --sysconfdir=/etc/nutcracker/ --enable-debug=full
make
make install
</pre>

配置


默认配置文件在 /安装目录/conf/nutcracker.yml,配置字段说明可看官网
配置demo(可多个实例,下面为其中一个实例):
<pre>
MemcachedProxy01:
listen:0.0.0.0:12000 #监听ip、端口
hash:fnv1a_64 #hash 算法
distribution:ketama #分布算法
auto_eject_hosts:true #是否自动剔除down掉的节点
redis: false #是否redis,如果是memcache 为false
preconnect: true#长连接
timeout: 400 #超时
server_retry_timeout: 10000 #失败节点重连间隔
server_failure_limit: 2 #失败n次剔除
servers:
-192.168.94.101:11211:1 #后端缓存服务1(ip、端口、权重)
-192.168.94.102:11211:1 #后端缓存服务2(ip、端口、权重)
</pre>

运行


  1. 启动
    <pre>
    /安装目录/src/nutcracker -d -c /安装目录/conf/nutcracker.yml
    </pre>
  2. 用netstat 查看运行状态


    状态
  3. 应用通过 memcache 客户端连接(demo中端口为 12000)
  4. 终止
    <pre>
    ps -ef|grep nutcracker |grep -v grep |cut -c 9-15|xargs kill -9
    </pre>

监控


<pre>
默认监控端口是 ip:22222 指标如下,
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>

缺点和不足


  1. 管理命令实在是少,连基本的start、restart、reload 都没有,目前要重载配置,先kill,再运行启动命令
  2. memcache缓存性能有些损耗,官方介绍说在 20%左右
  3. 高并发下,nutcracker 代理机的cpu占用高,估计一致性hash计算有关
  4. 代理本身变成单点故障,虽然nutcracker 可以启动多个实例,需引入keepalived的双机热备机制避免单点的问题;

整理于2014/07

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、memcache的概念? Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨...
    桖辶殇阅读 6,767评论 2 12
  • 一、MemCache简介 session MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存...
    李伟铭MIng阅读 9,304评论 2 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,281评论 19 139
  • 【转】缓存在分布式系统中的应用 缓存在分布式系统中的应用 摘要 缓存是分布式系统中的重要组件,主要解决高并发,大数...
    武汉苏乞儿阅读 4,377评论 0 10
  • 缓存在分布式系统中的应用 摘要 缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题...
    garyond阅读 5,573评论 0 12

友情链接更多精彩内容