测试条件限制,100M带宽,设置value 20字节:
1.基准测试,两台机器之间发送:
./redis-benchmark -h 10.10.209.104 -p 7002 -q -l -d 20 -r 100000 -t set
每秒速度:6W,一个redis-server cpu 占用93%
2.Twemproxy
A 服务器: 2个redis实例+redis-benchmark
B服务器:一个Twemporxy 指向A服务器的两个redis 实例
每秒速度:5W
Twemproxy 占用CPU 96 % ,两个redis-server 分别占用 25% CPU
服务器CPU:E5620 @ 2.40GHz * 2
总结:一台 twemporxy 效率与直接连接redis-server 相比性能达到 80% 左右。
再者:一致性hash算法的均匀性也是一些问题。100w数据下,两台机器分别写入:46%,54%,相差近20%。
twitter用它来连上前端服务端与缓存服务器直接的连接数,不过估计找不到几家公司有内部服务器直接连接数大问题||。如果用来做数据分片,蛋疼的单线程执行、单实例负载上不去。
个人觉得redis这种需要高负载业务,使用proxy访问不太合算,如果只是为了解决客户端判断服务器可用性不一致问题,有另外更好的解决方案。