twemproxy 安装配置连接测试

优点

  • 这是一个轻量级的 Redis和memcached代理。使用它可以减少缓存服务器的连接数,并且利用它来作分片。这个代理的速度是相当快的,明月在网上查到会有20%的性 能损耗,但明月用redis-benchmark做了测试,发现性能几乎是无损的,甚至有时更快。后来找到英文原文,作者是说最差情况下,性能损耗不会多 于20%。明月觉得这个很了不起,按道理说,有了一层代理,怎么说都得折损一部分性能,但是他切能使得访问更快。看了源码,原来是用了pipeline. 首先redis是支持使用pipeline批处理的。twemproxy与每个redis服务器都会建立一个连接,每个连接实现了两个FIFO的队列,通 过这两个队列实现对redis的pipeline访问。将多个客户端的访问合并到一个连接,这样既减少了redis服务器的连接数,又提高了访问性能。

缺点

  1. 虽然可以动态移除节点,但该移除节点的数据就丢失了。

  2. redis集群动态增加节点的时候,twemproxy不会对已有数据做重分布.maillist里面作者说这个需要自己写个脚本实现

  3. 性能上的损耗

一致性Hash算法

//hash具体实现函数
#define HASH_CODEC(ACTION)                      \
    ACTION( HASH_ONE_AT_A_TIME, one_at_a_time ) \
    ACTION( HASH_MD5,           md5           ) \
    ACTION( HASH_CRC32,         crc32         ) \
    ACTION( HASH_FNV1_64,       fnv1_64       ) \
    ACTION( HASH_FNV1A_64,      fnv1a_64      ) \
    ACTION( HASH_FNV1_32,       fnv1_32       ) \
    ACTION( HASH_FNV1A_32,      fnv1a_32      ) \
    ACTION( HASH_HSIEH,         hsieh         ) \
    ACTION( HASH_MURMUR,        murmur        ) \
    ACTION( HASH_JENKINS,       jenkins       ) \
    
    
//hash 分发模式
#define DIST_CODEC(ACTION)                      \
    ACTION( DIST_KETAMA,        ketama        ) \ //O(LogN)算法复杂度
    ACTION( DIST_MODULA,        modula        ) \ //O(1)算法复杂度
    ACTION( DIST_RANDOM,        random        ) \ //随机性hash 是随机的选择一个 redis server 作为最终...

     

 配置文件

redis1:  
  listen: 127.0.0.1:6379 #使用哪个端口启动Twemproxy  
  redis: true #是否是Redis的proxy  
  hash: fnv1a_64 #指定具体的hash函数  
  distribution: ketama #具体的hash算法  
  auto_eject_hosts: true #是否在结点无法响应的时候临时摘除结点  
  timeout: 400 #超时时间(毫秒)  
  server_retry_timeout: 2000 #重试的时间(毫秒)  
  server_failure_limit: 1 #结点故障多少次就算摘除掉  
  servers: #下面表示所有的Redis节点(IP:端口号:权重)  
   - 127.0.0.1:6380:1  
   - 127.0.0.1:6381:1  
   - 127.0.0.1:6382:1

       http://ip:22222  查看监控信息

twemproxy不支持mset。


特点:

  • 轻量级、快速

  • 保持长连接

  • 减少了直接与缓存服务器连接的连接数量

  • 使用 pipelining 处理请求和响应

  • 支持代理到多台服务器上

  • 同时支持多个服务器池

  • 自动分片数据到多个服务器上

  • 实现完整的 memcached 的 ASCII 和再分配协议

  • 通过 yaml 文件配置服务器池

  • 支持多个哈希模式,包括一致性哈希和分布

  • 能够配置删除故障节点

  • 可以通过端口监控状态

  • 支持 linux, *bsd,os x 和 solaris


    keepalived依靠组播地址进行消息传送,所以  需要关闭防火墙对组播地址的限制 224.0.0.18

    1.如果用的是默认防火墙,只需要添加:

iptables -I RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT

    2.如果是自己用脚本设置的防火墙,需要添加如下规则

iptables -A OUTPUT -o eth0 -d 224.0.0.18 -j ACCEPT iptables -A OUTPUT -o eth0 -s 224.0.0.18 -j ACCEPT iptables -A INPUT -i eth0 -d 224.0.0.18 -j ACCEPT iptables -A INPUT -i eth0 -s 224.0.0.18 -j ACCEPT





你可能感兴趣的:(twemproxy 安装配置连接测试)